Adam792
Specialist Contributor
- Joined
- Sep 5, 2009
- Messages
- 1,266
- Reaction score
- 1,158
- Points
- 113
- Age
- 31
- My Satellite Setup
-
Dishes: 80cm (5°W), 80cm (30°W), 60cm Zone 2 (13°E/19.2°E/28.2°E)
Receivers: HTPC w/ TBS6905 4x DVB-S2 PCIe tuner card running TVHeadend, Octagon SF8008 mini.
- My Location
- Cheltenham
I've been feeling under the weather this weekend, and with a lack of things to do I got curious about the mysterious data services on 12303H on Astra 4.8°E -
BBC - CCI DAB
DAB D1
SDL NATL
As this transponder is an Arqiva one, and these services are the names of the UK's three national DAB multiplexes, I thought it might be safe to assume that these are the feeds that supply the transmitters across the country. If this is the case, then my thoughts turned to whether it might be possible to process them in some way on a computer and play the DAB services.
A couple of Google searches later and I stumbled across a page on a German language forum where some people seem to have managed to do just this! One has even managed to pipe the input into some SDR software that generates a signal for a small transmitter and has his own mini UK DAB transmitter in Germany! -
Englisches DAB National D1 Ensemble - Zuführung auf Sirius 5°Ost! - DAB Digitalradio Forum (I ran this through the nowadays pretty good Google Translate)
It turns out that the DAB multiplexes are carried in a format called ETI (it's an agreed standard for DAB/DAB+), which can be carried over satellite by pushing the raw data over a PID in the transponder transport stream. In this case, the relevant PIDs are:
1061 - BBC DAB
1062 - Digital 1
1063 - SDL National
In the German thread they mentioned a set of tools called ETI-tools that can process the PID and extract the DAB data -
GitHub - piratfm/eti-tools: ETI conversion software
The read me on this page explains all the tools and what they do.
For these UK services, it turns out that the signal needs converting through a few of these tools and then it becomes readable. I'm not sure of the details of what the technical ins and outs of it are but apparently the format carried on satellite is something called ETI-NA and it has to be converted to ETI-NI. The transport stream packets also contain some padding (so the DAB data doesn't entirely fill each packet) which has to be given to the eti tools software in the form of an "offset", which as that German thread states is "12".
I've just been testing the tools out and sure enough I'm getting readable DAB digital radio data back!
First off, as I use TVHeadend I'm using the multiplex HTTP stream address for 12303H, and then adding the ?pids= argument to the end to filter the relevant PID -
I think you should be able to just feed in a stream URL for the multiplex on an Enigma 2 receiver though as well, because the ETI tools software will filter the PID for you in the next step.
Next, this TS stream needs processing with the ts2na tool to strip the packet headers and remove the 12 bytes of padding from the start of each packet -
Now the ETI-NA stream (apparently) needs to be converted to ETI-NI with the na2ni tool -
Finally, I haven't got as far as actually playing any audio yet or saving any streams to disk, but using the ni2http tool with the '--list' option then the software reports back a list of the decoded radio stations on each PID, proving that it's managing to decode the data!
These commands all go together via pipes -
And then, bingo! I get the list of stations from the BBC National DAB multiplex from PID 1061! -
And then for PIDs 1062 and 1063 -
Hopefully this might be of interest to someone else as well! Especially if you live out of terrestrial range of the DAB transmitters.
The next step will be to decode the actual audio now that I know the software definitely all works.
BBC - CCI DAB
DAB D1
SDL NATL
As this transponder is an Arqiva one, and these services are the names of the UK's three national DAB multiplexes, I thought it might be safe to assume that these are the feeds that supply the transmitters across the country. If this is the case, then my thoughts turned to whether it might be possible to process them in some way on a computer and play the DAB services.
A couple of Google searches later and I stumbled across a page on a German language forum where some people seem to have managed to do just this! One has even managed to pipe the input into some SDR software that generates a signal for a small transmitter and has his own mini UK DAB transmitter in Germany! -
Englisches DAB National D1 Ensemble - Zuführung auf Sirius 5°Ost! - DAB Digitalradio Forum (I ran this through the nowadays pretty good Google Translate)
It turns out that the DAB multiplexes are carried in a format called ETI (it's an agreed standard for DAB/DAB+), which can be carried over satellite by pushing the raw data over a PID in the transponder transport stream. In this case, the relevant PIDs are:
1061 - BBC DAB
1062 - Digital 1
1063 - SDL National
In the German thread they mentioned a set of tools called ETI-tools that can process the PID and extract the DAB data -
GitHub - piratfm/eti-tools: ETI conversion software
The read me on this page explains all the tools and what they do.
For these UK services, it turns out that the signal needs converting through a few of these tools and then it becomes readable. I'm not sure of the details of what the technical ins and outs of it are but apparently the format carried on satellite is something called ETI-NA and it has to be converted to ETI-NI. The transport stream packets also contain some padding (so the DAB data doesn't entirely fill each packet) which has to be given to the eti tools software in the form of an "offset", which as that German thread states is "12".
I've just been testing the tools out and sure enough I'm getting readable DAB digital radio data back!
First off, as I use TVHeadend I'm using the multiplex HTTP stream address for 12303H, and then adding the ?pids= argument to the end to filter the relevant PID -
Code:
curl http://127.0.0.1:9981/stream/mux/beb3fdb566ab324fdaa4350be39a5e3d?pids=1061
I think you should be able to just feed in a stream URL for the multiplex on an Enigma 2 receiver though as well, because the ETI tools software will filter the PID for you in the next step.
Next, this TS stream needs processing with the ts2na tool to strip the packet headers and remove the 12 bytes of padding from the start of each packet -
Code:
./ts2na -p 1061 -s 12
Now the ETI-NA stream (apparently) needs to be converted to ETI-NI with the na2ni tool -
Code:
./na2ni
Finally, I haven't got as far as actually playing any audio yet or saving any streams to disk, but using the ni2http tool with the '--list' option then the software reports back a list of the decoded radio stations on each PID, proving that it's managing to decode the data!
Code:
./ni2http --list
These commands all go together via pipes -
Code:
curl http://127.0.0.1:9981/stream/mux/beb3fdb566ab324fdaa4350be39a5e3d?pids=1061 | ./ts2na -p 1061 -s 12 | ./na2ni | ./ni2http --list
And then, bingo! I get the list of stations from the BBC National DAB multiplex from PID 1061! -
Code:
curl http://127.0.0.1:9981/stream/mux/beb3fdb566ab324fdaa4350be39a5e3d?pids=1061 | ./ts2na -p 1061 -s 12 | ./na2ni | ./ni2http --list
INFO: Using pid: 0x0425 (1061)
WARN: Forwarded error correction disabled (NOT COMPILED)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0INFO: E1 Sync found at bit: 314, inverted: yes
DEBUG: seek: B:39, b:2
DEBUG: pre-readed output 14 frames (24 bytes left):
DEBUG: MULTIFRAME FILLING: 206
INFO: ETI Sync found at pos: 4
INFO: ETI Multiframe sync found at blockId: 10
100 249k 0 249k 0 0 178k 0 --:--:-- 0:00:01 --:--:-- 178kBBC National DAB (0xce15)
0 : BBC Radio 4Extra (0xc22c) Pri subch=12 start=774 CUs= 58 PL=uep 3 bitrate=80
1 : BBC Radio 1Xtra (0xc22a) Pri subch=10 start=582 CUs= 96 PL=uep 3 bitrate=128
2 : BBC AsianNetwork (0xc236) Pri subch= 7 start=486 CUs= 48 PL=uep 3 bitrate=64
3 : BBC WorldService (0xc238) Pri subch= 9 start=534 CUs= 48 PL=uep 3 bitrate=64
4 : BBC Radio 1 (0xc221) Pri subch= 1 start= 0 CUs= 96 PL=uep 3 bitrate=128
5 : BBC Radio 2 (0xc222) Pri subch= 2 start= 96 CUs= 96 PL=uep 3 bitrate=128
6 : BBC Radio 3 (0xc223) Pri subch= 3 start=192 CUs=140 PL=uep 3 bitrate=192
7 : BBC Radio 4 (0xc224) Pri subch= 4 start=332 CUs= 96 PL=uep 3 bitrate=128
8 : BBC Radio 5 Live (0xc225) Pri subch= 5 start=428 CUs= 58 PL=uep 3 bitrate=80
9 : BBC Radio 6Music (0xc22b) Pri subch=11 start=678 CUs= 96 PL=uep 3 bitrate=128
And then for PIDs 1062 and 1063 -
Code:
curl http://127.0.0.1:9981/stream/mux/beb3fdb566ab324fdaa4350be39a5e3d?pids=1062 | ./ts2na -p 1062 -s 12 | ./na2ni | ./ni2http --list
WARN: Forwarded error correction disabled (NOT COMPILED)
INFO: Using pid: 0x0426 (1062)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0INFO: E1 Sync found at bit: 222, inverted: yes
DEBUG: seek: B:27, b:6
DEBUG: pre-readed output 15 frames (4 bytes left):
DEBUG: MULTIFRAME FILLING: 207
INFO: ETI Sync found at pos: 0
INFO: ETI Multiframe sync found at blockId: 0
100 202k 0 202k 0 0 164k 0 --:--:-- 0:00:01 --:--:-- 164kD1 National (0xc181)
0 : Classic FM (0xc2a1) Pri subch= 1 start= 0 CUs= 96 PL=uep 3 bitrate=128
1 : talkSPORT (0xc0c0) Pri subch= 2 start= 96 CUs= 48 PL=uep 3 bitrate=64
2 : Radio X (0xc4cd) Pri subch=17 start=156 CUs= 58 PL=uep 3 bitrate=80
3 : LBC (0xc0c2) Pri subch=15 start=214 CUs= 48 PL=uep 3 bitrate=64
4 : BFBS Radio (0xc3c0) Pri subch= 9 start=262 CUs= 58 PL=uep 3 bitrate=80
5 : Capital XTRA (0xc37b) Pri subch=16 start=320 CUs= 84 PL=uep 3 bitrate=112
6 : Smooth Extra (0xc6c0) Pri subch= 8 start=404 CUs= 58 PL=uep 3 bitrate=80
7 : Absolute Radio (0xc1c0) Pri subch= 3 start=462 CUs= 58 PL=uep 3 bitrate=80
8 : UCB 1 (0xc4ca) Pri subch= 7 start=520 CUs= 48 PL=uep 3 bitrate=64
9 : KISS (0xc5c0) Pri subch=10 start=568 CUs= 58 PL=uep 3 bitrate=80
10 : Magic (0xc0c6) Pri subch=11 start=626 CUs= 58 PL=uep 3 bitrate=80
11 : Heart extra (0xcfd1) Pri subch= 4 start=684 CUs= 58 PL=uep 3 bitrate=80
12 : Capital UK (0xc5da) Pri subch=12 start=742 CUs= 58 PL=uep 3 bitrate=80
Code:
curl http://127.0.0.1:9981/stream/mux/beb3fdb566ab324fdaa4350be39a5e3d?pids=1063 | ./ts2na -p 1063 -s 12 | ./na2ni | ./ni2http --list
INFO: Using pid: 0x0427 (1063)
WARN: Forwarded error correction disabled (NOT COMPILED)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0INFO: E1 Sync found at bit: 480, inverted: yes
DEBUG: seek: B:60, b:0
DEBUG: pre-readed output 14 frames (3 bytes left):
DEBUG: MULTIFRAME FILLING: 206
INFO: ETI Sync found at pos: 2
INFO: ETI Multiframe sync found at blockId: 19
100 58120 0 58120 0 0 84276 0 --:--:-- --:--:-- --:--:-- 84231SDL National (0xc1ce)
0 : talkRADIO (0xc0d8) Pri subch= 1 start= 0 CUs= 48 PL=uep 3 bitrate=64
1 : talkSPORT 2 (0xc1d8) Pri subch= 2 start= 48 CUs= 48 PL=uep 3 bitrate=64
2 : Virgin Radio (0xc3d8) Pri subch= 3 start= 96 CUs= 58 PL=uep 3 bitrate=80
3 : KISSTORY (0xc4d8) Pri subch= 4 start=154 CUs= 58 PL=uep 3 bitrate=80
4 : Mellow Magic (0xc5d8) Pri subch= 5 start=212 CUs= 58 PL=uep 3 bitrate=80
5 : heat radio (0xc6d8) Pri subch= 6 start=270 CUs= 58 PL=uep 3 bitrate=80
6 : Planet Rock (0xc7d8) Pri subch= 7 start=328 CUs= 58 PL=uep 3 bitrate=80
7 : Absolute Rad 80s (0xc8d8) Pri subch= 8 start=386 CUs= 58 PL=uep 3 bitrate=80
8 : Sunrise National (0xc9d8) Pri subch= 9 start=444 CUs= 48 PL=uep 3 bitrate=64
9 : Awesome Radio (0xcad8) Pri subch=10 start=492 CUs= 48 PL=uep 3 bitrate=64
10 : UCB 2 (0xcbd8) Pri subch=11 start=540 CUs= 48 PL=uep 3 bitrate=64
11 : PremierChristian (0xccd8) Pri subch=12 start=588 CUs= 48 PL=uep 3 bitrate=64
12 : Premier Praise (0xcdd8) Pri subch=13 start=636 CUs= 48 PL=uep 3 bitrate=64
13 : Share Radio (0xc2d8) Pri subch=14 start=684 CUs= 48 PL=uep 3 bitrate=64
14 : Panjab Radio (0xced8) Pri subch=15 start=732 CUs= 42 PL=uep 3 bitrate=56
15 : Fun Kids UK (0xcfd8) Pri subch=16 start=774 CUs= 24 PL=eep-3a bitrate=32 DAB+
16 : Jazz FM Stereo (0xcad7) Pri subch=17 start=798 CUs= 24 PL=eep-3a bitrate=32 DAB+
17 : Magic Chilled (0xced7) Pri subch=18 start=822 CUs= 24 PL=eep-3a bitrate=32 DAB+
18 : Union JACK (0xc7ff) Pri subch=19 start=846 CUs= 18 PL=eep-3a bitrate=24 DAB+
Hopefully this might be of interest to someone else as well! Especially if you live out of terrestrial range of the DAB transmitters.
The next step will be to decode the actual audio now that I know the software definitely all works.