Raspberry Pi RDS FM Transmitter with German satellite channels

Adam792

Specialist Contributor
Joined
Sep 5, 2009
Messages
1,256
Reaction score
1,147
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
Anyone who's listened to any of the German public radio stations on 12265H on 19.2°E via an Enigma2 receiver has probably noticed that radio text displays on the screen, often showing the "now playing" information.

This interested me as to how it worked, and some research a good while back found out that it's RDS (for FM radio), it's embedded into the MP2 audio stream in a format called UECP for these channels which are often used to feed the FM services available via cable providers in Germany. The cable companies have special FM modulators that take the satellite stream input and modulate the RDS data along with the audio to an FM frequency.

This project started as wanting to write a little tool to extract this information from the audio stream just out of interest to be able to view it. The data is actually embedded inside the audio stream, at the end of each MPEG Audio packet. I ended up writing a Python tool that reads in each MPEG Audio packet, checks for RDS data (the data is in reverse order at the end of the packet) and re-assembles it to display in a terminal window on the PC. For ease of decoding I'm able to use my TVHeadend setup to just stream the "raw" MP2 audio without any transport stream packaging.

The next step has then been to try out actually transmitting this data. The Raspberry Pi can generate an FM signal on its IO Pins, using a little piece of software called PiFm. There's a fork of this called PiFmRds that adds RDs transmission capability - ChristopheJacquet/PiFmRds

The PiFmRds tool lets you dynamically change the RDS PS (station name), TA Flag (Traffic Announcement) and RT (Radio Text) by sending data to a pipe. I adapted my Python tool to send the decoded RDS data from the MP2 stream to a named pipe in the correct format and hey presto! -


The process is -

Create a named pipe to share data to the PiFmRds tool
Stream MP2 stream for one of the German radio stations --> pipe into Python tool to extract the RDS and send it to the pipe
Convert the MP2 stream to WAVE with FFMPEG and pipe it into the PiFmRds tool along with the RDS data pipe as the audio and RDS data sources
Put your radio aerial near to the output pins on the Pi, and tune to the correct frequency!
 

Terryl

Specialist Contributor
Joined
Apr 14, 2011
Messages
3,200
Reaction score
1,918
Points
113
Age
82
My Satellite Setup
OpenBox X5 on a 1 meter motorized dish.
And now a 10 foot "C" band dish.

Custom built PC
My Location
Deep in the Boonies in the central Sierra Nevada mountains of California.
I worked with "RDS" when it first came about, it runs on a subcarrier on the FM channel at 57 KHz, most stations now days don't use it as it constituted as part of your total FM modulation, you have to cut back on your main audio modulation by 5 to 7 % to run it.

Some heavy rock stations didn't like that, as they wanted more bang for the buck.
 

Adam792

Specialist Contributor
Joined
Sep 5, 2009
Messages
1,256
Reaction score
1,147
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 worked with "RDS" when it first came about, it runs on a subcarrier on the FM channel at 57 KHz, most stations now days don't use it as it constituted as part of your total FM modulation, you have to cut back on your main audio modulation by 5 to 7 % to run it.

Some heavy rock stations didn't like that, as they wanted more bang for the buck.

That’s interesting that stations over in the US often don’t tend to use it then?

Here in Europe it is very widely used, it’s strange to find a station that does not transmit RDS data, especially in Western and Central European countries.

Certainly here in the UK, pretty much every FM station uses it, except for perhaps the odd very low budget and low power community station.
 

Fisty McB

Member
Joined
Aug 11, 2012
Messages
426
Reaction score
612
Points
93
My Satellite Setup
See my signature...
My Location
County Tyrone, N. Ireland
Yeah, any FM radio station in the UK, or most of Europe for that matter, that doesn't have RDS which at least shows the station name is liable to have credibility questioned.

I noticed in Australia earlier this year that RDS use is common enough among the FM commercial music stations, both in the main cities and in regional areas, whereas special interest & community stations rarely had them - even those outputting some kilowatts of power. SBS, the government owned "multicultural" broadcaster didn't have RDS either on their FM transmissions. The ABC, whom you'd think would benefit greatly from RDS over their vast transmitter network, only had RDS on their FM transmissions in Brisbane & Sydney and none in the more regional areas that I was in (didn't go anywhere outside Oueensland & New South Wales so can't comment too much on that).
 

Channel Hopper

Suffering fools, so you don't have to.
Staff member
Joined
Jan 1, 2000
Messages
35,479
Reaction score
8,525
Points
113
Age
59
Website
www.sat-elite.uk
My Satellite Setup
A little less analogue, and a lot more crap.
My Location
UK
From memory, it was also one of the nice detail of FM that cannot be recreated on DAB, which is why some Scandinavian countries don't want a DSO on the analogue services. It can be used for ott features as well, including local (meaning sub 200m) remote operation of the radio itself, allowing emergency vehicles to turn down the volume and advise the driver to pull over, or warn on their driving prowess /vehicle irregularities before deciding a forced stop is a better option
 

