yashsingh1/xdaforums huggingface dataset:
[Windows Mobile Software Development] flywhc:
Test plan

Please help me test on Acer/Eten device.

I should do this myself if I had a device. This is a strange way to write software but works.

* Seek

Can you see frequency is correctly displayed immediately after seek?

Seek Forward until limit, what is the return value of FMSeekChannel?

Seek Backward until limit, what is the return value of FMSeekChannel?

What frequency was displayed after seek to a limit?

OR, does it automatically restarted seek from lowest/highest frequency without returning any special value?

* Test AudioPath property: 0 Loud Speaker, 1 Wired Headset

Can you hear sound from specified speaker?

Can you Get same value of property after you change it?

* Test Frequency property:

Set it to a valid value, such as 101500 for 101.5MHz. Can you see frequency displayed correctly?

Set it to a low invalid value, such as 10000, what is return value of FMGetChannelFromFrequency?

Set it to a high invalid value, such as 150000, what is return value of FMGetChannelFromFrequency?

Was current frequency changed if you set an invalid frequency?

* Test Band: 0 - 3. what are maximum and minimum valid frequency for each band value?

Try set frequency and check return value.

expected range are 65000 - 74000 for OIRT, 87500 -108000 for CCIR, 76000 - 90000 for Japan

What are frequency step between different channels?

Different Band could have different Frequency Step - such as for 100KHz step you can set frequency to 87600, 87700 etc but not 87650. For 50KHz step you can set 87650. For 200KHz step you cannot set frequency to 87600. According to wikipedia most country use 100Khz some countries like Italy uses 50KHz

* Test MIN_SEEK_RSSI: set a high value like 15 and seek. should only find strong signal. Set low value as 0 can find all channels.

GetProp can get same value as you set.

* MONO and STEREOBLEND: 0: stereo, 1: mono

GetProp can get same value as you set.

* VOLUME: is 0 silent/mute? 10 is maximum value? not 9 or 16? does it return any error code if set a big value?

* POWER: read only. it should be 1 after power on and 0 for power off.
[Windows Mobile Software Development] WhatBackHand:
I have a HTC Mega available for testing

@flywhc

I had a HTC Mega just before Christmas and would be happy to help with development.

Many years ago I wrote and developed software but haven't 'dabbled' for over 10 years now. If you can drop me a line with what tools I need and what testing you'd like I'll confirm my 'availability'.

Chris
[Windows Mobile Software Development] DaveShaw:
You'll need MS Visual Studio 2008 (2005 might do) with C++. Also IDA Pro from Hex Rays might come in pretty handy. Once you have those, get some source code from flywhc (if the existing tests don't have enough in them already).

Dave
[Windows Mobile Software Development] flywhc:
WhatBackHand, the first thing is dump FM radio related files from the phone/ROM.
[Windows Mobile Software Development] casouzaj:
Preliminary results on Acer M900

Cheers!

Carlos
[Windows Mobile Software Development] WhatBackHand:
@Daveshaw: I've downloaded IDA Pro, will Visual Studio Express do or do I need full Visual Studio?

@flywhc: How do I dump the radio (or anything else for that matter)?
[Windows Mobile Software Development] DaveShaw:
Just Dump the Official ROM using Ervius's Visual Kitchen, it will take a while to find all the files.

Search for FM*.* in All Files (include hidden and system) and BT*.*

Express Edition doesn't support mobile devices, Full version I'm afraid.

Dave
[Windows Mobile Software Development] WhatBackHand:
Dave,

cheers, I'll try the dump tomorrow and see if I can borrow VS from MSDN at work.

Once I have extracted the files from the dump and I have VS, what next?

Chris
[Windows Mobile Software Development] flywhc:
Thanks casouzaj. That's help a lot.

Audio path is still a problem. can you try this old version, which audiopath can be 0 to 5. maybe one of value can solve it:

I need a driver dll for M800/M900.

Under HKLM\Drivers\builtIn should have a key named "FM??", such as "FMT1". it has a value "Dll" which is filename of the driver.

I got fm_s4700.dll for M900 and M800 they only has 9KB. IDA pro cannot analyze it and it doesn't have exported function.

A driver should export functions like FMT_Open FMT_Init.

driver usually cannot simply copy from device. Should use special tools to extract from ROM.

Chris, after you extract files, please upload them to this forum so we can analyse it.

If it has FmRadioSdk.dll, in most case it is same as HD2 and TP2, which are very very hard to do reverse engineer.

It is not easy at all: you need very good understanding of Windows Mobile system, especially drivers, IPC, and ARM Assembly.

I wrote this post for current process.

