« Previous | Main | Next »

Experiments with RadioDNS

Chris Needham | 09:09 UK time, Monday, 16 February 2009


Hi. I'm a software engineer in RAD and I've been doing some work on RadioDNS which I'd like to share with you. As James Cridland and Nick Piggott explain in their article, RadioDNS - making your radio more intelligent, RadioDNS represents a way for broadcasters to provide an enhanced radio listening experience through a new set of internet services, which can be used by any AM, VHF/FM, or DAB radio that also has an internet connection or with internet streaming radio. These services include RadioVIS, which allows display of an image slideshow and text messages, RadioEPG, which provides an electronic programme guide, and RadioTAG, which allows the listener to tag or bookmark radio content, or give feedback directly to the radio station. The RadioDNS specifications, currently under development, are open for all device manufacturers and broadcasters to use, with a view towards future standardisation.

Radio Station DNS Lookup

A radio station broadcasting on FM includes digital data in the form of RDS that allows the radio receiver to identify the station and display the station name. As an example, the following example shows the station information broadcast for BBC Radio 1. The PI and ECC codes are obtained from the RDS data.

Extended Country Code (ECC) ce1
Programme Identification (PI) c201
Frequency 98.80 MHz

For BBC Radio 1, broadcast on DAB Digital Radio, the station identifier information is:

Extended Country Code (ECC) ce1
Ensemble Identifier (EId) ce15
Service Identifier (SId) c221
Service Component Identifier within the Service (SCIdS) 0

RadioDNS describes how these parameters can be used to construct a fully-qualified domain name (FQDN) that identifies the station, in this case 09880.c201.ce1.fm.radiodns.org for FM, or 0.c221.ce15.ce1.dab.radiodns.org for DAB. A DNS lookup returns the canonical name (CNAME) for this FQDN:

nslookup -type=CNAME 09880.c201.ce1.fm.radiodns.org

Non-authoritative answer:
09880.c201.ce1.fm.radiodns.org canonical name = bbc.co.uk

Availability of services is advertised through the use of DNS SRV records, as shown in the following table:

Service SRV record
RadioVIS (Visualisation) _radiovis._tcp
RadioEPG (Electronic Programme Guide) _radioepg._tcp
RadioTAG (Tagging) _radiotag._tcp

Capital FM have a RadioVIS visualisation service available for use with their iPhone client. To access this, we construct the appropriate FQDN from the RDS data and broadcast frequency: 09580.c586.ce1.fm.radiodns.org. The CNAME is found by DNS lookup to be vis.media-ice.musicradio.com, and a service record query against this hostname shows that the RadioVIS service is available at vis.musicradio.com, port 80.

nslookup -type=SRV _radiovis._tcp.vis.media-ice.musicradio.com

Non-authoritative answer:
_radiovis._tcp.vis.media-ice.musicradio.com SRV service location:
priority = 0
weight = 100
port = 80
svr hostname = vis.musicradio.com

vis.musicradio.com internet address =

Visualisation using RadioVIS

The RadioVIS protocol is an extension of the Streaming Text Oriented Messaging Protocol (Stomp), which can be served by a message broker such as Apache ActiveMQ. In order to demonstrate RadioVIS within the BBC I set up a local RadioVIS server for Radio 1 and developed a client application to display the content.


The server uses ActiveMQ running on Ubuntu, with content from the DAB LiveText feed for Radio 1 and the trial DAB slideshow service. The server provides two topics that clients can subscribe to, one for text messages and one for image URLs, which allows the client to be able to choose which notifications to receive. The topic names are constructed from the same station identification broadcast parameters we already used to construct the station FQDN, so for Radio 1 FM these would be:

Text messages /topic/fm/ce1/c201/98.80/text
Images /topic/fm/ce1/c201/98.80/image

After establishing a connection, the client sends a SUBSCRIBE Stomp message to subscribe to a topic.

destination: /topic/fm/ce1/c201/98.80/text
ack: auto


Once subscribed, the client then periodically receives text messages and image URLs from the server, in the form of Stomp MESSAGE frames, where the body of the message body contains the specific message.

Text Messages

The TEXT message is used to display text on the radio receiver, such as programme and presenter names, or currently playing song and artist. Messages can be up to 128 characters in length.

TEXT <message>


destination: /topic/fm/ce1/c201/98.80/text
message-id: ID:radiovis-50431-1232528810717-4:6:-1:1:1741

TEXT On air now: The Chris Moyles Show^@

Slideshow Images

The SHOW message is used to display slideshow images. The message contains the URL of the image, which the client can download via HTTP, and optional hyperlink URL to be associated with the image. If given, the trigger_time indicates when the image should be displayed, or NOW to display immediately.

SHOW <image_url>[,<link_url>] [<trigger_time>]


destination: /topic/fm/ce1/c201/98.80/image
message-id: ID:radiovis-50431-1232528810717-4:6:-1:1:1742

SHOW https://localhost/slide.jpg,https://bbc.co.uk/radio1/ NOW^@

The RadioVIS demo application was developed in Python, using the wxWidgets GUI library and Jason R. Briggs's stomp.py module. We are planning to release this application as open source software soon.

For more information about RadioDNS, or to join the RadioDNS developer discussion group, please visit https://radiodns.org.

Thanks to Sean O'Halpin and Giacomo Schimmings from BBC Audio and Music, and Nick Piggott, Andy Buckingham, Adam Fox and Ben Poor at Global Radio for their help during this project.

Chris Needham is a Software Engineer in the RAD team.


More from this blog...

Topical posts on this blog


These are some of the popular topics this blog covers.

BBC © 2014 The BBC is not responsible for the content of external sites. Read more.

This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.