[APP][17FEB10]RDS FM Radio R&D: Get radio text, Alt Freqency, free TMC etc

Search This thread

sebi112

Senior Member
Mar 9, 2005
198
9
listen to police and so on

Can you make your software to listen to police or firefighters.
The frequenzes are near to ukw. like 86.375 ore 85.255
 

sc00basteve

Senior Member
May 2, 2008
228
15
like iTrip??

I know you made some serious work on capturing FM frequencies, and thank you.
With all your new knowledge from digging around the FM for this chip... do you think a program for transmitting music through the FM chip is possible (like those ipod itrip modules).
Just curious... wireless is pretty convenient.
 

SaBo

Senior Member
Sep 26, 2005
765
8
I know you made some serious work on capturing FM frequencies, and thank you.
With all your new knowledge from digging around the FM for this chip... do you think a program for transmitting music through the FM chip is possible (like those ipod itrip modules).

HTC devices have a hardware FM receiver, not a transmitter (which is just the opposite).

Sascha
 

torpie13

Senior Member
Apr 18, 2007
177
0
Paris
Hi flywhc,

Thanx for your hardwork.

I think you should focus first your api on the FM Radio Stations services you talked about, ie AF, RT PS ...etc.

I know, everyone wants TMC, but for a first version you have to make things simple :)

If you accept donation just tell us :) (even If apple pays well :) )

Cheers
 

johnpatcher

Senior Member
Jan 5, 2008
913
8
GNS TMC protocol (=gpstmc.dll) is supported by a much longer list of navigation systems than openTMC
No argument for me, but as I already said this isn't important yet.

Back to topic: In order to get the maximum RSSI level you could try to put a FM transmitter next to your device. Normally FM transmitters outdo even the reception of the "normal" stations, so this could be a way.
 
Last edited:

Kovacs Bela

Member
Aug 13, 2007
12
0
Ask cooperation to provide tmc driver

Hi,

I would like to solve a missing important feature from NavNGo iGO 8 navigation software: TMC support on HTC devices from internal RDS capable radio.

The missing component is an interface between the navigation software and the rds radio.
Now it seems you know how to access the rds data from the radio. I have information how is it possible to feed the navigation software with this data.

I would like to ask you is it possible to cooperate with me in this solution?

Many thanks!

Regards,
KB
 

flywhc

Retired Recognized Developer
Jan 6, 2005
354
0
London, UK
sebi112: Yes, you may listen to police or firefighters PPT with the latest version. Try Japan band.

torpie13 thanks for your support. I 've setup a donation account. And you said what I want to say: I can't do TMC before simple things are done.

Kovacs Bela: Yes I like to work with everyone to provide TMC solution if that is possible.

But I cannot separate TMC data from raw RDS data right now.
Even I am not clear the rule to extract PS, PI, AF etc from raw data.

If you have TMC knowledge, maybe you can try to get raw RDS data for a FM station that broadcasting TMC data, and guess what is the format.
I only guess each data packet is 3 bytes long. PI is present every 12 bytes (maybe 24 bytes)


I am confused when comparing the log with RDS tech spec.
This raw RDS data format must be HTC specific or chipset specific. Do you know which chipset HTC use for FM radio? Any document/user guide for that chipset?

I am starting digging out FMS.dll. It is a device driver/service so even harder to be understood.
 

flywhc

Retired Recognized Developer
Jan 6, 2005
354
0
London, UK
kolomparrudi, Thanks that is a very good presentation for RDS system.
I think it is too hard to start from TMC.
It might be much easier comparing known decoded data such as AF, RT, PI etc with raw data and guess the format. Even that is hard to me. It likes a puzzle but obviously can be solved if you are good at math.
This is the blocker of this project.

johnpatcher, download the latest version, click on 87.5-108 World and select Japan.
 

kolomparrudi

Senior Member
Jan 22, 2008
76
11
decode RDS

I managed to decode the raw RDS-TMC output of the xfmradio and the perl script helps me understanding the whole rds:

An RDS frame structure is the following:
16 bit PI (Programme Identification, unique channel ID)
10 bit checksum for PI (called sumA)
4 bit Group type code
1 bit Group type version
1 bit TP (Traffic Program)
5 bit Programme Type
5 bit b2
10 bit checksum for b2 (sumB)
16 bit b3
10 bit checksum for b3 (sumC)
16 bit b4
10 bit checksum for b4 (sumD)

The group type code + version (5 bit) determines the group type:
$grp{'00000'} = "0A - Tuning";
$grp{'00001'} = "0B - Tuning";
$grp{'00010'} = "1A - Item Number";
$grp{'00011'} = "1B - Item Number";
$grp{'00100'} = "2A - RadioText";
$grp{'00101'} = "2B - RadioText";
$grp{'00110'} = "3A - ODA ID";
$grp{'00111'} = "3B - Open Data";
$grp{'01000'} = "4A - Clock/Time";
$grp{'01001'} = "4B - Open Data";
$grp{'01010'} = "5A - TDC / ODA";
$grp{'01011'} = "5B - TDC / ODA";
$grp{'01100'} = "6A - Open Data";
$grp{'01101'} = "6B - Open Data";
$grp{'01110'} = "7A - Radio Paging";
$grp{'01111'} = "7B - Open Data";
$grp{'10000'} = "8A - TMC";
$grp{'10001'} = "8B - Open Data";
$grp{'10010'} = "9A - Emerg / ODA";
$grp{'10011'} = "9B - Open Data" ;
$grp{'10100'} = "10A - PTN";
$grp{'10101'} = "10B - Open Data";
$grp{'10110'} = "11A - Open Data";
$grp{'10111'} = "11B - Open Data";
$grp{'11000'} = "12A - Open Data";
$grp{'11001'} = "12B - Open Data";
$grp{'11010'} = "13A - Radio Paging";
$grp{'11011'} = "13B - Open Data";
$grp{'11100'} = "14A - Net Info";
$grp{'11101'} = "14B - Net Info";
$grp{'11110'} = "15A - RDBS";
$grp{'11111'} = "15B - Switching Info";