we proved FmRadioSdk doesn't have any raw RDS data, it is just a wrapper. we have to find which DLL actually read RDS data from hardware and send to FmRadioSdk.
[Windows Mobile Software Development] flywhc:
A beta version of GFMAPI for Acer/Eten M800/M900.

Doesn't work with hyperGPS because it is not signed.

The DLL should be tested with PowerRadio or APITest( included in 1.6 HTC driver on the first post).

Still have audio path and Band problem.
[Windows Mobile Software Development] casouzaj:
FM.dll

Besides fm_si4700.dll, which I'm unable to make copy to another location (but you already seem to have it), I've found also FM.dll on my \Windows directory, which I'm attaching to this post. Hope you find it useful.

By the way, does the EtenTest.exe, which you have included along with GFMAPI.dll in your last post, have multiple AudioPath options, or should I still use the one you posted before the last one, to make a test ? (later, because it's past 1am here, and I would end up waking somebody up if I routed audio to the speakerphone :)).

Cheers!

Carlos
[Windows Mobile Software Development] levec:
GMAPI has thrown program files/power radio and GMAPI.dll Has renamed FMS_API.dll and has thrown/windows after that Power radio it only has reproduced works as Thanks.Search is astable. But nevertheless thanks)
[Windows Mobile Software Development] nitrate:
Hello again,

i just wanted to ask you what is needed in order to help you in finding a solution related to HD2-TMC?

Thanks in advance.
[Windows Mobile Software Development] flywhc:
casouzaj, I have that FM.dll - all works based on that file.

I believe it must have other file. Please check registry.

And as I wrote, you can't simply copy a driver from ROM. Click on this link may find related tools.

levec, I am sorry for that I don't understand what you wrote. Did you have to rename GFMAPI to fm_api.dll? that shouldn't be necessary. From screenshot I can see powerradio is working. If RDS text is correctly displayed in PowerRadio, Next thing shall be beemerTPPC sign it and pack it in hyperGPS.

nitrate, check my reply to chris early today - we have extracted files for HD2.

If you know ARM, can do reverse engineer. Or find Widcomm document for FM radio API or chipset interface (not data sheet) (I guess only insiders have them).
[Windows Mobile Software Development] levec:
I apologize for the English language. Yes, I renamed GMAPI.DLL in FMS_API.DLL, address Windows / . Powerradio requested this file! Replaced program files / Powerradio / GMAPI.DLL Next, I did restart Glofiish
[Windows Mobile Software Development] levec:
Auto scan unstable, frequency hangs 113000. Do not understand the additional information on registration RDS GPS
[Windows Mobile Software Development] WhatBackHand:
@anyone,

can you point me at guide/manual or similar on how to extract/dump using Ervius Kitchen? I've done some searching and found some threads but cannot make any sense of them. This could be because I've never gone down the route of cooking so please be gentle!

Chris
[Windows Mobile Software Development] DaveShaw:
Download the Kitchen.

Click on the Dump button on the left hand side (near the bottom). And point it at the NBH file.

All the files should be extracted into folders.

Ta

Dave
[Windows Mobile Software Development] Thunichgud:
Moin,

I've dumped the ROM of the Glofiish V900, which is nearly identical to the ROM of the Glofiish X900. The radios are absolut identical.

In the attachments you will find all files, which begins with FM*.* and with BT*.*.

Hope it will help you.

- Thunichgud -
[Windows Mobile Software Development] flywhc:
Thanks

FM radio function on this phone is not related to bluetooth.

Can you check that HKLM\Drivers\builtIn\FM?? registry? is that fm_si4700.dll?

Do you have audio path problem when switching between loud speaker and headset?

For that scan channel problem, I need log from EtenTest in same zip file. turn off RDS, try SeekFore and SeekBack. check logs when it reaches limit.
[Windows Mobile Software Development] nitrate:
@flywhc (HD2):

I don't know if this can help you, but did you check the Widcomm BTW-CE SDK?

According to a short explanation of the package it includes a documentation of API descriptions, Interface test programs, design, sample application code and a troubleshooting guide.

I got it downloaded and it has these 3 PDF's included:

- Programmer's Guide (1000-WCE-PG100-RCD.pdf)

- Sample Applications (1000-WCE-UM300-RCD.pdf)

- Smartphone Sample Application User’s Manual (1000-WCE-UM400-RCD.pdf)
[Windows Mobile Software Development] flywhc:
somebody in this thread said he did and couldn't find FM Radio related topic.

BT SDK only has bluetooth stuff. FM radio is undocumented. From disassembled code I can see Widcomm FM SDK doesn't provide raw RDS interface to HTC phones.
[Windows Mobile Software Development] nitrate:
...and that means?...
[Windows Mobile Software Development] WhatBackHand:
@flywhc,

