AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Alles zum Thema DAB(+) Digitalradio.
Clem01
Beiträge: 282
Registriert: Fr 31. Aug 2018, 17:24

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von Clem01 »

Nice feature, but seems not to be quite ok:

- AbracaDABra recording played with qirx: recorded frequency looks ok.
- qirx recording properties in AbracaDABra : error in the recorded frequency display. Was 227.360MHz, Block 12C

QIRX recording properties viewed in AbracaDABra
QIRX recording properties viewed in AbracaDABra
Dateianhänge
AbracaDABra recording viewed in qirx: recorded frequency looks ok.
AbracaDABra recording viewed in qirx: recorded frequency looks ok.
KejPi
Beiträge: 202
Registriert: Fr 21. Dez 2018, 12:56
Wohnort: Prague, CZ
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von KejPi »

Thanks for reporting, could you please share the recording?
AbracaDABra: multiplatform DAB & DAB+ SDR | https://github.com/KejPi/AbracaDABra
Support forum: viewtopic.php?f=11&t=60938
andimik
Beiträge: 5696
Registriert: Sa 1. Sep 2018, 19:11
Wohnort: Arnoldstein, Bezirk Villach Land, Österreich
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von andimik »

Or at least share the XML header...

What happens, when the kHz is written as KHz?

Clem, do you know what uff stands for? Otherwise I will ask Jan.
Drehrumbum
Beiträge: 575
Registriert: Mo 1. Jun 2020, 02:28

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von Drehrumbum »

After five minutes crawling through the sources, it seems that you're right. The given XML-Header (on the last page here) says "KHz", the program looks for the tag "kHz" (rawfileinput.cpp line 316). This is not the same, if this "blockElement.attribute("Unit", "kHz")" stuff is case-sensitive.

EDIT: Clem uses "Hz" and Abracadabra theats this value as "kHz". Doing so, it multiplies the given 227360000Hz by 1000 which overflowes a 32-Integer. The result (lower 32bits) is 0xEFB64800 (its 4.021.700.608)




uff - universal file format (according to wikipedia it is used for a CAD-program)
viterbi.dll replacement for QIRX-SDR (all versions): https://github.com/Drehrumbum/viterbi.dll#viterbidll
andimik
Beiträge: 5696
Registriert: Sa 1. Sep 2018, 19:11
Wohnort: Arnoldstein, Bezirk Villach Land, Österreich
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von andimik »

Bingo :cheers:
KejPi
Beiträge: 202
Registriert: Fr 21. Dez 2018, 12:56
Wohnort: Prague, CZ
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von KejPi »

blockElement.attribute("Unit", "kHz") means look for Unit and if not found, set value to "kHz", it is correct, but the bug is on line 319. I will fix it in the eveneing.
AbracaDABra: multiplatform DAB & DAB+ SDR | https://github.com/KejPi/AbracaDABra
Support forum: viewtopic.php?f=11&t=60938
Clem01
Beiträge: 282
Registriert: Fr 31. Aug 2018, 17:24

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von Clem01 »

And here comes the link for download:
https://www.dropbox.com/s/49eflda70861j ... 0.raw?dl=0
KejPi
Beiträge: 202
Registriert: Fr 21. Dez 2018, 12:56
Wohnort: Prague, CZ
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von KejPi »

Thanks for sharing!
AbracaDABra: multiplatform DAB & DAB+ SDR | https://github.com/KejPi/AbracaDABra
Support forum: viewtopic.php?f=11&t=60938
andimik
Beiträge: 5696
Registriert: Sa 1. Sep 2018, 19:11
Wohnort: Arnoldstein, Bezirk Villach Land, Österreich
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von andimik »

In case you need it, these are the common xml header for various dongles and software. I am aware that AbracaDABra currently only supports 2048 kHz sampling frequency (you already wrote that some days ago).

Qirx under Windows with DAB stick
$ head -c 2000 ./dab_test_2023_02_06_20_36_55_2048000_fHz181936000_qirx405.raw.uff.raw.u8
<?xml version="1.0" encoding="utf-8"?>
<SDR>
<Recorder Name="QIRX" Version="4.0.5.0" />
<Device Name="R820T" Version="" Model="" />
<Time Unit="UTC" Value="2023-02-06T19:36:55Z" />
<Sample>
<Samplerate Unit="Hz" Value="2048000" />
<Channels Bits="8" Container="uint8" Ordering="N/A">
<Channel Value="I" />
<Channel Value="Q" />
</Channels>
</Sample>
<Datablocks>
<Datablock Count="72843264" Number="1" Unit="Channel">
<Frequency Value="181936000" Unit="Hz" />
<Modulation Value="DAB" />
</Datablock>
</Datablocks>
Airspy under Qt-DAB
$ head -c 2000 ./dab_test_AIRspy-6A-Mo--Feb--6-2023-21-31-26.uff
<?xml version="1.0" encoding="utf-8"?>
<SDR>
<Recorder Name="Qt-DAB" Version="5.0"/>
<Device Name="AIRspy" Model="I"/>
<Time Unit="UTC" Value="Mon Feb 6 21:31:40 2023&#xa;"/>
<Sample>
<Samplerate Unit="Hz" Value="3000000"/>
<Channels Bits="12" Ordering="LSB" Container="int16">
<Channel Value="I"/>
<Channel Value="Q"/>
</Channels>
</Sample>
<Datablocks>
<Datablock Unit="Channel" Count="61341696" Number="1">
<Frequency Unit="KHz" Value="100"/>
<Modulation Value="DAB"/>
</Datablock>
</Datablocks>
</SDR>
Qt-DAB under Windows 4.3
$ head -c 2000 ./dab_test_Generic\ RTL2832U\ OEM-6A-Mo--Feb-6-2023-20-35-32_windows.uff
<?xml version="1.0" encoding="utf-8"?>
<SDR>
<Recorder Name="Qt-DAB" Version="4.3"/>
<Device Name="rtlsdr" Model="Generic RTL2832U OEM"/>
<Time Value="Mon Feb 06 20:36:00 2023&#xa;" Unit="UTC"/>
<Sample>
<Samplerate Value="2048000" Unit="Hz"/>
<Channels Container="uint8" Ordering="LSB" Bits="8">
<Channel Value="I"/>
<Channel Value="Q"/>
</Channels>
</Sample>
<Datablocks>
<Datablock Number="1" Count="35006440" Unit="Channel">
<Frequency Value="181936" Unit="KHz"/>
<Modulation Value="DAB"/>
</Datablock>
</Datablocks>
</SDR>
Qt-DAB under Ubuntu 4.4.2
$ head -c 2000 ./dab_test_Generic\ RTL2832U\ OEM-6A-Mo--Feb--6-2023-20-43-40_ubuntu_442.uff
<?xml version="1.0" encoding="utf-8"?>
<SDR>
<Recorder Name="Qt-DAB" Version="5.0"/>
<Device Model="Generic RTL2832U OEM" Name="rtlsdr"/>
<Time Unit="UTC" Value="Mon Feb 6 20:44:09 2023&#xa;"/>
<Sample>
<Samplerate Unit="Hz" Value="2048000"/>
<Channels Container="uint8" Bits="8" Ordering="LSB">
<Channel Value="I"/>
<Channel Value="Q"/>
</Channels>
</Sample>
<Datablocks>
<Datablock Number="1" Unit="Channel" Count="41154776">
<Frequency Unit="KHz" Value="181936"/>
<Modulation Value="DAB"/>
</Datablock>
</Datablocks>
</SDR>
Qt-DAB under Ubuntu 5.0
$ head -c 2000 ./dab_test_Generic\ RTL2832U\ OEM-6A-Mo--Feb--6-2023-20-44-58_ubuntu_50.uff
<?xml version="1.0" encoding="utf-8"?>
<SDR>
<Recorder Version="5.0" Name="Qt-DAB"/>
<Device Model="Generic RTL2832U OEM" Name="rtlsdr"/>
<Time Value="Mon Feb 6 20:45:21 2023&#xa;" Unit="UTC"/>
<Sample>
<Samplerate Value="2048000" Unit="Hz"/>
<Channels Ordering="LSB" Bits="8" Container="uint8">
<Channel Value="I"/>
<Channel Value="Q"/>
</Channels>
</Sample>
<Datablocks>
<Datablock Unit="Channel" Count="51051738" Number="1">
<Frequency Value="181936" Unit="KHz"/>
<Modulation Value="DAB"/>
</Datablock>
</Datablocks>
</SDR>
Qt-DAB with Hack RF 5.0
$ head -c 2000 ./dab_test_hackrf-6A-Mo--Feb--6-2023-21-26-29_hackrf.uff
<?xml version="1.0" encoding="utf-8"?>
<SDR>
<Recorder Version="5.0" Name="Qt-DAB"/>
<Device Model="--" Name="Hackrf"/>
<Time Value="Mon Feb 6 21:26:45 2023&#xa;" Unit="UTC"/>
<Sample>
<Samplerate Value="2048000" Unit="Hz"/>
<Channels Ordering="LSB" Container="int8" Bits="8">
<Channel Value="I"/>
<Channel Value="Q"/>
</Channels>
</Sample>
<Datablocks>
<Datablock Number="1" Count="37084430" Unit="Channel">
<Frequency Value="181936" Unit="KHz"/>
<Modulation Value="DAB"/>
</Datablock>
</Datablocks>
</SDR>
AbracaDABbra with rtl_tcp DAB stick under Ubuntu
$ head -c 2000 /tmp/abra_2023-02-06_214501_6A_rtltcp.uff
<?xml version="1.0" encoding="utf-8"?>
<SDR>
<Recorder Name="AbracaDABra" Version="1.99.4+"/>
<Device Name="rtl_tcp" Model="Generic RTL2832U OEM"/>
<Time Value="2023-02-06 20:45:15" Unit="UTC"/>
<Sample>
<Samplerate Value="2048000" Unit="Hz"/>
<Channels Ordering="LSB" Bits="8" Container="uint8">
<Channel Value="I"/>
<Channel Value="Q"/>
</Channels>
</Sample>
<Datablocks>
<Datablock Number="1" Count="14745600" Offset="2048" Unit="Channel">
<Frequency Value="181936" Unit="KHz"/>
<Modulation Value="DAB"/>
</Datablock>
</Datablocks>
</SDR>
Thanks to this overview I found another bug in Qt-DAB (in combination with Airspy).
Drehrumbum
Beiträge: 575
Registriert: Mo 1. Jun 2020, 02:28

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von Drehrumbum »

