yashsingh1/xdaforums huggingface dataset:
[Windows Mobile Software Development] flywhc:
I suspected that Bluetooth software provide any FM functions.

I believe that FmRadioSDK.dll is provided by broadcomm to provide the client side driver, and it doesn't provide raw RDS data to applicaiton.

The structure should be:

FM application <-> FmRadioSDK.dll <== IPC ==> BtTrayCE.exe/Drivers.exe <-> ???.dll

It seems message registration functions are wrapped in COM style interface - stored in a VTable that

Function ID1

Function pointer1

Function ID2

Function pointer2

...

and the caller of registration functions is also in a VTable. I hate VTable in IDA pro because X button can't find me callers.

this step can be bypassed if we can find the ???.dll.

Which DLLs also use WIDCOMM_WM_SET_FM_CONFIG?

XVI32 can't search many files in a folder either so I didn't search all files.

But I guess there are many because they all call this class even not use all of messages.

so far I haven't found any export/import functions or logs related to FM in other bt*.DLLs yet. There is another possibility: that ???.dll is not start with BT. dlls loaded by Drivers.dll can be seen from Task Manager->Devices. Don't know how to get dlls loaded by bttrayce.exe
[Windows Mobile Software Development] beemerTPPC:
BtSdkCE50.dll uses WIDCOMM_WM_SET_FM_CONFIG.

But as I'm not an expert in IDA, not sure why I can only see it while the first initial analisys and the dissapear from the string list ;)
[Windows Mobile Software Development] flywhc:
I am not IDA pro expert either.

IDA pro sometimes (almost always) mistakenly interprets string as DB or ARM code; sometimes interprets DB as ARM code.

have to manually convert to string by press A key or clicking on that 's' button for a string; or press D key to a DCB/DCW/DCD

DCD is useful to get pointer to a variable or a function or even a vTable.

I don't know how to let IDA pro automatically re-scan a data region yet so I have to convert them one by one. so progress is very slow.
[Windows Mobile Software Development] boiacchi:
It seems i can't be of any use...:(

Since i can't program in any language and don't know anyone that is willing to do, i've just made a donation.

I really hope it will help make the tmc on M900 works.

Bye
[Windows Mobile Software Development] flywhc:
Thanks for generous donation!

I feel that it should be much easier to support M800/900 to compare with HTC phones because these devices provide a lot of functions related to RDS and TMC.

Only problem is I don't have that device so I can't test what those functions can do.

Even somebody has good VC++ skills would help - I can tell you basic windows mobile and ARM knowledge to work out.

There is another way - contact acer customer services see if they can provide API document for FM.dll in order to get RDS data. Hope they are nice to their customers.
[Windows Mobile Software Development] boiacchi:
You're wellcome, you guys are doing so good and so much for free and there are people getting paid for useless programs, so it is not fair.

Getting back to my hope, you know what i'm talking about :), i have to advice you that i'm a biological and chemical technician, so i have just basic computer skill, but if you think i can learn, i could try... just tell me what i shall know.

I'm trying to contact acer costumer service anyway, i'll keep you up to date.

Regards.:)
[Windows Mobile Software Development] nitrate:
Hey flywhc and beemerTPPC,

are you guys working on a fix, patch or something new to make HyperGPS or any other software work for the HTC HD2 so TMC could be received within MN7?

I just want to know since i'm also interested in the HD2 but still want to wait until HyperGPS will work with the device.

Does anybody know if the Xperia X2 is working with HyperGPS?

Thanks for any information in advance.

Sincerely, nitrate.
[Windows Mobile Software Development] flywhc:
I found the way to get station name from M900 but not raw RDS yet.

Can anyone know Russian help me download the software on this page please?

http://translate.google.com/transla...club.ru/board/paguonpuemhuk-t20277-p-100.html

Thanks

HD2 has same FM radio hardware as TP2 so can't support it. It is possible but extremely hard. Broadcomm bluetooth stack has a very complicated design and there is no device can get raw RDS from this chipset yet. I bet even HTC doesn't know how to get raw RDS data from their phone.

I just googled Xperia X2, it doesn't support FM radio at all?
[Windows Mobile Software Development] L_o_k_i:
@flywhc

See here

I hope someone will find a way to access raw RDS on HD2, now I have one! :) I will have to keep my Touch HD until then!
[Windows Mobile Software Development] nitrate:
But the Xperia X2 also has a head-phone connector which can be used for a TMC antenna as well. The Xperia X1 had the same connector.

Anyway i hope you both will find a way in receiving TMC within the HD2. For me, it's worth a donation to your projects. ;-)
[Windows Mobile Software Development] boiacchi:
Well it's a start!