example from hungarian radio (94.8), PI: B201 =

Here is an RDS frame:
B2 01 20 05 EF 21 E8 40 22 49 20 24
We have to work in binary, because not everything is 1 byte long.

kolomparrudi
 
Last edited:

kolomparrudi

Senior Member
Jan 22, 2008
76
11
Missing one byte?

Is is possible that one byte is missing from the RDS message? It should be 13 bytes, but the one I captured has only 12. It's easy to identify, because the first two byte is the PI, and every 12. byte is the PI.
 

flywhc

Retired Recognized Developer
Jan 6, 2005
354
0
London, UK
Excellent kolomparrudi.

You forgot mentioning type B, chunk C' is PI again, same as chunk A.

That is what I said, at least 1 byte, or actually 2 bits missing from each chunk.
and I don't think that 8 bits after each 16 bits data are checkword+offset as RDS specification. It must be HTC or chipset specific identifer.

Look at my reply #18 and #20 I had post some analysis. It is very easy to identify PI, RT, PS, maybe even AF. but I can't say what is that byte before or after that 16bits data.
Especially my post #20, string !YO"U and that !LI"ST, they don't have PI or other control data between two 16 bits data. clearly they are 3 bytes in a data chunk, not 16+10 bits like RDS spec.


I can write a function that output binary file but it will be harder to compare with other decoded data such as AF, RT etc.
 
Last edited:

Kovacs Bela

Member
Aug 13, 2007
12
0
iGO TMC driver

Hi flywhc,

Yes, IT IS POSSIBLE! :)

There are 2 opportunity to provide TMC driver for iGO:

1. more complicated: implement opentmc standard; make it accessable thought a COM port. Link for the documentation: http://www.locosystech.com/download/oem/Open TMC V2.00-1.02pdf.pdf

2. easier: implement the following functions in a dll:
-Search UP/Search Down
-Set/Get frequency
-RDS health get
-RDS data get
-Reset hardware
-Power On/Off
-RDS function ON/OFF
-Band select

If you choose the second option:
Just send the dll with a header file, and I can help to work this dll with iGO.

Thank your help.

The TMC packet coding in RDS stream described in ISO 14819-1 standard. I found one pdf with google: http://www.sirim.my/iscg/tc_g_3/14819-1.pdf

Have nice day,
KB

...

Kovacs Bela: Yes I like to work with everyone to provide TMC solution if that is possible.

But I cannot separate TMC data from raw RDS data right now.
Even I am not clear the rule to extract PS, PI, AF etc from raw data.

If you have TMC knowledge, maybe you can try to get raw RDS data for a FM station that broadcasting TMC data, and guess what is the format.
I only guess each data packet is 3 bytes long. PI is present every 12 bytes (maybe 24 bytes)


I am confused when comparing the log with RDS tech spec.
This raw RDS data format must be HTC specific or chipset specific. Do you know which chipset HTC use for FM radio? Any document/user guide for that chipset?

I am starting digging out FMS.dll. It is a device driver/service so even harder to be understood.
 
Last edited:

kolomparrudi

Senior Member
Jan 22, 2008
76
11
RDS

I did some investigations and it seems, this HTC RDS has 8 bit checkwords.
I modified the srdsd decoder to word with 8 bit checkwords and it seems to give good results:

Got RDS message (frame 1)
Programme Identification: 1011001000000001 (b201)
Group type code/version: 0000/0 (0A - Tuning)
Traffic Program: 1
Programme Type: 01111 (15 - Other Music)
Decoded 0A group:
Traffic Announcement: 0
Music Speech switch: 0
Decoder Identification control: 111 (Stereo / PS char 7,8)
Alternative Frequencies: 01110001, 01001100 (98.8, 95.1)
Programme Service name: 0100100100100000 (I )
Collected PSN: I

Raw dump | Data Checkword Hex
Block 1: | 1011001000000001 00100000 b201
Block 2: | 0000010111101111 00100001 05ef
Block 3: | 0111000101001100 00100010 714c
Block 4: | 0100100100100000 00100100 4920


for a TMC event:

Got RDS message (frame 12)
Programme Identification: 1011001000000001 (b201)
Group type code/version: 1000/0 (8A - TMC)
Traffic Program: 1
Programme Type: 01111 (15 - Other Music)
Decoded 8A group:
Bit X4: 0 (User message)
Bit X3: 0 (Multi-group message - first group)
Continuity Index: 010
Direction: 1 (-)
Extent: 100 (4)
Event: 00111101101 (493 - restrictions)
Location: 0001000000110011 (4147)
Decoded Location:
<no location table specified>

Raw dump | Data Checkword Hex
Block 1: | 1011001000000001 00100000 b201
Block 2: | 1000010111100010 00100001 85e2
Block 3: | 1110000111101101 00100010 e1ed
Block 4: | 0001000000110011 00100100 1033