Log in
Register
Menu
Log in
Register
Home
What's new
Latest activity
Authors
Forums
New posts
Search forums
What's new
New posts
Latest activity
Members
Current visitors
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Miscellaneous Sections
Tech Head - The Technology Section
Raspberry Pi
Raspberry Pi RDS FM Transmitter with German satellite channels
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="Adam792" data-source="post: 1057659" data-attributes="member: 330868"><p>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.</p><p></p><p>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.</p><p></p><p>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.</p><p></p><p>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 - <a href="https://github.com/ChristopheJacquet/PiFmRds" target="_blank">ChristopheJacquet/PiFmRds</a></p><p></p><p>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! -</p><p></p><p>[MEDIA=youtube]YRgnuquEAoc[/MEDIA]</p><p></p><p>The process is -</p><p></p><p>Create a named pipe to share data to the PiFmRds tool</p><p>Stream MP2 stream for one of the German radio stations --> pipe into Python tool to extract the RDS and send it to the pipe</p><p>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</p><p>Put your radio aerial near to the output pins on the Pi, and tune to the correct frequency!</p></blockquote><p></p>
[QUOTE="Adam792, post: 1057659, member: 330868"] 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 - [URL="https://github.com/ChristopheJacquet/PiFmRds"]ChristopheJacquet/PiFmRds[/URL] 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! - [MEDIA=youtube]YRgnuquEAoc[/MEDIA] 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! [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
Miscellaneous Sections
Tech Head - The Technology Section
Raspberry Pi
Raspberry Pi RDS FM Transmitter with German satellite channels
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.
Accept
Learn more…
Top