|Wednesday, 17 February 2010|
Our works on multimedia data broadcasting and the renewed interest in RDS lead us to identify the need for an open FM-RDS transmission/reception chain. The GNU Radio platform which we used for our DAB tools appeared as a logical basis for new FM-RDS tools.
After some research, we discovered that most of the tools required to create an FM broadcasting chain were already available for GNU Radio but without much documentation or examples. This page shows an overview of the basic FM -RDS transmission and reception tools that we were able to integrate and further develop. For each demo, the GNURadio Companion flowcharts and the resulting Python code are provided. The CRC FM-RDS GNURadio flowcharts are licensed under the Creative Commons Attribution-ShareAlike 3.0 License.
The flowcharts we produced with the GNURadio Companion tool and the resulting code should run with the following dependencies installed:
This is a demo of different ways to demodulate FM radio using the GNURadio framework. The user can enable/disable the sound from any of the demodulator to compare the results.
This is a demo of a simple spectral analyzer for FM frequencies. This application samples a width of 3.2Mhz of spectrum which makes it easier to see multiple FM stations at once. A button lets the user turn on the audio of the current central FM frequency but a very powerful CPU will be required for this to work correctly.
This is a complete FM-RDS transmitter that takes an audio file or a raw audio feed through a named pipe. The "RDS data Source" block takes an XML file containing a description of the data to insert in the RDS channel in the following format:
The design is based on the FM transmitter found on opendigitalradio.org to which was added the RDS components from the gr-rds project. The RDS generation is now functional (as of 2010-02-19). The resulting data was successfully received on an FM enabled iPod nano as shown on the left.
This is a complete stereo FM-RDS receiver. The RDS blocks are also provided by the gr-rds project and they have been tested to work with multiple commercial FM radio stations. The decoded RDS data is shown on the console with the following format:
This is the same FM-RDS transmitter described above but the RDS data encoder was modified to support ODAs (Open Data Applications). The modified gr-rds project must be used in replacement of the gr-rds v435 used in the other applications:
The "RDS data Source" block takes an XML file containing a description of the data to insert in the RDS channel. The following example uses the ODA component to send RT+ information:
The resulting data was successfully received on an FM enabled iPod nano as shown above. The RT+ data sent with the transmission enables the iPod to build its "Recent Songs" list and to search for these titles when connected to iTunes.
This is an evolution of the previous stereo FM-RDS receiver. The gr-rds project was modified to include a new standard RDS output block that enables to send RDS data over the default GNU Radio sink blocks. One of the use of this modified receiver is to send the RDS data over TCP/IP or UDP/IP as supported by the test mode of the FM TwoO application . This modified gr-rds project must be used in replacement of the gr-rds v435 used in the other applications: