RDS Logo

RDS Surveyor, multi-platform RDS decoder

RDS Surveyor icon

RDS Surveyor is being developed by Christophe Jacquet, a radio ehtusiast.

Run RDS Surveyor 2 now in your browser!

Project links:

RDS Surveyor version 1

Latest release

Download latest release (1.0) (updated Saturday, 05-Oct-2019 19:24:35 CEST).

The base program is multi-platform. The release contains the Si407x and RTL-SDR drivers for Windows (32 & 64 bits) and MacOS. You need the Java runtime to run RDS Surveyor. Get it here!

If you need the drivers for another platform, I maybe I can build them for you. Just drop me an email.

If you do not have radio/RDS receiver hardware, you may test RDS Surveyor with pre-recorded samples available on the “Samples” page. Just follow the instructions on the “Usage” page, and you're done!

Getting the latest development version of the code

Go to the GitHub page of the project and follow the instructions to build the Java executable, as well as hardware-specific backends (aka drivers) for your operating system.

Graphical usage

Unzip rdssurveyor.zip and double-click rdssurveyor.jar.

In the window, select the input method:

Usage from the command line

The syntax of the command is as follows:

java -jar rdssurveyor.jar <source specification> [<output specification>] [<options>]

Source specification

Currently, three types of sources may be used:

Live audio capture: -inaudio
In this mode, RDS Surveyor takes its input from the sound card. The RDS Data line must be connected to the left channel, the RDS Clock line must be connected to the right channel. RDS Surveyor expects the levels to be inverted (High is 0 V, Low is ≈0.7 V). This is because my own hardware contains an optocoupler that inverts signals. However, if you need a non-inverting input method, just do the minor modification to the code and contribute it! In this mode, RDS Surveyor works “live” (“real-time”), so if you do not specify an output method, it will autmatically write out the binary stream to a file in the temporary directory. In this way, you should never lose valuable RDS data while doing experiments.
Read from a binary file: -inbinfile <file>
RDS Surveyor reads its data from the specified file. It must contain the raw unsynchronized RDS bitstream, including CRC bits, with no particular alignment. Each byte is to be read MSB first. This is the kind of files written by -outbinfile.
Read from audio file: -inaudiofile <file>
RDS Surveyor reads from the specified audio file, in WAVE format. The signals are expected to be the same as with -inaudio: inverted, Data on the left channel, Clock on the right channel. The sample rate does not matter.

Output specification

RDS Surveyor can output the processed data stream., with the -outbinfile <file> parameter. It writes out a binary file, to be read later with -inbinfile.

When processing a “live” signal (-inaudio), if no output file is specified, RDS Surveyor uses a default file in the temporary directory.

Options

-nogui
Does not show the graphical user interface.

Examples

To read RDS data live from the sound card:

java -jar rdssurveyor.jar -inaudio

To read from a samples file, in binary format, here named France_Inter.rds:

java -jar rdssurveyor.jar -inbinfile France_Inter.rds

Development history

5 Oct 2019
RDS Surveyor version 1.0 includes numerous improvements committed over the past four years, with huge contributions from Michael von Glasow:
  • RTL-SDR (RTL2832U) driver
  • Si470x USB dongle driver, with sound on some platforms.
  • GNS FM9 driver.
  • Decode RDS from multiplex (MPX) sound files.
  • Parse and use TMC location tables, store tables in a database.
  • Much improved TMC support.
  • Support for RDS2 Long PS.
  • UI improvements: better display of EON tables, Decoder Information flags, In-House data.
  • Bugfixes.
3 May 2014
RDS Surveyor version 0.9 version includes numerous improvements committed over the past two years:
  • RDS Surveyor can now use USB sticks such as the Silicon Labs USBFMRADIO-RD, on all platforms, with full RDS support and audio playback.
  • Improved UI, which should be more readable.
  • Complete TMC/Alert-C support.
  • Displays (raw) iTunes tagging data.
  • Support for Catalunya Radio's TDC in Barcelona.
  • Various improvements and bugfixes, including handling of dynamic PS.
1 January 2012
To celebrate the new year, I'm realeasing RDS Surveyor version 0.8. RDS Surveyor has moved forward a lot over the past year, but I was so busy I almost forgot the “release early, release often” motto. This version includes all of these improvements:
  • RBDS support: PI code calculations, PTY labels, etc.
  • Log files: ability to read RDS Spy's logfiles; addition of timestamps.
  • Full-GUI operation: when launched from a GUI, RDS Surveyor displays a window allowing one to select a source of RDS data (file, sound card, USB key, web site [see below], etc.). It is possible to change the source at any time without restarting the program.
  • Ability to download recorded RDS data (RDS Surveyor's or RDS Spy's logfiles) from web sites; preliminary "playlist" feature to list all the log files referenced from a given web page.
  • New Group Analyzer window displaying detailed group contents.
  • New traffic information panel.
  • New panel displaying the list of used ODAs.
  • New panel displaying the history of RadioText messages, with RT+ labels if RT+ is used.
  • When playing back recorded data, it is now possible to simulate real time.
  • Implementation of EN301700 ODA (cross-referencing of DAB from RDS).
  • Improved handling of non-standard dynamic PS (now supports scrolling of one character at a time).
  • Preliminary framework for saving preferences.
  • Many more improvements and fixes.
22 July 2010
Release of RDS Surveyor version 0.7. This version includes the following improvements, most of which have been on the SVN for a while:
  • Improved V4L device support on Linux: tuning is supported, and has a GUI. For V4L to work, you have to retrieve the file "libv4ltuner.so" from the SVN (folder JNIBackends) for now. I'm working on better integration!
  • Experimental auto-scan feature for V4L devices. A must to record lots of RDS data while on the move!
  • Bug fixes to paging, TMC/Alert-C, RT via 2B groups (for more details see the SVN history)
  • Improvements to the GUI
5 May 2010
Release of RDS Surveyor version 0.6. This version brings the support of Video4Linux devices on Linux, as well as various improvements:
  • Support V4L devices on Linux. Still basic, no tuning yet. Tuning may be done via the "radio" utility, for instance. All bad blocks are ignored for maximum reliability. It should work with any V4L device; it has been tested with the USBFMRADIO (Si470x).
  • Better handling of (non-standard) dynamic PS.
  • Improvements to RT: ignoring A/B flag (wrongly used by some broadcasters), keep a history of messages.
  • When using "bitstream" input (from the audio card, or from recorded bitstreams), RDS Surveyor now automatically detects if signals are inverted (0/1 inversions). For instance, inversions may happen with sound cards, depending on the hardware used.
  • Improvements to TMC/Alert-C. Not complete yet, GUI will come next.
  • Fixed a bug that caused heavy system load while playback.
21 Apr 2010
Release of RDS Surveyor version 0.5. This version includes a bunch of improvements, most of which have been on the SVN for a while:
  • Support for the deprecated RBDS-only 15A group (spotted current uses in France!)
  • New command-line argument to invert bit data for bit readers (bit polarity seems to be dependent not only on your custom-built hardware, but also on the sound card used...)
  • LiveAudioBitReader now ignores spurious clock transitions that caused bit slip (occasionally on some hardware, much more frequently on other hardware). The issue seems to be solved now
  • Preliminary support for the USBFMRADIO radio-on-USB-key from Silicon Labs. However it needs a non-included DLL. I'm working on making the DLL available
  • Improvements to TMC/Alert-C (no GUI yet, though)
  • Improved radio paging (A/B flag, interval numbers, 4A group)
  • GUI: visual representation of received groups
  • GUI: improved radio paging, now displays intervals
  • GUI: preliminary support for reader-dependent toolbars
Also, the license was changed to the LGPL.
21 Jan 2010
Release of RDS Surveyor version 0.4. This version adds a preliminary GUI in place of the old text-only window. This GUI supports:
  • most basic RDS features
  • EON: complete information displayed in a tab
  • Radio Paging: displays the list of received messages
20 Dec 2009
Release of RDS Surveyor version 0.3. This version adds a few features:
  • correct handling of non-ASCII characters (in standard alphabet)
  • implementation of PTYN
  • implementation of ECC
  • implementation of Language codes
  • support for 1A groups, variants 1 and 3
  • possibility to bypass the stream-level decoder, and directly feed the group decoder
6 Dec 2009
Release of RDS Surveyor version 0.2. This version comprises a few fixes and improvements:
  • Support for a new sample input format, for files consisting of a long string of '0' and '1' characters (-inbinstrfile argument)
  • Added a proper implementation of AF method B
  • Fixed a bug in EON handling (occurred in variant 12 of group 14A), when transmitting linkage information of the tuned network
  • Basic algorithm for extracting the station name in case of (non-standard) dynamic PS
  • Basic algorithm for reconstructing messages transmitting using (non-standard) dynamic PS
  • Experimental "segmenter" functionality (-segment) that displays a short list of the successively tuned stations in a stream of RDS data.
27 Nov 2009
Release of RDS Surveyor version 0.1. Despite the alpha status of the software, it is usable already. A few samples are available on the web site, so that anybody can test RDS Surveyor.
22 Nov 2009
Several new features: implement the RT+ (Radiotext Plus) ODA, implement group 15B, better handle RT with missing blocks, support the “mapped AFs” method for EON, always log live input (not to miss anything!).
15 Nov 2009
The website is online! There is no file release yet, but the source code in the Subversion repository works really fine for me.

© Christophe Jacquet (contact: <MyFirstName>.<MyLastName>@gmail.com). Impressum (Mentions légales). Last modified on 2024-10-16.