Closed andimik closed 3 weeks ago
I found two files from Sweden (recorded through Airspy Server last year) with "Warning receiver" thanks to egrep -rni -e "ODA" *.txt
E424_-_2019-04-29_20-25-12.txt E424_-_2019-04-29_20-23-20.zip
ODA 1: AID = 6A7A
Proportion = 0,2 % (1/492)
App. Group = 12A
E224_-_2019-04-29_19-59-58.txt E224_-_2019-04-29_19-58-08.zip
Assuming that the ODA code is the last block in each line of rdsspy recordings, I used
egrep -rni -e "CB73|4C59|CC21|1DC2|4AA1|0093|1BDA|0F87|0E2C|1D47|4BA2|E5D7|0C24|CD9E|4AB7|1CB1|4D9A|E319|0E31|CB97|E440|4D95|1E8F|0D8B|E4A6|1C5E|0BCB|CE6B|1DC5|4D87|0D45|CD47|0CC1|1C68|7373|5757|6552|125F|50DD|6363|6365|6A7A|A911|4400|A112|C563|C3A1|E911|E1C1|E411|E123|C350|C4D4|C3C3|C3B0|C737|C3A1|C549|C6A7"
to checked all the spyfiles in https://github.com/walczakp/rds-spy-logs for ODA other than RT+ and TMC.
Czech Republic/2337 - 2019-05-04 16-26-20.spy:55:2337 2728 6C61 6365 @2019/05/04 16:26:24.32
Czech Republic/2337 - 2019-05-04 16-26-20.spy:119:2337 2728 6C61 6365 @2019/05/04 16:26:29.95
and https://github.com/walczakp/rds-spy-logs/blob/master/Germany/D312%20-%202019-05-04%2015-21-32.spy
Germany/D312 - 2019-05-04 15-21-32.spy:434:D312 20F6 7669 6365 @2019/05/04 15:22:09.64
Germany/D312 - 2019-05-04 15-21-32.spy:530:D312 20F6 7669 6365 @2019/05/04 15:22:18.04
and https://github.com/walczakp/rds-spy-logs/blob/master/Germany/D6F1%20-%202019-05-04%2015-08-15.spy
Germany/D6F1 - 2019-05-04 15-08-15.spy:30:D6F1 2402 7669 6365 @2019/05/04 15:08:17.48
Germany/D6F1 - 2019-05-04 15-08-15.spy:53:D6F1 2402 7669 6365 @2019/05/04 15:08:19.48
Poland/3F44 - 2017-08-13 00-14-01 PL LODZ RMF.rds:631:3F44 054A 3C72 6365 @2017/08/13 00:14:58.197
Poland/3F44 - 2017-08-13 00-14-01 PL LODZ RMF.rds:643:3F44 054A 233C 6365 @2017/08/13 00:14:59.269
https://github.com/walczakp/rds-spy-logs/blob/master/France/F201%20-%202018-01-02%2019-10-59.spy
France/F201 - 2018-01-02 19-10-59.spy:1032:F201 8408 47EC 6A7A @2018/01/02 19:12:21.68
France/F201 - 2018-01-02 19-10-59.spy:1036:F201 8408 47EC 6A7A @2018/01/02 19:12:22.03
UK/C36C - 2015-09-27 23-29-22 UK NRW HEART.rds:91:C36C 8548 0883 1C5E @2015/09/27 23:29:33.456
UK/C36C - 2015-09-27 23-29-22 UK NRW HEART.rds:97:C36C 8548 0883 1C5E @2015/09/27 23:29:33.984
UK/C204 - 2015-09-27 23-35-46 UK NRW BBC4.rds:9336:C204 3138 0000 0093 @2015/09/27 23:49:23.896
UK/C204 - 2015-09-27 23-35-46 UK NRW BBC4.rds:10028:C204 3138 0000 0093 @2015/09/27 23:50:24
https://github.com/walczakp/rds-spy-logs/blob/master/Russia/7205%20-%202019-05-04%2001-18-20.spy
Russia/7205 - 2019-05-04 01-18-20.spy:1305:7205 852D 1323 E319 @2019/05/04 01:20:14.64
Russia/7205 - 2019-05-04 01-18-20.spy:1309:7205 852D 1323 E319 @2019/05/04 01:20:14.98
https://github.com/walczakp/rds-spy-logs/blob/master/Russia/7AA1%20-%202019-05-04%2001-27-45.spy
Russia/7AA1 - 2019-05-04 01-27-45.spy:174:7AA1 01C8 E0CD 5757 @2019/05/04 01:28:00.41
Russia/7AA1 - 2019-05-04 01-27-45.spy:181:7AA1 01C8 E0CD 5757 @2019/05/04 01:28:01.01
https://github.com/walczakp/rds-spy-logs/blob/master/Russia/7261%20-%202019-05-04%2001-16-40.spy
Russia/7261 - 2019-05-04 01-16-40.spy:11:7261 2520 5261 7373 @2019/05/04 01:16:37.69
Russia/7261 - 2019-05-04 01-16-40.spy:39:7261 2520 5261 7373 @2019/05/04 01:16:40.16
and https://github.com/walczakp/rds-spy-logs/blob/master/USA/7DC9%20-%202019-05-04%2021-51-15.spy
USA/7DC9 - 2019-05-04 21-51-15.spy:7:7DC9 34F8 005E 7373 @2019/05/04 21:51:13.99
USA/7DC9 - 2019-05-04 21-51-15.spy:14:7DC9 34F8 0096 7373 @2019/05/04 21:51:14.62
and https://github.com/walczakp/rds-spy-logs/blob/master/USA/7DC9%20-%202019-05-04%2000-02-34.spy
USA/7DC9 - 2019-05-04 00-02-34.spy:8:7DC9 34F8 00D3 7373 @2019/05/04 00:02:24.75
USA/7DC9 - 2019-05-04 00-02-34.spy:15:7DC9 34F8 005E 7373 @2019/05/04 00:02:25.35
and https://github.com/walczakp/rds-spy-logs/blob/master/Germany/D395%20-%202019-05-05%2009-46-23.spy
Germany/D395 - 2019-05-05 09-46-23.spy:34:D395 2105 7769 7373 @2019/05/05 09:46:22.37
Germany/D395 - 2019-05-05 09-46-23.spy:790:D395 2105 7769 7373 @2019/05/05 09:47:28.59
Germany/D314 - 2017-04-04 23-05-24 DE MUC BR-KLASS.rds:38329:D314 21D7 6C61 7373 @2017/04/05 00:01:23.460
Germany/D314 - 2017-04-04 23-05-24 DE MUC BR-KLASS.rds:38421:D314 21D7 6C61 7373 @2017/04/05 00:01:31.524
and https://github.com/walczakp/rds-spy-logs/blob/master/Germany/D6F1%20-%202019-05-04%2015-08-15.spy
Germany/D6F1 - 2019-05-04 15-08-15.spy:86:D6F1 2410 4B69 7373 @2019/05/04 15:08:22.39
Germany/D6F1 - 2019-05-04 15-08-15.spy:91:D6F1 2412 6B69 7373 @2019/05/04 15:08:22.82
Switzerland/43E1 - 2019-05-04 19-58-15.spy:238:43E1 2520 4A6F 7373 @2019/05/04 19:58:36.23
Switzerland/43E1 - 2019-05-04 19-58-15.spy:283:43E1 2520 4A6F 7373 @2019/05/04 19:58:40.15
https://github.com/walczakp/rds-spy-logs/blob/master/USA/5CBC%20-%202019-05-04%2000-10-45.spy
USA/5CBC - 2019-05-04 00-10-45.spy:103:5CBC 3436 A05C C3B0 @2019/05/04 00:10:53.63
USA/5CBC - 2019-05-04 00-10-45.spy:159:5CBC 3436 A05C C3B0 @2019/05/04 00:10:58.54
and https://github.com/walczakp/rds-spy-logs/blob/master/USA/8FC4%20-%202019-05-04%2021-55-19.spy
USA/8FC4 - 2019-05-04 21-55-19.spy:27:8FC4 3556 A08F C3B0 @2019/05/04 21:55:11.03
USA/8FC4 - 2019-05-04 21-55-19.spy:75:8FC4 3556 A08F C3B0 @2019/05/04 21:55:15.25
and https://github.com/walczakp/rds-spy-logs/blob/master/USA/4569%20-%202020-08-19%2020-45-06.spy (see PR)
USA/4569 - 2020-08-19 20-45-06.spy:8:4569 30D6 A045 C3B0 @2020/08/19 20:45:05.70
USA/4569 - 2020-08-19 20-45-06.spy:51:4569 ---- A045 C3B0 @2020/08/19 20:45:09.39
Finland/6403 - 2018-09-05 15-15-59 FI HE YLESUOMI.rds:65:6403 8440 182B 4400 @6884
Finland/6403 - 2018-09-05 15-15-59 FI HE YLESUOMI.rds:264:6403 8440 182B 4400 @7580
Germany/D52F - 2018-11-01 14-28-26 DE BER SPREE.rds:5024:D52F 254A 494C 4C59 @2018/11/01 14:38:52.461
Germany/D52F - 2018-11-01 14-28-26 DE BER SPREE.rds:5061:D52F 254A 494C 4C59 @2018/11/01 14:38:55.693
Thanks a lot! That looks like a very useful repo. I think I'll have Redsea print out the raw ODA data in case the application is not supported, since some of these are unpublished.
Running all of these logs through redsea it seems that there are actual ODA groups for only iTunes tagging (USA PI codes 0x8FC4 and 0x4569) and DAB cross-referencing (UK PI codes 0xC204 and 0xC202). The rest are probably spurious errors or otherwise coincidental, but I'll leave the issue open in case there's more info about the iTunes protocol.
I was wrong, there are more ODAs! These ones have 3A groups:
10107 "app_name": "RDS-TMC: ALERT-C",
853 "app_name": "RadioText+ (RT+)",
399 "app_name": "Enhanced early warning system",
55 "app_name": "iTunes Tagging",
20 "app_name": "Cross referencing DAB within RDS",
12 "app_name": "Warning receiver",
andimik, your contribution motivated quite a lot of new things that are now supported, is it OK to mention you in the changelog? You don't have to, of course.
Sure, you can mention my name Andreas Mikula
The rest are probably spurious errors or otherwise coincidental
Not, not all of them are errors ;)
On the Swedish programs like S4 for Stockholm EC24_-_2020-08-21_17-04-13.zip Warning receiver (hex 6A7A) is broadcast each minute twice.
17:07:01; 6A7A 12A 01000000 00000000 17:07:01; 6A7A 12A 01000000 00000000 17:08:01; 6A7A 12A 01000000 00000000 17:09:01; 6A7A 12A 01000000 00000000 17:09:01; 6A7A 12A 01000000 00000000 17:10:00; 6A7A 12A 01000000 00000000 17:10:01; 6A7A 12A 01000000 00000000 17:11:00; 6A7A 12A 01000000 00000000 17:11:01; 6A7A 12A 01000000 00000000
I found a list of most common ODAs also in the manual of a professional RDS encoder seller:
Page 22 on https://pira.cz/fm_broadcast_analyzer/p75-p175-manual.pdf
There is a Finnish program using
$ cat Downloads/rds2-mpx-6255.wav | redsea -r 192k | grep oda | sort | uniq
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"app_name":"Enhanced RadioText (eRT)","raw_data":"00 4AC3 A472"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"app_name":"Enhanced RadioText (eRT)","raw_data":"01 7669 7261"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"app_name":"Enhanced RadioText (eRT)","raw_data":"02 6469 6F20"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"app_name":"Enhanced RadioText (eRT)","raw_data":"03 5244 5332"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"app_name":"Enhanced RadioText (eRT)","raw_data":"04 2045 5254"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"app_name":"Enhanced RadioText (eRT)","raw_data":"05 0D0D 0D0D"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"raw_data":"00 4AC3 A472"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"raw_data":"01 7669 7261"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"raw_data":"02 6469 6F20"}}
{"pi":"0x6255","group":"12A","prog_type":"Varied","tp":true,"unknown_oda":{"raw_data":"03 5244 5332"}}
{"pi":"0x6255","group":"15A","prog_type":"Varied","tp":true,"unknown_oda":{"raw_data":"00 4AC3 A452"}}
{"pi":"0x6255","group":"15A","prog_type":"Varied","tp":true,"unknown_oda":{"raw_data":"01 5649 5241"}}
{"pi":"0x6255","group":"15A","prog_type":"Varied","tp":true,"unknown_oda":{"raw_data":"02 4449 4F0D"}}
{"pi":"0x6255","group":"15A","prog_type":"Varied","tp":true,"unknown_oda":{"raw_data":"03 0D0D 0D0D"}}
{"pi":"0x6255","group":"3A","debug":["TODO: Unimplemented ODA app 19416"],"open_data_app":{"app_name":"RadioText Plus / RT+for eRT","message":0,"oda_group":"13A"},"prog_type":"Varied","tp":true}
{"pi":"0x6255","group":"3A","debug":["TODO: Unimplemented ODA app 25938"],"open_data_app":{"app_name":"Enhanced RadioText (eRT)","message":1,"oda_group":"12A"},"prog_type":"Varied","tp":true}
See https://www.rundfunkforum.de/viewtopic.php?p=1749186#p1749186
Let's see what we still have remaining:
(for f in rds-spy-logs/* rds-spy-logs/**/*; do redsea --input hex < $f; done) | grep "Unimplemented ODA"|sed 's/.*\("pi":"0x...."\).*\(ODA app ....\)".*/\1 \2/'|sort|uniq -c|sort -rn|grep -v "^ \+1 "
It produces interesting list, which are all from logs dated 2019β2020:
PI | Station name | ODA ID | Unknown ODA name | ODA group | # 3A groups |
---|---|---|---|---|---|
7DC9 | πΊπΈ Z88.3 FM (WPOZ) | 7373 | Enhanced early warning system | 12A | 399 |
4569 | πΊπΈ KFOX (KUFX) | C3B0 | iTunes tagging | 11A | 22 |
5CBC | πΊπΈ WDBO 96.5 | C3B0 | iTunes tagging | 11A | 21 |
EC24 | πΈπͺ SR P4 Stockholm | 6A7A | Warning receiver | 12A | 13 |
8FC4 | πΊπΈ WWKA | C3B0 | iTunes tagging | 11A | 12 |
E224 | πΈπͺ SR P4 | 6A7A | Warning receiver | 12A | 10 |
F216 | π«π· RMC | 2020 | β | 14B | 3 |
EC02 | πΈπͺ SR P2 | 1BC9 | β | 8A | 2 |
E424 | πΈπͺ SR P4 Kristianstad | 6A7A | Warning receiver | 12A | 2 |
E132 | π·π΄ Real FM 90.2 | 414C | β | 12A | 2 |
E05F | π·π΄ Virgin 100.2 FM | 3130 | β | 15B | 2 |
I believe 3130, 414C, 1BC9, 2020 are noise; they don't exist on my list.
Then we're left with C3B0 ("iTunes tagging") on three US stations, 6A7A ("Warning receiver") on three Swedish stations, 7373 ("Enhanced early warning system") on one US station. I would like to stay away from public safety features, until we can get some kind of third-party safety audit (not planned). This leaves us with iTunes tagging. I'll close this ticket and open up a new one (#116) for anyone wishing to reverse engineer it.
See https://raw.githubusercontent.com/walczakp/rds-spy-logs/3a45d7c9f26f96c8149fd47dbad067477acd6260/USA/4569%20-%202020-08-19%2020-45-06.spy
This is a PR from https://github.com/walczakp/rds-spy-logs/pull/2
A list of all valid ODAs is at http://www.rds.org.uk/2010/pdf/R17_032_1.pdf