[Windows Mobile Software Development] flywhc:
Microsoft hasn't defined a tuner API for Windows Mobile platform (yet) and manufactures such as HTC do not publish their API for FM radio.

GFMAPI is an FM Radio interface that designed to be used on different models of Windows Mobile devices.

It makes all FM RDS based applications such as Radio players, Radio Alarm, TMC navigation works on different devices.

[size=+2]What's new?[/size]

Download EtenTest and GFMAPI 1.0.

Currently it works with M900 and M800, tested with PowerRadio and hyperGPS.

This is for Eten/Acer devices only.

[size=+2]End-User and application developers[/size] (Downloads)

User should try to use the GFMAPI in the application package because it may need to signed with privileged certificate and version of interface may be different.

App Developers can find FMAPI.h and a test application APITest in the GFMAPI for HTC devices 1.6. Source code is included to help your development.

The interface is defined in C language with sample code.

Thank for NetRipper made a .Net CF library for GFMAPI.

Note: the latest FMAPI.h is in GFMAK and the GFMAPI will be updated. They only has minor differences.

[size=+1]Supported Devices[/size]

* BRF6350 Chipset:

HTC Diamond, HTC Raphael (not CDMA), HTC Blackstone, HTC Polaris, HTC Topaz, SE Xperia X1