What's up with the "&#xa;" (Linefeed) at the end of the "Qt-DAB" Timestrings? Who needs this there?

BTW: I can't understand that one uses "KHz" instead of the correct "kHz" in such a program...
viterbi.dll replacement for QIRX-SDR (all versions): https://github.com/Drehrumbum/viterbi.dll#viterbidll
andimik
Beiträge: 5696
Registriert: Sa 1. Sep 2018, 19:11
Wohnort: Arnoldstein, Bezirk Villach Land, Österreich
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von andimik »

Thanks, although I am not a programmer, I've fixed these two bugs (along with the Airspy bug) in Qt-DAB and sent Jan two pull requests.

https://github.com/JvanKatwijk/qt-dab/pull/283
https://github.com/JvanKatwijk/qt-dab/pull/282

BTW, I also fixed the UTC time in Qt-DAB, which was used as local time, not UTC.
andimik
Beiträge: 5696
Registriert: Sa 1. Sep 2018, 19:11
Wohnort: Arnoldstein, Bezirk Villach Land, Österreich
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von andimik »

Petr:

In https://github.com/KejPi/AbracaDABra/bl ... r.cpp#L217 you should also use kHz, instead of KHz as I also sent Jan a PR to use it as well.

Hope this doesn't break the other function you have fixed today...
KejPi
Beiträge: 202
Registriert: Fr 21. Dez 2018, 12:56
Wohnort: Prague, CZ
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von KejPi »

I agree that kHz should be used, I used KHz in order not to break compatibility with other tools. I will change that and we will see what happens. The problem is tha XML is case sensitive and potential insensitivity has to be solved extra in code.

Currently i use this:

Code: Alles auswählen

QString unit = blockElement.attribute("Unit", "Hz");
if ("hz" == unit.toLower())
{
    m_deviceDescription.rawFile.frequency_kHz = freq/1000;
}
else
{
    m_deviceDescription.rawFile.frequency_kHz = freq;
}
This is checking if unit is Hz (any case) and if not it is considered as kHz. It is aloso not 100% safe bacause I do not consider MHz being also possible unit.
AbracaDABra: multiplatform DAB & DAB+ SDR | https://github.com/KejPi/AbracaDABra
Support forum: viewtopic.php?f=11&t=60938
andimik
Beiträge: 5696
Registriert: Sa 1. Sep 2018, 19:11
Wohnort: Arnoldstein, Bezirk Villach Land, Österreich
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von andimik »

well, actually we only have 3 tools creating these kind of files:

- Qirx (uses Hz)
- Qt-DAB (used KHz, but will use kHz after my Pull request)
- AbracaDABra (actually uses KHz, you might change it into kHz)

Of course users still have created files with KHz (and don't want to hex edit them), so we need to be checking for KHz and kHz. As this is just showing the frequency, the main functionality is not affected, because Clem found that overflow out but could replay the file anyway.
KejPi
Beiträge: 202
Registriert: Fr 21. Dez 2018, 12:56
Wohnort: Prague, CZ
Kontaktdaten:

Re: AbracaDABra - multiplatform SDR for RTL-SDR USB sticks

Beitrag von KejPi »

Overflow was caused by bug in implementation, not KHz unit. It is already fixed. I will change the unit to kHz when storing the header.
AbracaDABra: multiplatform DAB & DAB+ SDR | https://github.com/KejPi/AbracaDABra
Support forum: viewtopic.php?f=11&t=60938
Antworten