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://forum.xda-developers.com/showpost.php?p=5120404&postcount=783
http://forum.xda-developers.com/showpost.php?p=5221677&postcount=813
http://forum.xda-developers.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.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
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.
Troubleshooting
* Cannot start
Make sure your device is in the supported device list.
Try soft reset?
Sony X1 has to turn off FM Radio panel.
* No sound
Plug your earphone in before running this app
Turn volume up
Try Soft reset?
* No RDS data
Please place your place in an area that have strong FM Radio signal.
Wait for longer time
Check Raw RDS output
Soft Reset
FAQ
1. What is RDS?
Radio Data System, FM radio station sends digital data during broadcasting.
Search in wikipedia to know more.
2. What digital data does RDS transfer?
* PS - Name of channel. 8 ANSI characters. Fixed length
* AF - Alternative frequencies: you can choose one or radio itself automatically choose a better frequency when signal getting poor
* PT - Program type
* RT- Radio text. can be replaced or appended.
* TA - Traffic Announcement: when radio program starting announce traffic info, it reminds you.
* TMC - Traffic Message Channel: provide digital traffic information like TOMTOM traffic.
* CT - clock time
...And more you can find from wikipedia
3. where can I find those radio stations support RDS?
RDS is a EU standard so it is popular in EU.
US has a modified version of RDS, RBDS, which has very light difference.
4. What is xFMRadio?
It is a analytical tool help me validate FMS API, and RDS data.
It supports RSSI, PS, AF, RT, PI, Raw RDS data etc.
I don't know what name shall I use so I use a letter x. eXperience, xda-developers.. whatever.
5. What is...
RSSI: Received signal strength indication. Maximum value still unknown. I guess it is 32.
PI: Programme Identification the unique code that identifies the station.
6. what is format of raw RDS?
RDS is a complicated format to broadcast narrow band with repeat data.
Its transfer speed is just 1.1Kbps, with large proportion of flow control bits.
e.g. when it sends a station's name, it sends every two ANSI characters in a 104 bits coding structure, and usually do not consequently send all strings together.
The RAW RDS format is different from RDS standard. each data package is in a form of 16 bits data + 8 bits type, instead of 16 bits data + 10 bits offset.
You can find kolomparrudi's analysis in this thread.
7. Can I use it without earphone?
Theoretically yes.
FM Radio wave length is much longer than GSM/BT/WIFI etc so it needs a long antenna e.g. USB cable.
Also FM module is switched off when earphone is unplugged.
Maybe HTC ExtUSB to 3.5mm audio adapter (YC A300) works.
Many HTC devices driver disable FM audio output as soon as unplug headset.
Power cable or USB cable that connects to PC introduce interference so that you may need low pass filter such as capacitors.
History
12 Feb 2010
Eten GFMAPI Beta 8 and new APITest.
First version that working on M800/M900.
19 Jan 2010
EtenTest and GFMAPI Beta 4.
Attempt to fix band and audio path. (Beta 3 has regression)
18 Jan 2010
EtenTest Beta 2
Try to solve seek/set frequency issues
13 January 2010
Uploaded Generic FMAPI Adaption Kit for FM driver development.
7 January 2010
Beta version of GFMAPI for Acer/Eten devices is available!
If you find any problem, please use EtenTest in the zip file to get logs.
It has to be signed with privileged developers certificate in order to use with HyperGPS.
04 January 2010
Happy new year.
Uploaded test app for Eten/Glofiish/Acer M800/M900
30 July 2009
Published test application for HTC Rhodium and HTC Artemis.
16 July 2009
GFMAPI for HTC devices 1.6
- Improve power consumption when no event subscription.
- solve mute problem on Topaz
- partially support Rhodium. Cannot receive RDS data
29 June 2009
GFMAPI for HTC devices 1.5B
- Fix defect that RDS error flag was set to wrong format
- Fix set frequency defect
23 June 2009
GFMAPI for HTC devices 1.4
- Fix misspelling of FMGetNotification
- Fix return error of FMGetNotification
- Support FMBAND_WIDEJPN (76.0 - 108.0 World wide)
Thank NetRipper for pointing out defects.
11 June 2009
GFMAPI 1.3 has been released.
Thank for 6Fg8's careful testing.
Bugs of Mute, Volume and Mono are fixed.
17 May 2009
GFMAPI 1.2B Released
* Using notifications (windows message or event) instead of callback functions
* Add FMPROP_POWER (read only)
* Fix FMClose timeout issue.
5 May 09
beemerTPPC made an alpha version of TMC driver:
http://forum.xda-developers.com/showpost.php?p=3726772&postcount=342
It is alpha so has a lot issues and not user friendly.
Please read all other posts after beember's post before ask.
Generic FM API 1.01 (do not directly use it with HyperGPS):
http://forum.xda-developers.com/attachment.php?attachmentid=182949&d=1241571138
Update on 22 April 09:
xFMRadio 0.4
Implemented AF parser
Improved AF selection usability
Support TMC status - so you don't have to change verbose to check if a station supports TMC
Integrate with system volume control
Setting of RSSI search level - default 10.
Fix bug: Application didn't show at foreground if run app again.
Update on 18 April 09:
xFMRadio 0.3.
Use RDS parser. It gets much more information and must faster from RDS than build in API now.
Add Bigger box for RT.
Add Status box for TP, TA, PTY etc
Display station Date/Time and timezone
Display TMC raw data if verbose >=2
Display ProgramItem, paging id, language id etc in log if the station supports them.
Radio 0.3 API
Note: methods in IFMEvents are running in another thread from FM API functions.
Update on 5 April 09:
I've uploaded FMRadioAPI wrapper.
It is a C++ class. Please read comments in the header file, which should provide sufficient information to use it.
You may implement FMRadioAPI::IFMEvents::OnFMRadioRDSData(const FMRadioAPI::TFMRDSData & aRDSData) to get raw RDS data.
Note that event functions are running in different thread so you may need synch objects.
xFMRadio 1.2 This version uses FMS_API events to get PS, RT etc.
References (credit: Midnight_Rambler, johnpatcher, kolomparrudi, iseeka):
http://www.rds.org.uk/rds98/pdf/IEC 62106-E_no print.pdf
http://www.rds-tmc.cz/res/ExchangeFormat.pdf
ftp://ftp.rds.org.uk/pub/acrobat/rbds1998.pdf
http://www.rds.org.uk/rds98/pdf/RDS_book_sample.pdf ( £68 if buy that book!)
http://www.opentmc.net/download/file.php?id=4 Open TMC specification
http://dev.inversepath.com/rds/cansecwest_2007.pdf A presentation that how to DIY a RDS-TMC system
http://www.locosystech.com/download/oem/Open TMC V2.00-1.02pdf.pdf Open TMC standard
http://www.sirim.my/iscg/tc_g_3/14819-1.pdf The TMC packet coding in RDS stream described in ISO 14819-1 standard
http://focus.ti.com/general/docs/wt...ntId=14646&navigationId=12659&templateId=6123 TI BRF6350 Bluetooth/FM radio chipset
http://books.google.co.uk/books?id=...=toc&dq=rds+paging&source=gbs_summary_s&cad=0 The broadcaster's guide to RDS
http://www.continentalimports.com/rds.html A list of RBDS/RDS features
Interesting thread about TOMTOM:
http://forum.pocketnavigation.de/thread.php?postid=1702492
Go go go
So, does this mean, that iGO will find TMC info and use it, because it currently doesn't find any TMC hardware.
the most desired thing would be using TMC on iGO or TomTom; definitely possible but no one knows exactly how; there is already a thread:
http://forum.xda-developers.com/showthread.php?t=454281
regards
IRM
[email protected]_ said:
Go go go
So, does this mean, that iGO will find TMC info and use it, because it currently doesn't find any TMC hardware.
Click to expand...
Click to collapse
well, its not about finding hardware, there are already iGO versions finding the correct fm transmitter on my touch hd, if not you can easily edit sys.txt.
The issue is simply that it cant extract the required information.
@flywhc: would be great to see you coming up with some results! Thx!
-
To be honest I'm not keen in a gui, you should concentrate on the code itself. I would really love to have TMC in iGO8 . I guess this will be much more easy than implementing it for TomTom, as it has already TMC support (and even has detected the hardware).
Have you took a look at this document already?
Which driver (FMS & FMS_API) have you used? I guess the one in the Blackstone 1.21 rom is the latest, it differs from the 1.19 one, so I will attach it here, maybe there is something new / different in it?
As far as I know the Nav'n Go support has written that it is impossible to retrieve TMC information with these devices, so they are proven to be wrong, really a shame!
Really great work!
hey flywhc!
that is really a great app you produced here!
can you give us some details on what commands take what parameters?
and also it would be very cool if you could give us some details on your implementations; what libraries did you use to talk with the fm hardware? would you mind sharing your work (source code)?
i've got about another month of hard work on other stuff before me, but afterwards i would be ready to help.
Thanks for supporting.
I am using a radio player from Rhodium Manila project, should be the latest.
I will publish API in the future once I have confidence with it, and remove code may have copyright issues.
Nice job! I'll watch this thread for your progress
flywhc said:
Thanks for supporting.
I am using a radio player from Rhodium Manila project, should be the latest.
I will publish API in the future once I have confidence with it, and remove code may have copyright issues.
Click to expand...
Click to collapse
Okey, that sounds great!
BTW: you asked if your app works on blackstone: yes it does
One other thing: There is a free TMC service form some radio stations in austria, so if you include a feature to save a log of the recieved RDS messages I can give you TMC data that won't be encrypted
flywhc said:
* Provide free traffic to TOMTOM
That is a dream but technically feasible.
RDS traffic info is encoded even encrypted. I have lack of document and knowledge.
And then we need to somehow crack TOMTOM to get traffic info from our FM radio not network.
Click to expand...
Click to collapse
You should concentrate on implementing GNS TMC protocol as it is supported by almost all navigation softwares (iGo, Navigon, Destinator, Falk, Medion, Route66 etc.)
There is a gpstmc.dll for controlling it (see attachment, it's from Navigon MN|7.3.1)
4irm said:
well, its not about finding hardware, there are already iGO versions finding the correct fm transmitter on my touch hd
Click to expand...
Click to collapse
iGo doesn't need to find a FM transmitter but a FM receiver.
johnpatcher said:
I would really love to have TMC in iGO8 . I guess this will be much more easy than implementing it for TomTom, as it has already TMC support (and even has detected the hardware).
Click to expand...
Click to collapse
If GNS protocol is implemented and a COM port can be assigned to the TMC stream then almost all navigation softwares would be able to use TMC from internal RDS receiver.
kaefert said:
There is a free TMC service form some radio stations in austria, so if you include a feature to save a log of the recieved RDS messages I can give you TMC data that won't be encrypted
Click to expand...
Click to collapse
There is free TMC in most western european countries.
There is even a tool TMCview which offers the possibility of making TMC stream readable on PDA (including all necessary decoding stuff).
Sascha
SaBo said:
You should concentrate on implementing GNS TMC protocol as it is supported by almost all navigation softwares (iGo, Navigon, Destinator, Falk, Medion, Route66 etc.)
Click to expand...
Click to collapse
Why something specific if there is OpenTMC?
flywhc said:
..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.
Click to expand...
Click to collapse
Well done, keep up the good work!
SaBo said:
You should concentrate on implementing GNS TMC protocol as it is supported by almost all navigation softwares (iGo, Navigon, Destinator, Falk, Medion, Route66 etc.)
There is a gpstmc.dll for controlling it (see attachment, it's from Navigon MN|7.3.1)
Click to expand...
Click to collapse
I use Navigon MN|7.3.1 on my Diamond and it would be great if I could add TMC..
johnpatcher said:
Why something specific if there is OpenTMC?
Click to expand...
Click to collapse
There is nothing specific about it.
GNS protocol is widely supported by almost all navigation softwares.
It supports both free TMC as well as paid TMC services (V-Traffic, TMCpro, etc.).
Almost 100% of PDA and PNA use GNS hardware in order to receive and decode TMC messages.
Sascha
SaBo said:
There is nothing specific about it.
Click to expand...
Click to collapse
But it is proprietary, wheras OpenTMC isn't (as the name suggests ).
will this program at some point fix the non working fm radio in the touch pro?
flywhc said:
5. What is...
RSSI: Received signal strength indication. Maximum value still unknown. I guess it is 32.
Click to expand...
Click to collapse
I just had RSSI 38 (see screenshot)
edit: 39
da1stprince said:
will this program at some point fix the non working fm radio in the touch pro?
Click to expand...
Click to collapse
I don't know what issue you talk about. I am using Touch pro and FM Radio works fine.
If yours doesn't work, you may need to go raphael ROM discussion find that OEM package thread and install FM Radio package
kaefert, if you run htc FM radio, how many bars on signal strength? 4 out of 8?
I guess max value should be 64 then.
those square boxes in your screenshot is a bug in my program. it shouldn't display that.
Let's start analysis.
This is a piece of raw RDS data sent via London Heart radio station:
C3 A6 20 05 48 21 E1 BB | .. .H!..
22 20 48 24 C3 A6 20 05 | " H$.. .
49 21 E1 BB 22 65 61 24 | I!.."ea$
C3 A6 20 25 53 21 6F 6E | .. %S!on
22 27 73 24 C3 A6 20 05 | "'s$.. .
4A 21 E1 BB 22 72 74 24 | J!.."rt$
C3 A6 20 85 48 21 50 6F | .. .H!Po
22 17 D5 24 C3 A6 20 05 | "..$.. .
4F 21 E1 BB 22 20 20 2C | O!.." ,
C3 A6 20 25 54 21 20 48 | .. %T! H
22 65 61 24 C3 A6 20 05 | "ea$.. .
48 21 E1 BB 22 20 48 24 | H!.." H$
C3 A6 20 05 49 21 E1 BB | .. .I!..
22 65 61 24 C3 A6 20 25 | "ea$.. %
55 21 72 74 22 20 70 24 | U!rt" p$
C3 A6 20 85 48 21 58 71 | .. .H!Xq
22 10 8C 2C C3 A6 20 05 | "..,.. .
4A 21 E1 BB 22 72 74 24 | J!.."rt$
C3 A6 20 05 4F 21 E1 BB | .. .O!..
22 20 20 24 C3 A6 20 25 | " $.. %
56 21 6C 61 22 79 69 24 | V!la"yi$
C3 A6 20 05 48 21 E1 BB | .. .H!..
22 20 48 24 C3 A6 20 | " H$..
Freq: 106200KHz = BB
PI = 50086 = C3 A6
PS = " Heart "
AF= N/A. sometimes has AF: 93400 (3B) , ....
RT = "This" "On" "Heart" "Now"
One block contains 16 bits data = 2 bytes.
A RDS group contains 4 blocks: 1, 2, 3, 4. always start with PI.
So we should see PI is repeated every 8 bytes.
But each block is followed by 10 bits checkword+offset.
The offset words are added (modulo-two) to the checkword c9 - c0 to generate the modified check-bits: c'9 - c'0.
A : 0FC
B : 198
C : 168
C': 350
D : 1B4
In Type A, block 3 is AF
In type B group, which doesn't have AF, block 3 is PI again.
Frequency table:
0 Not to be used.
1 87.6 MHZ
2 87.7 MHZ
: : :
204 107.9 MHZ
In raw RDS sent from FMS, we can see a PI repeat every 12 bytes.
So, it has either 4 bytes extra for a A type group or 8 bytes extra for a B type group
At most of time the station report no AF so I guess it uses type B.
Then we have 8 bytes checkwords/offset words, 2 bytes after each block.
In this case after every C3 A6 should be identical 20 05 but sometimes it is 20 25 or 20 85
flywhc said:
kaefert, if you run htc FM radio, how many bars on signal strength? 4 out of 8?
I guess max value should be 64 then.
those square boxes in your screenshot is a bug in my program. it shouldn't display that.
Click to expand...
Click to collapse
I think 8/8 if the strength is the 8 small dots left and right of the mhz display (see screenshot)
I guess that RSSI is higher than max value HTC can expect
PS: MAGIC
PI 51080 C7 88
AF 94600 (47)
AF 101800(8F)
RT "YOU ARE LIST...".
20 00 3C C7 88 28 05 89 | .<..(..
29 81 B3 3A 47 49 2C C7 | )..:GI,.
88 28 15 9E 31 20 20 2A | .(..1 *
20 20 2C E1 B3 22 43 20 | ,.."C
2C C7 88 20 05 8F 21 E1 | ,.. ..!.
B3 22 20 20 24 C7 88 20 | ." $..
25 90 21 59 4F 22 55 20 | %.!YO"U
24 C7 88 20 05 88 21 E1 | $.. ..!.
B3 22 4D 41 24 C7 88 20 | ."MA$..
05 89 29 E1 B3 22 47 49 | ..).."GI
24 C7 88 20 25 91 21 41 | $.. %.!A
52 2A 45 20 24 C7 88 20 | R*E $..
05 8A 21 E1 B3 22 43 20 | ..!.."C
24 C7 88 20 05 8F 21 E1 | $.. ..!.
B3 22 20 20 24 C7 88 20 | ." $..
25 92 21 4C 49 22 53 54 | %.!LI"ST
...
22 43 20 2C C7 88 20 25 | "C ,.. %
9E 29 20 20 22 20 20 2C | .) " ,
C7 80 30 05 8F 29 E1 B3 | ..0..)..
2A 20 20 24 C7 88 28 05 | * $..(.
89 21 E1 B3 22 47 49 24 | .!.."GI$
Hi all,
I've noticed that my TT7 still ran a little behind with occasional lag as per the Raphael (but nowhere near as bad)
Thought I would start a new thread for those of thus that experience this to list there tweaks/changes and radio versions so that we can keep track of this.
When posting, please state
Radio Stack currently using
Navigation software and version
Tweaks applied.
Mine are as follows
Rom Version : 1.19.401.0 (51489) WWE
Radio Stack : 3.44.25.27
Protocol Version : 61.25t.25.19U
Nav System : TT 7.910.9185
Tweaks applied.
HKLM\System\CurrentControlSet\GPS Intermediate Driver\
Deleted Data for current and old log files
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\
InputBufferSize dropped to 1024 (DEC)
OutputBufferSize dropped to 1024 (DEC)
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\GPSOneDevice\
PollInterval dropped to 100 (DEC) this is MilliSeconds
Hope this helps others.
Cheers,
Beasty
Thanks! Will definitely try these once I get the chance to actually test the GPS while moving about, at least if it seems there's still some GPS-lag in this shiny-new-monster-of-a-phone
I have added the above info to the Wiki, as this thread will soon dissappear into the ether.
The Rhodium forums are starting to pick up pace now
Cheers,
Beasty
How did your tweaks improve the lag on the tp2 ?
I did not tweak yet. TOMTOM 7 runs reasonably... the lag in IGO can be up to 40 metres. Will your tweaks improve IGO also ( and google maps for example )??
Regards
It should work for any Nav app, as the reg entries modify the intermediate MS driver config.
Reducing the buffer sizes should reduce lag, I was 10 metres behind actual location on stock settings and am now approx 2 metres to spot on depending on speed and road type. (ie twisty country lanes not as accurate as straight roads)
Cheers,
Beasty
this may saound really stupid but what do you actually mean by
Deleted Data for current and old log files
Click to expand...
Click to collapse
do you mean delete the entries entirely in the registry or or delete the valuse of the entery or empty the files they point to. Sorry for being stupid
i'm stupid too .... i also like to know
everybody will stuck with stoopidity if they just waiting for people feed them. how about a few secs to search & discover the registry key path.
there are two registry strings under the given key.
"CurrentLogFile"=""
and
"OldLogFile"=""
btw this is a known hack for raphael & kaiser also but may not needed with different gps apps.
EEEEEH ..... if you would read correctly ... you should have figured out that was not the question.
Offcourse I have found the entries. The question was about what to do with them:
1) deleted the complete registry key
2) delete the value \windows\gpslogfile.txt
i read correctly even my english is not perfect
shown above is what it should be.
monx® said:
i read correctly even my english is not perfect
shown above is what it should be.
Click to expand...
Click to collapse
Hi Monx,
Nice to see you here.
I was a big fan of yours in Raphael
Will you be developing for Rhodium too?
Cheers,
Beasty
Hi friend, sure (but still too early & hspl still not available yet). Stock ROM is just fine as there are many improvements & more user friendly. Thanks.
A. With Advanced config nel menu GPS
disable A-GPS
disable GPS logging
logfile name must be empty
old logfile name must be empty
maximum size of logfile must be 0
delete the files :
\windows\GPSLogFile.txt and \windows\GPSLogFileBack.txt
With those changes car usage will be quite perfect
B. Then edit registry
Under: HKLM\SYSTEM\CurrentControlSet\GPS Intermediate Driver\
Drivers\GpsOneDevice\PollInterval -> 100 (default is 1000)
Drivers\InputBufferSize -> 512 (default is 4096)
Drivers\OutputBufferSize -> 512 (default is 4096)
Drivers\SleepOnNoData -> 100 (default is 1000)
Multiplexer\MaxBufferSize -> 512 (by default not present, you have to create it)
With those tweaks pedestrian usage will be much better but not perfect.
I NEVER had a faster fix . even after a reset it won't take more then 10 secs to get a good signal in tomtom / igo 8 / google maps. Huge improvement
I noticed the position is a bit of in google maps but i'm testing from my window ( so not sure how it is with movement ). I will test that tomorrow in my car.
@dgh
mate, sorry to ask. how about QuickGPS. Have valid data or u didnt update it? It helps me a lot to get fix with Garmin Mobile XT & Mapking R12 Diamond edition (just for info).
sure i have downloaded that. the problem was however that the fix (after reset ) could take rather long ( well not as long as my tytn 2 .... so whats long )
after the tweak the thing that takes longest is to start the gps (tomtom says no gps for a few secs ) . when the gps came online i have almost an instant fix.
beast0898 said:
Hi all,
I've noticed that my TT7 still ran a little behind with occasional lag as per the Raphael (but nowhere near as bad)
Thought I would start a new thread for those of thus that experience this to list there tweaks/changes and radio versions so that we can keep track of this.
When posting, please state
Radio Stack currently using
Navigation software and version
Tweaks applied.
Mine are as follows
Rom Version : 1.19.401.0 (51489) WWE
Radio Stack : 3.44.25.27
Protocol Version : 61.25t.25.19U
Nav System : TT 7.910.9185
Tweaks applied.
HKLM\System\CurrentControlSet\GPS Intermediate Driver\
Deleted Data for current and old log files
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\
InputBufferSize dropped to 1024 (DEC)
OutputBufferSize dropped to 1024 (DEC)
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\GPSOneDevice\
PollInterval dropped to 100 (DEC) this is MilliSeconds
Hope this helps others.
Cheers,
Beasty
Click to expand...
Click to collapse
tried these but just keep getting access denied
combat goofwing said:
tried these but just keep getting access denied
Click to expand...
Click to collapse
What do u mean mate? access denied changing registry? which app u use? totalcmd is a good freeware (for PPC).
using ceregeditor
u may use this. pre-configured cab inside the zip.
Browse the \\Plugins folder.
beast0898 said:
Hi all,
I've noticed that my TT7 still ran a little behind with occasional lag as per the Raphael (but nowhere near as bad)
Thought I would start a new thread for those of thus that experience this to list there tweaks/changes and radio versions so that we can keep track of this.
When posting, please state
Radio Stack currently using
Navigation software and version
Tweaks applied.
Mine are as follows
Rom Version : 1.19.401.0 (51489) WWE
Radio Stack : 3.44.25.27
Protocol Version : 61.25t.25.19U
Nav System : TT 7.910.9185
Tweaks applied.
HKLM\System\CurrentControlSet\GPS Intermediate Driver\
Deleted Data for current and old log files
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\
InputBufferSize dropped to 1024 (DEC)
OutputBufferSize dropped to 1024 (DEC)
HKLM\System\CurrentControlSet\GPS Intermediate Driver\Drivers\GPSOneDevice\
PollInterval dropped to 100 (DEC) this is MilliSeconds
Hope this helps others.
Cheers,
Beasty
Click to expand...
Click to collapse
thanks the new TC works great, i have altered the bottom 3 but still not sure what i should be deleting or adding to log files so i have left them alone for now
I try to create transparent surface using directdraw but it don't work...
I create my surface like this :
Code:
DDSURFACEDESC ddsd;
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
ddsd.dwWidth = im.Width;
ddsd.dwHeight = im.Height;
ddsd.ddpfPixelFormat.dwSize = sizeof(ddsd.ddpfPixelFormat);
ddsd.ddpfPixelFormat.dwFlags=ddsd.ddpfPixelFormat.dwFlags|DDPF_ALPHAPIXELS|DDPF_RGB;
ddsd.ddpfPixelFormat.dwAlphaBitDepth=8;
ddsd.ddpfPixelFormat.dwRGBBitCount=32;//with alpha !
ddsd.ddpfPixelFormat.dwRGBAlphaBitMask =0xFF000000;
ddsd.ddpfPixelFormat.dwRBitMask =0x00FF0000;
ddsd.ddpfPixelFormat.dwGBitMask =0x0000FF00;
ddsd.ddpfPixelFormat.dwBBitMask =0x000000FF;
HRESULT hRet =ldDDraw->CreateSurface(&ddsd, &out, NULL );
But when I use AlphaBlt, alpha chanel is not used
What's wrong with my code ?
Hey
I couldn't help you with your DirectDraw code. But have you tried to develop you're apps with OpenGl ES. I think it's much better than using any MobileDirectX-feature 'cause Direct3D (and I think so: also DirectDraw) are just wrappers around OpenGL ES.
So if you have some experiences with 3D-coding (or 2D with DirectDraw or OpenGl for Desktops) on desktops you won't get any problems with OpenGL ES - even with managed code!
Here are some nice tutorials to getting started with OpenGl ES:
zeuscmd.com/tutorials/opengles/index.php
Chabun
Thank's for your reply!
I will think about it because Microsoft does not seem to have implemented this feature, despite what MSDN say...
But Direct3D and DirectDraw are not "just wrappers around OpenGL ES", they are two different API!
Furthermore, my software must be compatible with old mobile and I don't know if OpenGL was supported on these devices...
transparency in C#.net with GDI
What language are you coding in? I've been using C#.net for awhile and I use the GDI. The way I made transparency work was by drawing the background to a aux layer, the item I wanted to be transparent onto that aux layer "both items are solid at this point", then I used an API already on the phone "I can't recall what it is at the moment, I'm not at my normal pc now". The API would draw the aux layer to the offscreen buffer at a pre-determined transparency amount which already has the background. This would create the transparent effect.
If your doing a 3d environment with a lot of detail, the technique could also work....it would just contain many processes till the effect is completed. :-D
I use the Imaging library to paint my PNG with alpha channel, but it's very slow...
I'm coding in C++, but if you was able to do alpha blitting with directdraw in C# it can maybe done in the same way in C++.
About bada Heap Memory we can look into Internal menu:
http://forum.xda-developers.com/showthread.php?t=906966
About JAVA Heap we can look into:
jwc_properties.ini
3 times in Filesystem, all deletable... but which is the active info?
40 MB or 11 MB?
40 MB could be the difference to 256 MB from bada heap...
Code:
## Limited MVM configuration
MAIN_MEMORY_CHUNK_SIZE = 11534336 # (11 * 1024 * 1024) + (0 * 1024), [B][COLOR="Red"]11MB[/COLOR][/B]
JAVA_MAX_HEAP_SIZE = 10485760 # (10 * 1024 * 1024) + (0 * 1024), 10MB
JAVA_MIN_HEAP_SIZE = 1572864 # (1 * 1024 * 1024) + (512 * 1024), 1.5MB
MAX_ISOLATES = 2 # AMS Isolate + One application
Code:
## Limited MVM configuration
MAIN_MEMORY_CHUNK_SIZE = 41943040 # (40 * 1024 * 1024) + (0 * 1024), [B]40MB[/B]
JAVA_MAX_HEAP_SIZE = 32505856 # (31 * 1024 * 1024) + (0 * 1024), 31MB
JAVA_MIN_HEAP_SIZE = 2609152 # (2 * 1024 * 1024) + (500 * 1024), 2.5MB
MAX_ISOLATES = 2 # AMS Isolate + One application
More infos comes later. I have an JAVA Midlet from 2007 which shows Heap infos.
I make few tests and post results.
Best Regards
These Midlets are written 2007 for BenQ EF81, SXG75 and so on...
Big Thanx to faterpan.
Result on S8500 is not 100 % correct, but there is an result.
empty.jpg shows Heap if nothing else is running on JL2.
The other Screenshot I started Guitar Hero... and then Heap Midlet.
Goal is to learn more about heap.
Maybe we can increase bada Heap, if we decrease JAVA Heap...
Best Regards
I'm just thinking, but, could MAX ISOLATE count be related to the number of applications that are allowed to multitask? Like 1 in-built app and 1 third party app?
You mean this?
Good idea to start with. I will try if something change if I set to 4 or 5...
Thanx.
Best Regards
Hmmm...
I've modified *.FFS, we can find MAX_ISOLATES 3 times...
I changed 2 into 9...
But after 3 JAVA Midlets finish...
Second try I've opened 3 native Apps, like IM... then also 3 Midlets possible.
Not tested before if I've increase 1...
Is 3 Apps + 3 JAVA Midlets Standard?
Best Regards
Some of the native apps are in the memory all the time, like mail, clock, some can be multitask, like im and web browser, so its hard to say, but if we are talking about apps from market, then 1 is maximum.
for example you can make combination open web im and some WeatherCast(from market)+ 3 java apps + as many as you want native apps that are in memory.
hi adfree
another hole idea>>>>can we reallocate the internal memory of the phone to give it more space to use
like reducining the space of the e-mails by 100mb and put those 100mb for bada apps or add it to a swap space if bada use a swap space(like linux)?????
adfree said:
Hmmm...
I've modified *.FFS, we can find MAX_ISOLATES 3 times...
I changed 2 into 9...
But after 3 JAVA Midlets finish...
Second try I've opened 3 native Apps, like IM... then also 3 Midlets possible.
Not tested before if I've increase 1...
Is 3 Apps + 3 JAVA Midlets Standard?
Best Regards
Click to expand...
Click to collapse
The native apps which are java are not considered as java apps and are allocated special system memory like other apps. With standard configuration (Max Isolates=2), after 3 apps, I get a message saying no more apps can be opened. I changed max isolates to 4 and now 5 apps can be opened. I have increased minimum and max heap sizes and now my java apps which require a lot of memory, work smoothly.
There are actually 4 jwc_properties.ini
1st one in AppEx>SysDefault>Java
2nd one in Appex>User>Java
3rd one in Exe>Java
4th one in SystemFS>User>Exe>Java
I am 99% sure the 1st one is for the default java apps. These settings are used for the pre-installed apps.
Either of the 2nd and 3rd ones is for user installed java apps. Don't know which one.
4th one is useless I think since the games folder in that path doesn't have anything. Its an empty folder.
I Have tried finding max free memory available using badasi app on jk1 fw.
When badasI is opened it shows: app free 65-66mb(all apps closed) and lesser value if an app is opened in background(depends on app). but this is mostly avail ram for itself.
I tested using: 19 widgets on 10 homescreens: 30mb ram used & dolphin browser with 3 tabs having yahoo, dailymotion, YouTube in desktop mode, flash and javascript enabled:59mb ram used(can be found out by badasi). Native bada apps can't be used since badasi terminates them.
I Restarted phone, left for 5 min to load widgets and stabilize. Then stared badasi:64mb free, opened dolphin browser with 3sites.. then minimize, badasi restarted: 6mb free, badasi uses 7 mb for itself. finally got "Not enough memory" after trying to open messages. so totally:32+59+6+7=104mb. So after boot 100+mb is available. This gradually decreases with time....!
Regarding the JAVA heap memory it varies, as background JAVA apps start using more memory.... In this case i used UC browser(it shows same memory info in tools-page info) with almost all tabs filled with heavy websites & opera mini with 3 tabs...
Few questions:
1. Does bada have a Garbage collector?
2. The minimum heap memory given to an app is 32mb(http://developer.bada.com/support/faq#a17-1) and it can use more whereas android 2.3 gives maximum 32 mb for wave like devices!, so multitasking of heavy apps will affected in bada 2.0?
Maybe I can free more memory...
For instance I have reduced rsr Language files... to 2 lang Eng + German...
Now 1,5 MB String instead 6 MB...
Screens from modified XXLA1 S8500...
Will add Original Values from unmodified Firmware for compare...
Best Regards
Edit 1...
First Screenshot is directly after first start...
If I restart then around 10 MB less allocated...
Code:
S8500 XXLA1 DBT Unmodified/Original my tweak
Set to English
System memory 564 MB 587 MB
FREE 558 MB 586 MB
Application memory 869 MB 883 MB
FREE 749 MB 881 MB
Internal user memory 391 MB 391 MB
FREE 388 MB 391 MB
--------------------------------------------------------------
Total Heap Mem. 245,760 K 245,760 K
Allocated Mem. 72,457 K 50,968 K
Fragmenatation Level 2 % 1 %
Edit 2...