How to get an External GPS Working with an HTC Touch Diamond Windows Mobile Phone
Wednesday, June 03, 2009, by Sebastian Dwornik

The HTC Touch Diamond phone supports a built-in QualComm GPS receiver, which in most cases works fairly well, but its sensitivity to acquiring satellites quickly is still lacking.

In my experience, the moment I near the vicinity of a larger city, such as Toronto, and turn ON the internal GPS, it will almost always fail to lock-on any satellites.  This is without even getting into the downtown core with skyscrapers and other large buildings.

Before this, I used to use the OnCourse SiRF star III Bluetooth GPS Receiver with a simple PDA, which worked extremely well, even indoors.

So given that the HTC Touch Diamond phone has Bluetooth support, I decided to try using the OnCourse external GPS with it.

Within a few minutes I had the two devices linked over Bluetooth and configured the External GPS parameters under the Settings -> System dialog.


Bluetooth Settings


External GPS Settings


Unfortunately, it wasn’t quite that simple.

When it failed to work, I reviewed my steps including the External GPS parameters under Settings -> System dialog, and noticed that the GPS Hardware port was not being saved.


GPS Hardware Port


So, as usual, the first step is to ask for help from the Google oracle.  When that failed to retrieve a working solution, I rolled up my sleeves and went Registry diving.

I tested the various Windows Mobile Emulators I use for developing my software, and the External GPS parameters were being saved properly on them.  It was then just a matter of comparing the registry details with my HTC Touch Diamond phone.

The Windows Mobile Emulators contained a "Control Panel Configured Device" key located under [HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers] that was missing on my HTC Touch Diamond phone.

So I added this missing key, copying also its parameters from the Emulator images, and the resulting setup was formed.

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers]
"CurrentDriver"="Control Panel Configured Device"
"CurrentDriverExt"="Control Panel Configured Device"
"SleepOnNoData"=dword:000003e8
"RetryWaitOnError"=dword:00000003
"OutputBufferSize"=dword:00001000
"InputBufferSize"=dword:00001000

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\Control Panel Configured Device]
"CommPort"="COM2:"
"InterfaceType"="COMM"


PHM drivers    PHM Control Panel


When the "CurrentDriver"="Control Panel Configured Device", the GPS Hardware port setting is then saved properly, and I am able to establish a working connection with the OnCourse external GPS.

To revert back to using the HTC internal GPS, I simply rename the "CurrentDriver" registry keys to match their appropriate setting.


Internal Driver    External Driver


This may seem like an inconvenience to always having to rename a registry key every time I want to switch to using an external GPS, and ideally a little app that would do it for me would be better.  Maybe I’ll write one if there is enough interest.

 

Welcome to my microISV

My name is Sebastian Dwornik and I am a software developer near Toronto, Canada.

Here you will find my thoughts on all matters regarding software, my company, and sometimes life in general.

Have feedback? Don’t be shy and post your comments within the forum.


Categories Subscribe through RSS
Archives

July (1)
June (1)
May (2)
April (1)
March (1)
February (2)
January (1)

Past archives (2009)

Past archives (2008)

 
 
Copyright © 2007 - 2010 Applied PDA Software, Inc. Fresh Lime Studio
All products mentioned on this web site are owned and copyrighted by their respective companies.