How do i attach files? i've registeres to that russian forum and downloaded the two files, how do i send them to you?

I don't know if it is userful or not, but till M700 it was possible to use tmc with Igo8 just using this settings in the sys file:

[tmc]

port=1

baud=38400

With the M900 they don't work at all.

Using hyper gps software and selecting Royaltek, igo8 crushes while serching for tmc device, but using GNS it find the tmc device, but enters a loop of, Found----Lost----Found----Lost.

Xperia x2 doesn't have FM radio hardware at all as far as i know.

Happy holiday to you all guys! :)
[Windows Mobile Software Development] flywhc:
Thanks for providing PaguonpueMHuk.

It has SDK with VB.net source code so that I can easily make a GFMAPI for Eten devices soon - I don't have other plan during Christmas - New Year holiday.

It is a good news for Eten M800/M900 users.

I hope we could have a gifted HD2/TP2 user like staderZ and BeamRider (and me). It is much easier for a owner of the device to do this job.

Merry Christmas & Happy New Year!
[Windows Mobile Software Development] harddisk_wp:
If anything is needed, I've got a HD2, lots of time for the next two weeks and basic IDA skills...
[Windows Mobile Software Development] 6Fg8:
Count me in for helping too. I got myself an HD2 recently, awesome device. IDApro and VS up & running. I'll see what i can find out, although some advice would be greatly appreciated.
[Windows Mobile Software Development] Rapid81:
Any chance to this will work on i8000 Omnia 2? The OmniaTMC doesn't works on it and the OmniaTMC's thread doesn't updated since May.
[Windows Mobile Software Development] flywhc:
HD2/TP2:

open FmRadioSDK.dll.

Attached fmradiosdk.i64 files has symbols I defined.

Receive event notification:

RegisterWindowMessage strings start from:

.rdata:100147F8 aWidcomm_wm_stack_loa

just before that, 100147F4 is a pointer to a function to handle FM radio events, so I renamed it to HandleFMEvents.

event ID can be found from 10001DC0 GetBTAGEventID

Set to graph view, branch loc_10001644 is processing RDS data such as PS, RT etc.

Sending request:

address 10001208 I named it as SendBTAGMsg.

request ID can be found from function 10001F00 GetMsgNameFromID

Broadcomm BT driver uses a class MsgQueueUtils to send messages to another process for IPC. This is a client/server design pattern. The driver actually reading RDS data from hardware is in another process. I guess it is BTTrayCE because FMRadioSDK tries to find window to BTTrayCE and send message during initialization. I think BTTrayCE loads other DLLs and dispatch messages to them. I haven't found which DLL handle FM radio events/requests.

If we find that DLL, we can find the way to directly read/write chipset.

It is very clear the DLL doesn't return raw RDS but maybe that driver return raw RDS to FmRadioSDK.dll in that event. The event has a big structure. We may see other data in that structure by using breakpoint or logs. It is hard to set a break point in that DLL. we can use hex editor to replace some code in FMRadioSDK, such as modify binary code in HandleFMEvents to call 100057FC LogWithLock with specified address, or replace some instructions to DebugBreak.

good luck
[Windows Mobile Software Development] flywhc:
Do you know what is chipset to provide FM radio feature on this device?

and can you extract FM radio related files and upload to here?
[Windows Mobile Software Development] levec:
Hello. If you remember we as that told concerning moving GFmapi on Gloflish. Gloflish radio With the developer it was not possible to me to communicate.
[Windows Mobile Software Development] levec:
In Pagionpuemuk_v1.8.1_Sdk (radio Gloflish) there are open files FmAPI
[Windows Mobile Software Development] Rapid81:
The radio chipset's type in the Omnia 2 is Si4709-B-GMR.

I didn't know what you wanted from the fm radio related files, so I uploaded what I 've found in \Windows except the images. :)

I hope this helps.
[Windows Mobile Software Development] flywhc:
thanks levec. I think I've got I need.

Pagionpuemuk uses an inefficient way to get RDS but seems at least working.

maybe. It has a lot good logs. It uses si47xx chipset so it is very possible OmniaTMC works with this device with small changes.

Please check what is in registry:

HKLM\System\State\Samsung\FMRadio\RDS

it may have RDS data?
[Windows Mobile Software Development] levec:
The friend you could not correct RDS and make a worthy cover. How on PowerRadio?
[Windows Mobile Software Development] nitrate:
Regarding to the HTC HD2:

flywhc did you check the thread over here?

Steve0007 put a file up at Sendspace, which seems to have all required BTCE content in it.

You lately said:

Why don't give it a try with that archive at Sendspace?

Afaik it has the DLL's from a HTC HD2 1.48 ROM.

Edit:

I have all dependencies for BTTrayCE here:

btrez.dll.0407.mui <--- depending on device language, filename may vary (e.g. btrez.dll.0409.mui) // missing in Sendspace ZIP archive // i were not able to copy this file from device

commctrl.dll.0407.mui <--- depending on device language, filename may vary (e.g. commctrl.dll.0409.mui) // missing in Sendspace ZIP archive // i were not able to copy this file from device

coredll.dll.0407.mui <--- depending on device language, filename may vary (e.g. coredll.dll.0409.mui) // missing in Sendspace ZIP archive // i were not able to copy this file from device

btcestack.dll <--- file is in Sendspace ZIP archive

btrez.dll <--- file is in Sendspace ZIP archive

btchooserlib.dll <--- file is in Sendspace ZIP archive

btcoreif.dll <--- file is in Sendspace ZIP archive

wbtapice.dll <--- file is in Sendspace ZIP archive

btcecommon.dll <--- file is in Sendspace ZIP archive

btart.dll <--- missing in Sendspace ZIP archive // i were able to copy the file from device

brcmui.dll <--- missing in Sendspace ZIP archive // i were able to copy the file from device

commctrl.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

aygshell.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

bt_power.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

ossvcs.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

iphlpapi.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

cellcore.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

winsock.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

ws2.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

oleaut32.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

ole32.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

wce_rex.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device

coredll.dll <--- missing in Sendspace ZIP archive // i were not able to copy this file from device
[Windows Mobile Software Development] Rapid81:
In there have:

AFCount = 0

AltFreq = 0

ProgramType = 0

PSName = empty

StationID = 0
[Windows Mobile Software Development] flywhc:
levec, I have confident that eten/acer/goldfish m800/m900 etc will support all RDS features. I am working on this and have no blocking issue. Those devices even have amazing built-in RDS and TMC parser. I wonder they must have published API document somewhere otherwise why they provide such powerful API?

nitrate, I saw that thread and downloaded all files. Still very hard to find the dll actually read RDS data from hardware.

Rapid81, please tune to a channel that has RDS data and then check those values.
[Windows Mobile Software Development] levec:
Developers Eten (Glofiish) have made this radio. Forgive, I cannot help. If you alter radio. Users Eten will be grateful to you!
[Windows Mobile Software Development] flywhc:
Happy New Year!

Eten user please help me test the first app for Eten.

This is just a test app that help me validate limited features.

It may not work at all because I don't have this device.

Once those features are validated, I can write a GFMAPI for Eten devices.

Following features are available:

Power On/Off

Seek channels/stop seeking

Get properties: FMPROP_FREQUENCY, FMPROP_VOLUME, FMPROP_RSSI

Set properties:FMPROP_BAND, FMPROP_FREQUENCY, FMPROP_VOLUME, FMPROP_MUTE, FMPROP_MONO, FMPROP_MIN_SEEK_RSSI.

raw RDS is in log (if received any)

Log files is \fmradiolog.txt

Should click on PowerOn before any other operation. should click on PowerOff before exit.

To set a property, enter value in the text box, select the property from listbox, and click on Set prop.

It may not have sound because I haven't set audio path. try seek and get frequency - hopefully it returns a valid frequency.

meaning of properties is one of thing to be tested.

Band can be 0-3. It changes valid frequency range and bandwidth of each channel.

Mini Seek RSSI shall be 0-255. try a low value first. such as 1.

Binary is in EtenTest.zip. just extract the file into any folder on your device.

EtenTestSrc1 is source code.

Please help me debug if you have VC++ and WM 6 SDK installed. Progress will be much faster if somebody can use VC++.
[Windows Mobile Software Development] levec:
Has earned. But there are errors. etentest

Error
[Windows Mobile Software Development] flywhc:
levec, I saw one image then that website cannot be connected.

try to upload them to tinypic.com or this forum?

couldn't load FMSetRSSITH because I wrote program based on M900. M800 doesn't have this function. So most functions weren't working.

I've fixed this. hope it works better.
[Windows Mobile Software Development] levec:
Reproduces Radio! But frequency catches incorrectly.
[Windows Mobile Software Development] levec:
Original radio Eten (Glofiish)
[Windows Mobile Software Development] flywhc:
Great. It starts working.

Can you see \fmradiolog.txt on your device root folder?

Please upload this file if you can find it. So that you don't have to take screen shot.

Delete this file before a new test.

SeekBack and SeekFore: can they find radio channels? which one is going higher frequency and which one going lower frequency?

