Experiments with RadioDNS
Hi. I'm a software engineer in RAD and I've been doing some work on 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 , 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 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 ³ÉÈËÂÛ̳ 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 ³ÉÈËÂÛ̳ Radio 1, broadcast on , 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 , 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 . 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 = 194.70.58.122
Visualisation using RadioVIS
The RadioVIS protocol is an extension of the , which can be served by a such as . In order to demonstrate RadioVIS within the ³ÉÈËÂÛ̳ 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 , 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.
SUBSCRIBE
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>
Example:
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>]
Example:
MESSAGE
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 GUI library and Jason R. Briggs's 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 .
Thanks to Sean O'Halpin and Giacomo Schimmings from ³ÉÈËÂÛ̳ 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.
Comments