GpsPasSion Partners




- -

Pour vous guider sur la Route :
GPS Mobile (SEM)
GPS Intégré
Voter  -  Résultat des votes
Votes : 2834

Club GpsPasSion
Soutenez le site!

USA: (US$)
Guide Paypal

GpsPasSion Forums
Home | Profile | Register/Enregist. | Active Topics | Search/Recherche | FAQ
Save Password
Forgot your Password?

 All Forums
 Advanced Topics
 Traffic Information (TMC)
 [GUIDE] Decoding the TMC Protocol (GNS°

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert EmailInsert Image Insert CodeInsert QuoteInsert List

* Forum Code is ON
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

  Check here to include your profile signature.
Check here to subscribe to this topic.

T O P I C    R E V I E W
BeamRider Posted - 28 oct. 2004 : 14:34:12
UPDATED 2009 : Detailed information posted by Camomille here on page 2.
Does anyone has specification for the GNS protocol 1.0 or 2.0?
I've done some reverse engineering from a tiny serial log I've found on the net, but I still miss commands from PDS/PC to the GPS unit to initialise and tune station.
I'll be very glad if someone has or can produce a long log file with TMC messages to test my TMC decoder: in my country I've TMC service but with a subtype of TMC messages only and I know that in Germany and UK service is complete.
Many thanks
15   L A T E S T    R E P L I E S    (Newest First)
SandyLake Posted - 01 juin 2011 : 09:05:21
jose-ramon, or anyone else, can you please post a download link for DecoRDS. Thank you.
phmartin Posted - 05 avr. 2010 : 20:59:15
Gpspassion: even if SIRF chips do not have RDS capabilities, devices use some extra $PSRF codes for their own purposes. See examples in my post in Nov. 2008 in this thread.
gpspassion Posted - 03 avr. 2010 : 02:02:26
It seems unlikely as $PSRF stands for "SiRF Proprietary" and I'm not aware of their chips including RDS capability.
rickgtx Posted - 02 avr. 2010 : 15:17:18
Can you tell if this is GNS protocol?
I have a Nokia 500. Initially I thought the TMC was disabled by the manufacturer for the US. When iGo 8 searches it pauses at COM-3 and GNS protocol, but never finds TMC hardware. I never got a response from COM3 until used the FM On command ($PFST,FMON) and got a continuous response with $FM strings and a few $RDS strings like this:

TMC is on Comm Port 3 (COM3:) at 1200 baud.
The command $PFST,FMON starts the TMC responding
The command $PFST,CHANNEL,10590 sets the FM station to 105.9

What do these commands do?
Based on a search in the Smart2Go navigation program these might be the commands to the TMC port:
$PFST, [NEMA | BAND,0 | FMON | SEEK,1,20 | SEEK,0,20 | CHANNEL,xxxxx]
$PLTCM, [V | + | - | H2,x]
$PSRF122 - $PSRF122,95.3 tune to 95.3 MHz? (Didn't work)
$PSRF123 [1,x | 0,x]
$PSRF153, [rds2 | pw1 | reg,>|or|> | frq xx.x]

My WinCE 5.0 device does not support .NET programs even with MioPocket installed so DecoRDS does not work.

Thanks for any information!
grandpa Posted - 05 nov. 2009 : 19:50:29
using iGO on a c710 wich contains an fm4 gns chip.
iGO's FF 56 78 78 56 results in
in: 3F 00 00 56 05 1D 2E 06 05 3F

message FF 43 01 00 43 seems to report the producer:
in: 3F 47 4E 53 20 47 6D 62 48 3F (GNS GmbH)

iGO tunes with message FF 59 01 01 59 and gets two lines in response
in: 3F 00 00 59 00 6F 6B 00 00 3F
in: 3F 00 00 66 02 01 55 00 00 3F
The fifth byte of the second message (02) is the frequency igo tunes next to, after CC the value is 00.

When manual tuning is used iGO tunes with FF 73 52 05 73 reply is
in: 3F 00 00 73 52 01 55 00 00 3F
L_o_k_i Posted - 14 août 2009 : 13:34:41
To scan down, starting from xx:

command: FF 78 xx 01 78
answer: 3F 00 00 78 00 6F 6B 00 00 3F (to be confirmed!)
when scan stops: should be the same as scan up

This command has been found in Navigon.
beemer Posted - 30 juil. 2009 : 16:50:19
What I've found and tested about GNS with iGO and Navigon.

FF(or 0x3F) 56 78 78 56
answ:3F 00 00 56 05 11 2D 07 03 3F
Unknown meaning of fields 4-8 (05 11 2D 07 03) ?
Two differnet answer found in real TMC device logs:
3F 00 00 56 05 11 2D 07 03 3F iGO
3F 00 00 56 06 07 30 08 03 3F José Ramón

FF(or 0x3F) 53 78 78 53
-Dont answer, only empty buffer

FF(or 0x3F) 46 xx 05 46 Used by iGO
FF(or 0x3F) 46 xx 78 46 Used by GNS Test
FF(or 0x3F) 73 xx 78 46 Used by DecoRDS
Answ: 3F 00 00 46 xx yy zz 00 00 3F
xx = (char) dwCurrentFrequency / 100 - 875 ;
yy zz = (Not sure).
00 00 if there are no station
01 55 if there are station with or without RDS or TMC

FF 79 xx 01 79 scan from xx up
xx = (char) dwCurrentFrequency / 100 - 875 ;
Inmediate answer: 3F 00 00 79 00 6F 6B 00 00 3F
Answer when scan stop: 3F 00 00 66 ww yy zz 00 00 3F : Stoped on ww with yy zz result
yy = (char) dwCurrentFrequency / 100 - 875 ;
yy zz = (Not sure).
00 00 if no station found. Continues scanning automatically
01 55 if there are station with or without RDS or TMC

RDS/TMC messages
3F aa bb cc dd ee ff gg hh 3F
aa-hh Four RDS data blocks RDS

Hope helps in a future to someone. HyperGPS TMC virtual driver is based on this and works fine.
beemer Posted - 11 mai 2009 : 17:17:56
This thread has been very useful for me developing HyperGPS ( )that is currently capable of comunicating with iGO 8 in royaltek mode from an HTC PDA FM radio reciver based on flywhc@xda-developers user FM API, but I wonder if you have more deep information on Royaltek and/or GNS protocols.

For example, that information from user phmartin, does somebody have completed it a little more?
$RTRDS provides tuning information; the format is
p1 is the tuned frequency (readable text)
p2 is the signal level, 0 to 15 (readable text)
p8 is the "block ratio", 0 to 100% (readable text). "block ratio" is the name used in the demo s/w ref. [5]
I dunno what the other parameters are supposed to mean

The idea is to make HyperGPS as compatible as I'll can with GNS and royaltek protocols.


BeamRider Posted - 25 mars 2009 : 10:57:14
What about OpenTMC standard? It "should be" pretty well documented because but I can still find only Anaryllo docs like:

That's more than enough to decode TMC on those devices. Is there someone that has such a device that can provide logs? (there are some blind spots to clear in the document)
phmartin Posted - 04 nov. 2008 : 23:33:51
The following is based on my experience with the Bluetooth GPS-TMC receiver Royaltek RTG-2000
I used the following references:
[1] SiRF Binary Protocol Reference Manual and SiRF NMEA Reference Manual
[2] Specification of the radio data system (RDS) for VHF/FM sound broadcasting in the frequency range from 87,5 to 108,0 MHz, European Standard EN 50067
[3] Coding protocol for Radio Data System — Traffic Message Channel (RDS-TMC) using ALERT-C, International Standard ISO 14819-1
[4] GPS Diagnostics V1.05 by CommLinx Solutions -PC freeware
[5] Royaltek TMC demo software for Pocket PC -PPC freeware

As indicated by Jose-Ramon in his post 3-3-2008 (point 7) the sentences are inserted between NMEA sentences.
All sentences (sent and received) start with $ and end with * followed by a checksum (checksum is defined in ref [1])

Three types of sentences are sent by the receiver: $PSRFTXT, $RTRDS, $RTTMC.

$PSRFTXT followed by a string: this is a text message, directly readable (example: $PSRFTXT,Ack Input...)

$RTRDS provides tuning information; the format is
p1 is the tuned frequency (readable text)
p2 is the signal level, 0 to 15 (readable text)
p8 is the "block ratio", 0 to 100% (readable text). "block ratio" is the name used in the demo s/w ref. [5]
I dunno what the other parameters are supposed to mean

$RTTMC provides RDS messages; according to [2], the RDS protocol defines an RDS message as 4 blocks of 16 bits of data; an RTTMC sentence simply contains one RDS message.
the format is
p1 is the RDS group type (readable text) as defined in ref [2], the most interesting are
....0: basic information
....2: radio text
....4: clock time and date
....8: TMC traffic message channel
....14: EON Enhanced Other Networks
p2 is the Pid (programme identification code) in readable form. The Pid is defined in [2]; it always is the first block of any RDS message
p3, p4, p5 are three 4-character chains containing blocks 2 to 4 of the RDS message in Hexadecimal. Detailed definition of these messages can be found in ref [3] for group type 8 (TMC) and in ref [2] for the other groups.

The following sentences can be sent to the receiver: $PSRFxxx (SiRF binary messages, see ref [1]) where xxx can be 107, 121, 122, 123, 126. The receiver sends in response to sentence 121-126 an acknowledgement sentence $PSRFTXT,Ack Input121*checksum (or an error sentence $PSRFTXT,Nak Input121*checksum).
The purpose of the sentences is the following: (see ref. [5])

$PSRF107*21 Get firmware version. Response (with my device)
>>>>>>>>$PSRFTXT,VersionR: 2K00320101N10151006080906*42
>>>>>>>>$PSRFTXT,RoyalTek Ver GSW3LP EE*74

$PSRF126,0*3F Set scan mode (see ref. [5]) to FM
$PSRF126,1*3E Set scan mode to RDS
$PSRF126,2*3C Set scan mode to TMC

$PSRF123,1,1*27 scan up
$PSRF123,0,1*26 scan down

The receiver will scan until it locks on any transmitter (if scan mode=FM), or until it locks on a station sending RDS messages (if scan mode=RDS), or until it locks on a station sending RDS group type 8 messages (if scan mode=TMC)

$PSRF123,1,0*26 tune up (ie increase the frequency by 0.1 Mhz)
$PSRF123,0,0*27 tune down

$PSRF122,freq*checksum tune to freq
example: $PSRF122,95.3*1B tune to 95.3 MHz
(Note: to perform tests without having to compute the checksums, s/w ref. [4] came quite handy to experiment sending these types of messages)

$PSRF121,p1*checksum still is unclear to me. It seems that sending $PSRF121,0*39 will memorize a Pid and that $PSRF121,1*38 will scan if the current Pid is different from the one in memory. That's an unconsolidated guess for the time being.

So this is where I stand. All questions are welcome. I hope others will pick up from here and complete the interpretation of the $RTRDS and the $PSRF121 sentences....
gpspassion Posted - 03 nov. 2008 : 19:47:29
Sounds good, go ahead !
adonix Posted - 11 mai 2008 : 01:49:22
Helle everyone, i need your help.

I'm trying to create a virtual TMC receiver for my Eten X500 using it's radio module.

Right now, i'm able to receive RDS packets and identify TMC messages. My software will interface with iGO using the Royaltek protocol.

Till now, i managed to send the following sentences to iGO:
$RTTMC,1,e213,1540,00e2,0080*4B : RDS/TMC message
$RTRDS,091.7,0,0,2,1,1,1,000,255,5,0,50*63 : Frequency identifier

iGO detects the vitualTMC, it also gives the channel name and display some RDS text if available. As for TMC, it writes "Test", then "TMC present" then "TMC status N/A" and it cycles these messages.

i noticed that iGO send sentences to the TMC hardware:

i guess that these are tuning signals.

What i need is a log of an Royaltek receiver in order to reverse engineer the protocol. Or, informations on the protocol.

I dunno if Jose-Ramon have some information that helps me.

Thank you very much
Jose-Ramon Posted - 03 mars 2008 : 10:28:46
Thanks to Jose-Ramon for DecoRDS

Hello everybody, I am the creator of the DecoRDS. Let me answer some questions that I have seen in this thread:

1) No manufacturer publishes its communications protocol.

2) The information that I am going to make here, is the result of 'reverse engineer' ... therefore, may contain errors.