Please use GetProp with Frequency after Seek to check frequency.

Set/Get volume - please set value first then get value. check if volume is actually changed and what maximum and minimum value are.

Valid FM radio frequency is from 87500 to 108000KHz. You entered 1010 that was invalid. If you set Band to different values (0-3), you may try a lower value such as 79000.

I heard that Eastern Europe may use 6x000KHz but I am not sure this hardware support it.

113000 should be a wrong frequency. Please find me a few correct frequency comparing with wrong frequency such as:

Correct 104Mhz -- EtenTest displayed: 113000

Correct 105Mhz -- EtenTest displayed: 123000

Please also test Band property see if it impacts frequency range.

SetProp Mono to 0 or 1. which one is Stereo mode?

I can see RSSI (Channel Health) is 19. Please take your phone around to see range of RSSI. such as what is RSSI when signal is weak, is OK but no stereo, is very strong with stereo, cannot hear anything.

"ebddce13 d4feebdd 00" suppose to be RDS data but it too short. I guess either time was too short or the signal was weak, or my program was wrong.

To test RDS data, find a channel that have strong signal and support RDS, wait 2 minutes; then change to another channel that support RDS and wait 2 minutes.

I suppose that Russian radio stations support RDS data.
[Windows Mobile Software Development] levec:
Is not present in a root of this file \fmradiolog.txt. Seekback - a background exit, and SeekFore (search of frequencies) has not found radio frequency.RDS reproduces on 104200FM to frequency.You were right 87500-108000FM All reproduces!

Screenshots
[Windows Mobile Software Development] boiacchi:
Hi!

i'm trying to use the application you posted here on my M900... it seems working, but i couldn't find any log file to attach for your use.

Is it located in a specific directory? i've performed a search ad couldn't find it.

Also, on M900 shall i try the first attachment you posted or the latest?

Thanks
[Windows Mobile Software Development] flywhc:
log files is saved in root folder ... if not, should be a bug. Sorry. I will fix this today.

Please upload screen shot before it is fixed.

You may also use CTRL-A, CTRL-C by using standard soft keyboard to copy text from that log window and paste into a text editor (such as OneNotes)

M900 user can use both file.
[Windows Mobile Software Development] boiacchi:
here it is my first test.

Please note that i started receiving all that amount of "numbers" only after i attached the headset.

I've not attached from the beginning since i am used to use Hypergps on Xperia without headset.

Is there something i can do now?

Please note also:

-it crushes if i try to perform a seek back

-as soon as i launch the prgram i hear a little short sound from the rear handsfree speaker

-as soon as i set the volume higher than 1, i hear noise from the rear handsfree speaker

-the highest value for volume seems to be 10

-i couldn't understand if mono is 1 or 0

-as soon attach the headset, i cannot hear anything from the handsfree nor from the headphones

byee
[Windows Mobile Software Development] flywhc:
I guess Eten M900 uses headset as antenna as other HTC devices.

If it has no sound when headset is pluged, it must be audio path setting problem. As I wrote, I didn't write this function yet.

RDS data are very good. I can see PI from RDS data. So hyperGPS will work on Eten soon.

Can you tell me what name of the station you was listening when receiving RDS data? The name displayed in built-in radio player.

Does SeekFore work as expected? find next higher frequency?

Thanks
[Windows Mobile Software Development] KNOTEBOOK2:
Happy new year! Are you pretty awesome all the way round as conserns wm software developement?

K2
[Windows Mobile Software Development] levec:
Screenshots
[Windows Mobile Software Development] flywhc:
Please tell me what registry values in Software\ETEN\FMTuner.

Attached new version is an attempt to solve seek and audio path problem.

Log file should work now.

I haven't figured out full logic of audio path setting yet.

In this version audiopath range is 0 to 5. Please try different value. I hope one of value can set output to headset/speaker.

Stereo testing: tune to a station that have obvious stereo music. set MONO property to 0 or 1 and check which one cause the music become mono mode.
[Windows Mobile Software Development] casouzaj:
Hi, flywhc

In my M900, folder FMTuner is under HKLM\Software\Acer, not ETEN. I have not run your test program yet, but I have attached those registry keys here.

Hope it helps you to debug your program, somehow....

Happy New Year!

Carlos
[Windows Mobile Software Development] boiacchi:
Excellent news! :)

i set up as property 102.5 (an italian radio station with tmc service).

Seek fore work in a cicle, seeking higher frequencies and restarting from lower.
[Windows Mobile Software Development] flywhc:
Thanks for registry.

I thought it would provide Band/Area code but seems not.

have to try different value of Band property.

