Traffic Message Channel (TMC) FM (USA) demystified
Sep 12th, 2008 by dmess0r
Brief Background on R(B)DS
Traffic Message Channel, or TMC, is a method, or technology by which traffic data is delivered to receivers which then convert this data to pertinent, geographic-based traffic-information. While there are a handful transmission methods on which TMC is delivered such as XM and MSN Direct, the only one I will cover today is the FM based method: Radio Broadcast Data System.
Radio Broadcast Data System (RBDS) is the official name in the USA for Radio Data System, the communications protocol from the European Broadcasting Union. One of the only differences, minor as it is, is the numbering system assigned to the 31 formats. More detail on RDS may be found in European Standard 50067.
The third harmonic of the pilot tone of stereo FM (19 kHz), 57 kHz, was chosen as the subcarrier to carry data at 1187.5 bps, or a clock frequency of 1.11875 kHz. There also is a maximum deviation of +/- 0.125 bps. The third harmonic was chosen to avoid any interference with stereo or its second harmonic, the stereo difference frequency of 38 kHz.
The amplitude of the wave is decoded as binary, the resulting data is essentially square. A very simple 1/0 implementation.
The “Block” is the smallest unit of data in an RBDS transmission with 26 bits. The first portion of the Block structure is the “Data”, comprising of 16 bits. The second, the “Checkword”, comprising of 10 bits.
[ Data (16bits) ][ Checkword (10 bits) ]
The Checkword is a checksum against the Data included in the Block to assist in error protection.
A “Group” comprising of 4 Blocks is 104 bits wide.
[ Block 1 ][ Block 2 ][ Block 3 ][ Block 4 ]
Block 1 contains:
[ PI Code ][ Checkword ]
The PI Code is the Program Identifical code which uniquely identifies the transmitting radio station.
Block 2 contains:
[ Group code ][ B0 ][ TP ][ PTY ][ 5 bits ][ Checkword ]
Block 3 contains:
[ Data ][ Checkword ]
Block 4 contains:
[ Data ][ Checkword ]
The group code identifies the type of message as RDS, such as 8A (RDS-TMC). B0 is the code for the version, a ‘0′ for RDS version ‘A’, or ‘1′ for RDS version ‘B’. TP stands for Traffic Program and identifies whether or not the station is able to send traffic announcements (TA). We don’t care about TA. PTY is used for describing the Program Type.
For a comprehensive view of the RDS data structure, refer to RDS Basics by 2wcom.
TMC
Traffic Message Channel is one of many information fields contained in RBDS and is described in detail in 14819-1. It is digitally encoded, contains traffic data and is processed with the Alert-C protocol. The data broadcast supports only very lightweight encryption for commercial services and is described in 14819_6.
RDS-TMC (TMC) data is transmitted in group 8A. Pulled from ISO 14819-1, here is the structure of 8A:
Block 1 contains:
[ PI Code ][ Checkword ]
The PI Code is the Program Identifical code which uniquely identifies the transmitting radio station.
Block 2 contains:
[ Group code ][ B0 ][ TP ][ PTY ][ T ][ F ][ DP ][ Checkword ]
Group code through PTY is the same as listed above in the RDS specification. T, F, and D are used together to indicate whether this is part of a Multi Group message. TFD = 001 indicates that this is the first group in a sequence, or TFD = 000 indicates that this group is NOT the first. DP stands for ‘duration’ and ‘persistence’, essentially indicates the timeframe related to the traffic event so that the decoder knows whether or not this event is ‘fresh’.
Block 3 contains:
[ D ][ PN ][ Extent ][ Event ][ Checkword ]
D indicates whether or not diversion advice is necessary. PN stands for ‘positive’ and ‘negative’, which indicates in which direction of the queue events and is opposite to the road direction. Extent indicates the ‘extension’ of the even and is measured by Location Table entries. Event, the second longest code is cross-referenced against a lookup-table in the Event Code table.
Block 4 contains:
[ Location ][ Checkword ]
Location, the longest code is cross-referenced against the Location Table database.
Event Codes
If you’re interested in the Event codes, you should check out 14819-2. There are some pretty interesting codes you’ll notice. There are some pretty basic ones, such as, Line 37 “traffic congestion, average speed of 10 km/h”, or Line 154 “closed ahead. Stationary traffic for 4 km”. There also are codes which are geographically specific such as Line 1128 “bull fight”, or Line 1129 “cricket match”.
Hacking
Andrea Barisani and Daniele Bianco of inversepath.com back in 2007 wrote up an article for Phrack on just this subject. Also at the Telemobility Conference back in 2007, they presented this talk.
Practical usage for the US
So what does all of this mean for the average Joe in the US. It is important to know that at the time of this writing, RDS-TMC is not embraced like you’d think it SHOULD be. It is a fantastic system and it is gaining momentum but it is not available everywhere you go. The official site for the US is realtimetraffic.net and this site contains the most current information regarding information for the US. This Station Listing of RDS-TMC channels in the US will give you an idea of the coverage in the US thus far.