RustySpoons

Sleepy Hollow
Joined
Jan 31, 2018
Messages
2,345
Reaction score
1,278
Points
113
Age
42
My Satellite Setup
50E - 30W
2x CM 1.2m Polar Mount/Jack
65E- 65W
Gibertini 1m OP100 - STAB HH100 - Inverto Black Ultra 0.2 Twin
Mutant HD51
Edision Primo IP S2
Dreambox DM800HD
Venton Unibox HD2
Sony Bravia 55" 4K
My Location
South Wales
UK/Europe also have Traffic Data broadcast over a FM sub carrier for satellite navigation systems.
 

Lexzie

Member
Joined
Feb 14, 2010
Messages
281
Reaction score
90
Points
28
Age
53
My Satellite Setup
Xtrend ET10000 DVB-C, DVB-S2, and IPTV
Dreambox DM920 DVB-C/DVB-S2X/DVB-T2
TBS 5925 USB-tuner
80 cm fixed dish (28.2E/23.5E/19.2E)
180cm Channel Master offset dish with polarmount (39E-34.5W, Ku-band)
My Location
The Netherlands
Nice project, I am curious about maybe a bit similar kind of transmission.
There is a DAB+ radio (Dension DAB-U), which can be connected to your normal car media system via USB.
In that way the audio system is handling the radio station as if it is a MP3 file playing, including names etc.
Could such a system be made via f.e. a Raspberry Pi with a RDS USB stick?
 

Adam792

Specialist Contributor
Joined
Sep 5, 2009
Messages
1,256
Reaction score
1,147
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
Nice project, I am curious about maybe a bit similar kind of transmission.
There is a DAB+ radio (Dension DAB-U), which can be connected to your normal car media system via USB.
In that way the audio system is handling the radio station as if it is a MP3 file playing, including names etc.
Could such a system be made via f.e. a Raspberry Pi with a RDS USB stick?

You could probably do it for sure, you’d just need a script to read the now playing song (if you were playing MP3s on your Pi) and encode it as a 64 character-long strong for Radio Text, or broken down into 8 character chunks for the PS.

To bear in mind though is that this software does not use a USB or other kind of external transmitter - it actually transmits a very tiny signal from the IO pins on the actual Raspberry Pi.
 

Lexzie

Member
Joined
Feb 14, 2010
Messages
281
Reaction score
90
Points
28
Age
53
My Satellite Setup
Xtrend ET10000 DVB-C, DVB-S2, and IPTV
Dreambox DM920 DVB-C/DVB-S2X/DVB-T2
TBS 5925 USB-tuner
80 cm fixed dish (28.2E/23.5E/19.2E)
180cm Channel Master offset dish with polarmount (39E-34.5W, Ku-band)
My Location
The Netherlands
I know you meant a FM transmitter, but for transferring DAB+ to the on-board audio-system they are sold by the dozen.

But that's not what I want, first of all I don't want to transfer a digital signal through a analoge system and because the FM band is crowded with stations, you have to adjust your frequency a few times during a long trip.

The mentioned Dension DAB+U converts the DAB-station to MP3 via USB.
Buying that adapter is a way to go, but if building such a thing is easy to do, I'd like that. Besides that, then you can program yourself what will be displayed on the on-board system via the MP3-tags.
F.e. DAB-mux name in the album-tag, station name in the artist-tag, Dynamic Label as the title-tag and the slideshow as
Especially the picture I haven't seen the Dension do that. It looks like only station name (as the title-tag) is shown.
DAB+U | Dension
Besides that, not unimportant, units like that are very expensive!

Also trying reception with Smartphone + RTL-stick and the 'welle.io' app.
It works, but really drains the battery (and USB port on the phone is of course not available for charging).
So I want to make a special USB-cable for that.
But have to install a good antenna too, the one I have now gives to poor reception.
 
Last edited:

Adam792

Specialist Contributor
Joined
Sep 5, 2009
Messages
1,256
Reaction score
1,147
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 doing a bit more experimenting with this. Have managed to get it to use the RDS data transmitted alongside the French TDF feeds on 5°W (11480H) too. These are different to the German stations because the UECP RDS data is transmitted on a separate PID to the audio rather than inside the audio stream. The data on these is easier to decode because they're not in reverse order, but some of the PIDs carry the RDS for more than one station!

Stations like Virgin Radio and RTL2 dynamically change the RDS PS like the German ones do to show the song playing information.

UK/Europe also have Traffic Data broadcast over a FM sub carrier for satellite navigation systems.