here are the FM*.* files, for some reason the BT zip doesn;t upload, even though it's only 2.5MB. I'll try and upload the BT files later.

I hope I did (the process) right and they help? Let me know if I can assist with anything else.

Chris
[Windows Mobile Software Development] flywhc:
means HTC phones doesn't have API for raw RDS.

@WhatBackHand, it has FmRadioSDK.dll so should be same as HTC TP2/HD2 etc.

No solutions yet.
[Windows Mobile Software Development] boiacchi:
Hi Flywhc

sorry for my delay... i'm allways late!:)

By the way i'm trying the latest version of your program, but it is difficult to me to set the radio station i want cause of the different frequency displayed.

I'm looking for a station called RDS tuned at 102.5 in italy, but i cannot understand how to set it.

Ah... with seek back i get minimum station of 92700 and with seekfore i get 119900.

But sometimes i got also 90900... not everytime.

By the way the rds count is rising fast with every station!

Please tell me how i could tune at a specific radio station, and i will attach the rds log for you.

I know you have already explained it, but i did not get it... i'm sorry it is all quite odd and complicated to me :(

Have a good week end!
[Windows Mobile Software Development] flywhc:
Can you SetProp FMPROP_FREQUENCY with 102500? 102500 KHz is 102.5Mhz

FMPROP_MIN_SEEK_RSSI should be set to 0 or 1 to find all possible channels.

Can you receive any channel lower than 92700 by using a real Radio?

119900 is not a valid value. please provide logs.

can you try this old version, which audiopath can be 0 to 5. maybe one of value can solve switching audio between headset and loud speaker problem.
[Windows Mobile Software Development] Thunichgud:
Moin,

1. Here is the registry entry:

HKLM\Drivers\BuiltIn\FM_DRIVER\DLL: fm_si4700.dll.

2. No, it switches automatically, when I insert the cable headset and when I remove it. I havn't seen any way to switch manually.

3. I did forget: There was a patch for the Glofiish V900 / X900 FM Tuner: It enabled the receiving of simple RDS data with the radio and the receiving of TMC data with GPS Navi Apps. You will find it as attachment.

When installed, the FM Tuner app shows the actual RDS channel info in a ticker line. But very slow (up to 30 seconds until the info comes the first time) and often incomplete, when the info is to long.

- Thunichgud -
[Windows Mobile Software Development] boiacchi:
i didn't realize it was so obvious... i'm really sorry.:(

ok i'm trying the version you linked:

i'm attaching a log file after having set:

-Frequency 103000 RDS Italy (i was wrong... it was not 102.5)

-Audiopath 2

-Volume 10

-Min sek rssi 0

i can confirm that the lowest frequency i can receive with the m900 radio software is 87.5MHz
[Windows Mobile Software Development] boiacchi:
latest version log

please find attached a log from the latest version, using the same properties as above.

You shoul find RDS as station name.

I confirm the different bahaviour of audiopath property.

Hope it was userful.

bye.:)
[Windows Mobile Software Development] boiacchi:
could this patch works on m900 :rolleyes:?? :D
[Windows Mobile Software Development] flywhc:
Thunichgud, thanks, seems V900 is better than M900 when handling audio path. Having that patch, do you guys still need GFMAPI driver for m800/m900? :)

The cab file contains a good fm_s4700.dll, which is 22KB. Old one was only 9KB.

Does anyone still have audio path problem? such as SetProp FMPROP_AUDIOPATH to 0 and set to 1 and set it back to 0

SetProp FMPROP_BAND to 1 or 2, can you set frequency to 76000? It is FM band for Japan but can listen to police radio in some countries. can you also set it to 107000 on these band?

please attach logs.

I don't need RDS log because I know it works. can you turn it off by click on menu->RDS off?
[Windows Mobile Software Development] boiacchi:
Unfortunately that patch doesn't work on M900:mad: i've tried it right now.

Putting Band to 2 i can tune to 76000 Hz but hear nothing than noise.
[Windows Mobile Software Development] phjz:
i8000

Dear flywhc, I wrote the above on the TMC thread and redirected to here for more info, can you help me?

"I'm just finished a Samsung I8000 application which can use near all the radio chip (Si 4709) features and collect all the TMC messages using its native fmradio.dll (see at : phj.hu/i8000/TMC. Can anybody help me here how to use the HyperGPS? Excuse me, but I'm simple tired to collect the information. I know about the FMRadioapi c and h , but there is a lower level implementation also in public?"​
[Windows Mobile Software Development] flywhc:
phjz, it is great to see FM radio can be programmed on Omnia II.