boiacchi, can you try the latest version and check SeekBack also working please?

I need test results for:

- Log file

- Stereo/Mono Property, use a FM Transmitter to test if possible.

- SeekBack/Fore - I used a new function in the latest version. If not I will try old one with different arguments.

- AudioPath Property

What about speed of each operation? such as power on/off, Seek a channel, did you see a obvious long delay?

Then I will spend a few days to construct events handling and more properties.
[Windows Mobile Software Development] boiacchi:
Please find attached two tests.

-mono = 0 is mono

= 1 is stereo

-Seekback and seekfore works fine and without any lag

-Audiopath = 0 is no audio

= 1 is headphone

= 2 is handsfree

= 3 is headphone

= 4 is headphone

= 4 is headphone

Bye :)
[Windows Mobile Software Development] flywhc:
This version has almost full feature: supports seek/tune events and RDS events. all properties are supported except FMPROP_AFJUMP, FMPROP_DEEMPHASIS and FMPROP_CARRIER_DETECT. AFJUMP and Deemphasis are not supported by hardware. Carrier detect will be implemented later.

I added a menu for RDS log on/off.

Please provide RDS log for one minute under strong signal.

And tell me what is the name of that station.

For example, in the built-in FM radio displays "BBC R4", I shall be able to find ASCII code of "BB", "C " and "R4" from RDS log. Otherwise there might be a bug.

It is time to make it working perfect. I will write more test plan tomorrow.

Reference:

FMPROP_AFJUMP	= 0,	// enable (dwVal = 1)/disable (dwVal=0) automatically AF jump when RSSI is lower than FMSET_MIN_SEEK_RSSI.
FMPROP_AUDIOPATH	,	// Set audio path: 0: loud speaker; 1: wired headset;
FMPROP_BAND	,	// Set Radio Band. See enum FMRadioBand.
FMPROP_DEEMPHASIS	,	// De-emphasis mode. 0 = off; 1= on
FMPROP_FREQUENCY	,	// current frequency
FMPROP_MIN_SEEK_RSSI	,	// the minimum signal strength required for seeking a channel. 0-255 devce dependant.
FMPROP_MONO	,	// mono mode. 0 = stereo; 1 = mono
FMPROP_MUTE	,	// set mute state: 0 = Unmute; 1 = Mute
FMPROP_RSSI	,	// radio signal strength. 0 - 255. Read Only
FMPROP_STEREOBLEND	,	// enable (dwVal = 1)/disable (dwVal=0) stereo blend for improving sound quality when signal is poor
FMPROP_VOLUME	,	// set FM audio volume in percentage. 0 - 100
FMPROP_CARRIER_DETECT , // bitmasked carrier detection for current frequency: 0x0001 FM, 0x0002: Stereo, 0x0004: RDS. Read Only
FMPROP_POWER	,	// current power state. 0 = power off; 1 = power on. Read Only
[Windows Mobile Software Development] levec:
All is reproduced Perfectly, RDS on 104200 frequency Loveradio Moscow,
[Windows Mobile Software Development] flywhc:
I guess this radio station displays a scrolling name, which is not suggested by RDS standard.

" LO"

RDS(1072, 900, cde0, 2020) 1 " "

RDS(1072, a00, cde0, 2020) 2 " "

RDS(1072, f00, cde0, 4f4c) 3 "OL"

" LOV"

RDS(1072, 800, cde0, 2020) 0 " "

RDS(1072, 900, cde0, 2020) 1 " "

RDS(1072, a00, cde0, 4c20) 2 "L "

RDS(1072, f00, cde0, 564f) 3 "VO"

" LOV"

RDS(1072, 800, cde0, 2020) 0 " "

RDS(1072, 900, cde0, 2020) 1 " "

RDS(1072, a00, cde0, 4c20) 2 "L "

RDS(1072, f00, cde0, 564f) 3 "VO"

" LOV"

RDS(1072, 800, cde0, 2020) 0

RDS(1072, 900, cde0, 2020) 1

RDS(1072, a00, cde0, 4c20) 2 "L "

RDS(1072, f00, cde0, 564f) 3 "VO"

" LOVE"

RDS(1072, 800, cde0, 2020) 0

RDS(1072, 900, cde0, 2020) 1

RDS(1072, a00, cde0, 4f4c) 2 "OL"

RDS(1072, f00, cde0, 4556) 3 "EV"

" LOVE"

RDS(1072, 800, cde0, 2020) 0

RDS(1072, 900, cde0, 2020) 1

RDS(1072, a00, cde0, 4f4c) 2 "OL"

RDS(1072, f00, cde0, 4556) 3 "EV"