NOTE: if your X1 has new media panel that integrated with FM Radio function, you may have to disable this panel (I don't know how).

Download GFMAPI for HTC devices 1.6

* BCM432x Chipset:

HTC Rhodium, HTC Leo, HTC Mega

Supports radio functions if renaming FMSDKWrapper.dll to FMS_API.dll with the above driver. RDS data cannot be received.

We are working on this device. Related thread: FM Transmitter on HD2

* SI470X Chipset:

HTC Artemis: NOT supported.

Samsung Omnia: Samsung i9x0 Omnia

Samsung Omnia II: GFMAPI.dll for Omnia II and its Cab format This is an excellent work done by phjz.

Eten/Glofiish/Acer M800/M900/V900/X900/X650/S200: see "what's new". Please help me test it.

[size=+2]Device adaption developers[/size]

Generic FMAPI Adaption Kit will help you implement the driver for your device. Use APITest in the GFMAPI to test your driver.

Please read readme.txt in the package. Feel free to ask me if you need help.

If you have a device that is not supported by GFMAPI

I currently only have a HTC Raphael so I need your help to get your device supported.

First of all, you should Search in this Thread to check anybody posted it before.

Extract FM radio related files and upload to the forum.

Note: You cannot simply copy files from/to device. You need dump the ROM then extract files from the ROM. Search this forum to find how.

If you have good VC++ and IDA pro with ARM skills, please join us to discover FM Tuner API on those devices then make RDS application working on your device.

* HTC Rhodium/TP2, HTC Leo/HD2, HTC Mega/Touch2:

http://xdaforums.com/showpost.php?p=5120404&postcount=783

http://xdaforums.com/showpost.php?p=5221677&postcount=813

http://xdaforums.com/showpost.php?p=5143989&postcount=794

Rhodium Test

Current status: 6Fg8 identified that raw RDS data is in the Broadcomm BTTray process, not in the FmRadioSDK.DLL. Still not trace it down to function/module level.

* Artemis:

Artemis Test

Far far away from any progress and not many users.

BBCBBA uploaded FM radio related file for Gigabyte GSmart S1200. This device supports RDS by using deviceIoControl directly communicating with the driver. I can see it is possible to make a GFMAPI driver just need a lot of effort.

Applications based on GFMAPI

* FM TMC driver for navigation: Beember's HyperGPS.

* A powerful RDS FM Radio application: 6Fg8's Power Radio

This project focuses on RDS API now. TMC related topic has been moved to the TMC thread because it is too attractive and posts will flood the thread.

Origin research project

Many people ask questions related to FM radio in the forum have been solved by this project:

* Does FM Radio supports RDS text and traffic information?

* Does FM Radio supports more than 20 saved channels and give a friendly alias, such as "BB Radio 4" rather than 920.2MHz ?

* Does FM Radio supports automatically or manually change frequency when signal getting pool during traveling?

* Does FM Radio support RDS-TMC traffic information for navigation system?

The answer is yes. The Bluetooth/FM radio chip BRF6350 on your phone is very powerful but HTC FM radio only provides basic functionality.

Unfortunately HTC doesn't publish FM Service API to us.

So I disassembled FM player by using IDA pro and know usages of FMS api.

After a week sleepless night, I wrote my FM radio tool, xFMRadio, utilizes most functions provided by FMS API, provides RDS and other data for further research.

With help from this thread, we have exposed most secret of FM and RDS system on HTC devices and we can make useful applications now.

This application is written for research so that UI is not nice. It only works on BRF6350 based HTC devices.

Download xFM Radio v0.4

If doesn't have sound on your device, try xFM Radio v0.4B, which removed audio volume initialization.

Brief user guide for xFMRadio

Default settings: Audio Source: 1 (earphone), RDS =1, Verbose =1, AF = 1. ( but I don't know if automatic AF is working. have to verify during long distance traveling.)

Verbose: 0 -no log; 1 - status only; 2 - TMC raw data; 3 - all types of log

Row 1: Input argument. Set Frequency in KHz, AF list: alternative frequencies for the current station.

Row 2: Frequency, station name, Band: World/Japan - use this to listen police station etc

Row 3: Signal Strength, Stereo/Mono, UTC Date/Time (update once per min if supported)

Row 4: -100KHz, Previous Channel, Next Channel, +100Hz, Mute, Mono/Stereo

Row 5: Headset/Speaker, De-emphasis, Stereo blend

Row 6: Radio Text

Row 7: status such as Music/Speech, TP, TA, PTY, TMC etc

Check if the channel support TMC: ROW 7 should display [TMC]. You can see TMC data by setting the top left input box to 2, and click on Menu->Verbose.

The current xFMRadio v0.4 does not display RDS raw data anymore.

You can use Save log menu to save log data.

FMS API version is displayed in the About dialog. Mine is 1.2.

xFMRadio 1.4 Debug

Please Buy me a cup of tea here. :)

Thanks donators for supporting this project. Please leave message in paypal with your forum ID if you prefer to have your ID in the list.

auxaux _________________ 3 Apr

IBX1 ___________________ 6 Apr

dunkelfalke _____________ 13 Apr

torpie13 _______________ 18 Apr

stepan1117 ____________ 18 Apr

pelroig _________________ 22 Apr

EMERSON VIER (name) ____ 2 May

David Przypadlo (name)___ 2 May

jackleung ______________ 6 May

Tobbi __________________ 6 May

quserdy ________________ 6 May

Ido Werkhoven (name) ____ 7 May

mhemart ________________ 8 May

Herbert Kegel (name) _____10 May

Wolfgang Nitzsche (name)_ 10 May

Volker Kirchner (name)____ 14 May

PWJ Cremers (name) _____ 15 May

Michael Varga (name) ____ 18 May

GJAman________________ 04 June

Michael Schaden (name) __ 06 June

Robert Bredereck (name) _ 07 June

Carlos Talegon Alonso (name) 09 June

Tintin _________________ 19 June

Thom Rietbergen (name) ___28 June

Stefan Popov (name) _____ 28 June

José Malpica (name) ______ 08 July

Schmeichler _____________ 02 Aug

glueckimunglueck _________ 03 Aug

Mathias Adler (name) ______ 07 Aug

Jens Weber (name) _______ 22 Aug

hansi ___________________ 22 Aug

bmhvanbenthum __________ 03 Sep

Daniel Sieberth ___________ 14 Sep

erups ___________________ 8 Nov

Ruut Brandsma (name) ____ 14 Nov

Markus Muszeika (name) ___ 28 Nov

MacNett1 _______________ 30 Nov

boiacchi ________________ 21 Dec

Eldarik _________________ 26 Feb

Part of donations I have given to other contributors of RDS-TMC navigation system as I pledged.