The first post of this thread has existing GFMAPI for HTC (BRF6350 chipset) and eten/acer device (si4700 chipset).

In any of them you can find a file fmapi.h. It defines the API to be implemented.

I realized that it was not a easy to implement all functions in the API, especially RDS/status events for other developers. So I am writing an "Adaption kit" for developers to minimize efforts to implement this API.

It would also help BeamRider to implement the API for Omnia.

For the time being, you can start implementing most functions of this API except events.
[Windows Mobile Software Development] phjz:
Thank you, I will start on on fmapi.h. Otherwise have you any information regarding BeemRide's work? I ask this because as I see I'm re-implement what BeemRider were done before, but without any info in public, so the implementation will take a magnitude longer time and harder accordingly.

What about the code publicity? I'm planning to make my work public, but don't know nothing regarding your opinion ( my code use the decoded IOCTL in fmradio.dll and a named event only, so don't think that any legal issue can occur)
[Windows Mobile Software Development] beemerTPPC:
I planned to make may code public, but GNS contacted me about the program and one of the things I understood is that they will allow the program while it is a free and academical experiment.

Making the code public, at least in my case doesn't seem to be a good idea.
[Windows Mobile Software Development] flywhc:
phjz, you can see this project is almost open source.

You can find source code for BRF6350 based HTC and Eten device in this thread. They have almost all features although not same as released version.

I will publish source code of the hardware adaption kit I am writing. It should be sufficient for implementing your API.

I am doing Microsoft's duty - they should pay me. :)

If you are in rush, I can send a draft of this hardware adaption kit to you via email (check your PM)

BeamRider's (MoDaCo forum) TMC driver is for Omnia, not Omnia II.

If they are compatible, you can directly use his OmniaTMC (I guess not).

I know he wrote a new hardware driver, directly talk to physical address so I think should have very differnet IOCTL from yours.

As far I know, his interest changed to other thing so OmniaTMC project is stopped and Omnia GFMAPI is not complete.

beemerTPPC's (hey, similar name) driver is powerful and supports more navigation software and hardware (in theory). You just implement FMAPI , signed with privileged dev certificate, and beemberTPPC's great hyperGPS will work without any change.
[Windows Mobile Software Development] Thunichgud:
Moin,

I tested the EtenTest.exe from 7.1.2010 on my Eten V900 (etentest.exe and gfmapi.dll in same directory, WM 6.5).

- It starts with the error: "Failed to load 'FMSETRSSITH'"

- Set Prop Frequency 112000 reports: "Err 87"

- Set Prop Frequency 108000 reports: "FMSetCannel(205) = 0"

and "FMSetProp(Frequency, 108000) = Success"

but GetProp reports: "... = Success, val = 113000".

- Most Set Props reports "Success" but the Get Prop shows, that the values didn't change.

- Set Prop Audiopath changes the value and a acoustic noise appears, but with Set Prop Audiopath to 0, the noise don't disappears.

- When I tap "PowerOn" the app freezes completely. Even the TaskManager can not finish the app. I have to make a warm reset of the device.

- Thunichgud -
[Windows Mobile Software Development] flywhc:
It is bad - that means the current way I wrote to validate frequency is wrong for V900.

I need to find a way to know if a frequency is invalid.

I thought 108000 is a valid frequency but seems it is not on this device.

My new proposal will be:

when Set a invalid frequency (e.g. 110000), FMSetChannel return 0 and Get Frequency returns 113000

When set a valid frequency (e.g. 90000), FMSetChannel return 1 and Get frequency returns same frequency (e.g. 90000)

Can you please help me verify this logic?

In your test 108000 also caused FMSetChannel return 0 and getfrequency return 113000, means 108000 not a valid frequency.

Then can you help me test what is the maximum valid frequency when BAND = 0? Is that 107500 or 107000?

And what is minimum frequency when BAND =0 ?

What are max/min frequency when BAND =1 ?

Set Prop Audiopath to 0 your loud speaker should output FM radio; if set it to 1, your headphone should output FM radio. If this is not working, please help me find the correct audio path value:

Download this Old version of EtenTest. It uses original value of audio path.

Set Audio path from 0 - 5.

boiacchi said:

= 0 is no audio

= 1 is headphone

= 2 is handsfree

= 3 is headphone

= 4 is headphone

= 5 is headphone

Are those values working on your device? I only need one value for headphone, one for loudspeaker (headsfree)

try switch between headphone and handsfree a couple of times to ensure the value is correct.

Did you click PowerOn twice?
[Windows Mobile Software Development] flywhc:
phjz, please find GFMAK.zip on the first post to help your driver development. It should be an easy job now. only need to fill in those TODOs. in one cpp file. I like to help if you have any problem.

Good luck
[Windows Mobile Software Development] boiacchi:
Hi Flywhc,

do you need some more tests to be performed on M900 ?

Please telle me the way i can be userful to help you.

Best regards
[Windows Mobile Software Development] Thunichgud:
No. When I click PowerOn the first time, the app freezes at once totaly. Only the loudspeaker changes from 'no noise' to 'white noise'. Therefore, I made all tests without previous clicking on "PowerOn". Previous clicking on "PowerOff" and than clicking on "PowerOn" didn't change the behavior. "PowerOff" has absolut no effect on V900, except the message "FMPowerOn: Off Success".

Test of Audiopath (EtenTest.exe from 7.1.2010):

1. StartUp of device Eten V900 => no noise from loudspeaker

2. StartUp EtenTest.exe => no noise

3. Get Prop Audiopath: val = 1 => no noise !!

4. Set Prop Audiopath 0 => no noise

5. Get Prop Audiopath val = 0 => no noise

6. Set Prop Audiopath 1 => white noise from loudspeaker

7. Set Prop Audiopath 0 => white noise !!

8. Software button "PowerOff" => white noise !!

9. Exit from EtenTest.exe => white noise !!

Summary: Every audiopath value except 0 (e.G. -999, -1, 1 to10) switches the white noise in the loudspeaker on. None value, including 0, switches the noise off.

The V900 don't needs a software audiopath, because it is hardware switched by the plug of the headset. There is no need for plugging in the headset as aerial, because the V900 has a build in aerial. It seems for me, that Audiopath switches the radio chip on (because the noise don't stops, when exit the app. But, when the noise is switched on, I couldn't change the frequency, too).

Test of Frequency:

As I wrote, I made all tests without clicking on PowerOn. Perhaps therefore I couldn't change the frequency. Example: In Berlin/Germany we have a radio station at 88,8 MHz. So I tested to change to that frequence:

1. FMGetChannelFromFrequency(88800)=13

FMSetChannel(13)=0

FMGetFrequency(255)=113000

FMSetProp(Frequency,88800)=Success

2. FMGetProp(Frequency)=Success, val=113000

So I couldn't test the bandwiths. The origin V900 FM_Tuner offers 3 Bands:

Europe: 87,5 MHz - 108,0 MHz

Japan: 76,0 MHz - 90,0 MHz

USA: 87,5 MHz - 107,9 MHz

- Thunichgud -
[Windows Mobile Software Development] flywhc:
boiacchi, yes, please help me test band and set/get frequency, in order to get the valid range of frequency for each band.

And also check if:

does FMSetChannel return 0 for invalid frequency and 1 for valid frequency?

After set a invalid frequency, does Get Frequency returns 113000?

does audio path work as expected? 0: loud speaker 1: headset, switch between them.

Thunichgud, nothing should work without power on. However white noise indicates FM radio is on. is your device still frozen after set audiopath = 1 with white noise and then click on power on?

maybe V900 uses different way from M800/900. I need to look into its binaries.
[Windows Mobile Software Development] phjz:
Thank you, begin to study. Otherwise I know that BeamRider's solution is for Omnia i900, but Samsung use the same driver in i8000 ( guess from the fmradio.dll structure ) as in the i900 - sure with modifications , so I think nor the physical port adresses and maybe nor the radio chip not the same.

In the meantime I probed to start my solution work with iGo, without success - I can generate and send TMC events over a virtual serial port to iGo, but something wrong with the start sequence of the OpenTMC detection ( the same problem as in the beginning of this thread ), so the iGo cannot detect me.

Anyhow I must implement the API, but maybe you can send me in PM the necessary OpenTMC handshake with iGo?
[Windows Mobile Software Development] Thunichgud:
Yes, it is frozen after every click on PowerOn.

- Thunichgud -
[Windows Mobile Software Development] beemerTPPC:
The necessary handsake of OpenTMC was never found. GNS and Royaltek ones did. Bus as long as I already have done those work, I think it will be easier for you that simply implement the API and use HyperGPS for the TMC implementation.

Create TMC events on a virtual serial port is easy, but the protocol hansake and specialy the timing is tricky. In the TMC thread or searching for "beemer TMC" in google you can find the GNS and royaltek protocol messages itf you want to.
[Windows Mobile Software Development] phjz:
Thank you for the information, I know focusing the GFMAPI integration...
[Windows Mobile Software Development] Thunichgud:
Moin,

I tested the EtenTest.exe again on my V900. You will find the commented log file attached.

- Thunichgud -