3) The GNS protocol, inserted information in binary RDS within chains NMEA GPS (ASCII). The indicator of the beginning and end of the RDS frame, is the character '?' CHR(&h3F)

4) Some receivers GNS must starting to begin insert information RDS within chains NMEA GPS ... others need to receive this information on a regular time (RDS-ON every 3"). Otherwise, non inserting the information RDS.

RDS-ON > CHR(&hFF) + CHR(&h56) + CHR(&h78) + CHR(&h78) + CHR(&h56)
RDS-OFF > CHR(&hFF) + CHR(&h53) + CHR(&h78)+ CHR(&h78) + CHR(&h53)

5) This is the way to tune the RDS receiver, using a GNS receiver:

6) The DecoRDS, detects and operates automatically with 5 different communication protocols.

7) The RoyalTek protocol inserted RDS using commands NOT included in the NMEA standard ($ RTTMC) ... but this makes it compatible with any software GPS, as it never breaks the frames NMEA GPS. This is an example, with the information sent by RDS RoyalTek GPS:


8) The DecoRDS can reproduce files 'log', but these files must be created with a single protocol (one line for each RDS group):

RDS: 16 hexadecimal characters (0 ... F) formatted text
ERROR: 1 character hexadecimal (0 ... F) formatted text to the error control (0 = 0% error / F = 100% error)
CR: 2 characters end line = CHR(&h0D) + CHR (&h0A)