This information is definitely present in the French TDF RDS streams over satellite - in the PIDs labelled "TDF RDS". Lots of packets with the identifier 0x30 (the UECP code for TMC traffic data). I've also found the same in a couple of the PIDs on 30°W 11302H/11382H (the two transponders carrying all the feeds of RNE Radio in AAC alongside the DTT feeds), so I think these must feed RTVE's FM transmitters with this data alongside the radio station audio. I didn't find the RDS Radio Text or Traffic announcement flagging in any of these streams on there though.
 

Adam792

Specialist Contributor
Joined
Sep 5, 2009
Messages
1,256
Reaction score
1,147
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
More UECP RDS data transmitted via satellite!

The Spanish and Portuguese national public broadcaster radio station feeds in AAC on Hispasat 30W have the RDS Radio Text, TA Flagging and also RDS-TMC traffic data for the Spanish services at least, transmitted on data PIDs in the same way as the French TDF services on 5W.

11302H/11382H RNE: PID 181, 281, 381, 481 and 581 (I guess for each of RNE1, RNE Clásica, Radio 3, RNE4 and RNE5 respectively, although all carry the same carrousel of RDS Radio Text messages which are transmitted on all channels to say what's currently on air across the services - I've seen them working this way in Spain via FM. I didn't find these before as the RT data only gets transmitted via these PIDs on the hour/when a new programme starts on one of the stations. Most UECP messages on these PIDs are RDS-TMC traffic data which I don't know how to decode.)

Code:
RT: La programación de Radio Nacional en cada instante.            
RT: Radio Nacional: GENTE DESPIERTA (Alfredo Menéndez)              
RT: Radio Clásica: NUESTRO FLAMENCO (J.M.Velázquez)                
RT: Radio 3: LA CUARTA PARTE                                        
RT: Radio 5: Radio 5 INFORMACION                                    
RT: Radio Exterior: INGLES                                          
RT: La programación de Radio Nacional en cada instante.            
RT: Radio Nacional: GENTE DESPIERTA (Alfredo Menéndez)              
RT: Radio Clásica: NUESTRO FLAMENCO (J.M.Velázquez)                
RT: Radio 3: LA CUARTA PARTE                                        
RT: Radio 5: Radio 5 INFORMACION                                    
RT: Radio Exterior: FRANCES

And... on the RDP Portuguese radio transponder 12519V - PID 101 which is oddly linked to the "ONDA MEDIA" medium-wave feed for some reason, is actually carrying the RDS data for the FM services, which are all in this same stream but flagged with IDs so they only go out on the respective frequencies -

Code:
RT (1):   ANTENA 1 - LIGA PORTUGAL   ANTENA 1 - LIGA PORTUGAL 
RT (1): Exclusivo A1 - Com Que Voz 4 
RT (1): Joao So - Com Que Voz - Foi Deus 
RT (1):   ANTENA 1 - LIGA PORTUGAL   ANTENA 1 - LIGA PORTUGAL 
RT (1): Ines Maria Meneses/ Prof. Julio Machado Vaz - O Amor e...  
RT (2):  ANTENA 2, a arte que toca   ANTENA 2, a arte que toca  
RT (1):   ANTENA 1 - LIGA PORTUGAL   ANTENA 1 - LIGA PORTUGAL 
RT (1): Gabrielle - Dreams
 

stonesatellite

Regular Member
Joined
Jul 31, 2016
Messages
230
Reaction score
69
Points
28
Age
40
My Satellite Setup
Vu+ Duo 4K SE (2x DVB-S2X) (2x Xbox One USB tuners (1x DVB-C & 1x DVB-T2) (1x Nooelec NESDR Nano 2+ USB RTL-SDR tuner)
Octagon SF8008 (2x DVB-S2X)
Mut@nt HD51 (2x 2x DVB-S2X)
Triax TD110
Sky zone 1 minidish
Inverto Black Ultra Twin LNB
Alsat Superior Dark Motor
Onkyo TX-SR605
6x Bose Acoustimass/Lifestyle double speakers
My Location
Stone, Staffordshire
That’s interesting that stations over in the US often don’t tend to use it then?

Here in Europe it is very widely used, it’s strange to find a station that does not transmit RDS data, especially in Western and Central European countries.

Certainly here in the UK, pretty much every FM station uses it, except for perhaps the odd very low budget and low power community station.

i cant speak for all of the US but in San Diego for example which iv been to like five times RDS is in use on almost every station
 

Adam792

Specialist Contributor
Joined
Sep 5, 2009
Messages
1,256
Reaction score
1,147
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
A little bored during lockdown, so...

A couple more clips of stations with this, France Inter (on 5W 11480H), and RNE Radio 5 Las Palmas (30W 11302H - the RNE feeds now carry separate RDS data for each of the 5 stations).

For some reason RNE carry accented letters in their RDS Radio Text. This doesn't decode properly on my radio!


 
Last edited:
Top