Example, with RoyalTek protocol:

$ RTTMC,0,e213,054f,395e,2020*18
E213 054F 395E 2020 + ERROR (0 ... F) + CR

This is a file 'log', seen with a text editor:


More information here:

camomille Posted - 27 févr. 2008 : 19:37:01

My contribution :

Flux exchange data between "DecoRDS" on x50v and GNS5843 connected with serial port(rxd/txd) .

Scan frequency 87,6 Mhz by step 0,1 Mhz and search on 94,1/94,2/94,3/94,4 (RDS without TMC) and stop on 97,1 Mhz (with TMC).

Log asc in HTML for color
Log Hexa in HTML for color
Log asc in TXT for modify
Log hex in TXT for modify

Short script UltraEdit32 for extract codes RDS with file *_hex.txt :
var msg="";
var rds="";
var targetStr = UltraEdit.document[0];
targetStr.findReplace.regExp = true;
while (targetStr.findReplace.find("(3F.{25}3F|FF.*$)"))
if (msg.substr(0,2)=="3F"){msg=msg.substring(3,27)+" <<<GNS";}
else {msg=msg+" >>GNS";}

Thanks to Jose-Ramon for DecoRDS
VolkerSchulz Posted - 06 oct. 2007 : 15:12:08
Seems to work!

Sending a tuning request to the GPS receiver twice(!) turns on GNS 2.0 and makes the receiver sending both, NMEA and RDS/TMC data.

I do not have a RDS decoder yet, but the receiver starts sending those 10 byte blocks (probably 8 bytes RDS data + the '?' encapsulation).

Starting with either 0x3F or 0xFF seems to work fine.


0x3F 0x46 0x7A 0x78 0x46 0x0D 0x0A 0x3F 0x46 0x7A 0x78 0x46 0x0D 0x0A
turns on GNS 2.0 support and tunes to 99.7 MHz

0x3F 0x46 0x00 0x78 0x46 0x0D 0x0A 0x3F 0x46 0x00 0x78 0x46 0x0D 0x0A
turns off GNS 2.0 support and switches back to NMEA 2.0 only.

Find a HEX to MHz conversion table here:

GpsPasSion Forums © 2002-2017_GpsPasSion/Manzanite Go To Top Of Page
This page was generated in 0,47 seconds. Powered By: Snitz Forums 2000 Version 3.4.05