[Mogul, XV6800 ROM Development] TalynOne:
Why does my application never find (or find slowly) my built-in GPS?

It seems that the way the gpsOne chipset is implemented, through Microsoft's Intermediate GPS driver, requires it to be primed/started in way not all GPS applications support. Some people have been using Google Maps Mobile to prime the GPS so it can be used with another application, such as TomTom. I've found a much better way to prime the GPS application, using the freely available Holux GPS Viewer v1.5, which you can get HERE. Once you run the application, make sure, under the Setup tab, that the Com Port: is set to COM4:, then just press the "Open GPS" button. You should start recieving a scrolling list of NMEA protocol messages in the listbox below.

You can check the satellite status by going to the "GPS Status" tab. For an accurate fix you must have a signal to at least 4 satellites (at least 4 blue bars).

Once you have a lock you can start the application you wish to use the GPS with, such as TomTom. Once your application is working with the GPS you can exit the GPS Viewer application if you wish. The GPS may stop working if the GPS Viewer application isn't running, and your device goes into standby mode. You can leave GPS Viewer running the background, so that the GPS restarts on wakeup, but this sucks up around 5% CPU power and uses about 1MB of program memory. Hopefully someone can find/program an application that runs as a service in the background taking minimal CPU power that does the same thing that GPS Viewer does (GPSGate does not work).

I was a little annoyed that I had to reselect COM4: every time I started GPS Viewer, so I created a hacked version that preselects COM4 for you, which you can get HERE.

UPDATE 1 ( 1-27-08 ) - Baffles and tekmaven are working on a background service which will keep the GPS running on demand. It should have support for either keeping it going all the time, when you tell it to, or by detecting when GPS-using apps are running.

UPDATE 2 ( 1-27-08 ) - Some have also reported having good luck with VisualGPSce, which uses around 320KB program memory, and around 15% of the CPU when running in the background.

UPDATE 3 ( 1-27-08 ) - Baffles has just released BAF's GPS Launcher v0.1-test. Mirror HERE (post by yacko). The launcher, will set up/connect to the internal GPS, then launch a specified GPS app (TomTom,iGo, etc.). It's pretty basic in functionality, but it gets the job done for now. The next revision of this will end up being a background service on the phone that automatically enables GPS as needed, but for now, this is a better solution than running Google Maps Mobile/Holux GPS Viewer/etc in the background.

UPDATE 4 ( 1-29-08 ) - Shadowmite has just released GPS Launcher. It's a universal GPS proxy launcher. It works in a similar manner to Baf's launcher, but it's written in native code so it should run a lot faster, and take up less memory.

UPDATE 5 ( 1-30-08 ) - AstronusX has just released AstroGPSLauncher. As with the above launchers it opens the GPS port and launches your specified GPS application. It will close itself when you close the GPS application. It's also written in native code, the program is only 10k and uses a minuscule 2k of RAM. Since it keeps running in background until you exit your GPS software will allow your GPS software to reacquire the GPS signal when your Titan comes back from standby (power button) mode.

How can I keep my GPS alive in the background?

I have found no way of keeping the GPS alive while in standby mode. So your best bet, if you want the GPS always running, is to make sure you don't turn off the Titan (which puts it into standby mode). Instead, just turn off turn off the display back light (to maximize battery power). To keep the GPS alive, run the Holux GPS viewer, or better yet just use the AstroGPSLauncher (referenced above). These programs, while running, restart GPS communication when the phone comes back from standby mode. Be careful though, this can be a big battery drain if you're in a weak GPS signal area.

It takes too long to get an initial lock on the GPS satellites (cold boot), is there a way to make it faster?

Our HTC cousin, the Kaiser/Tilt/TyTn II, also with a gpsOne based GPS, included an application called QuickGPS. QuickGPS downloads current orbital satellite locations from the Internet, helping the GPS get its initial (cold) lock faster. It requires an Internet connection to download the orbital data, it does not initiate an Internet Connection for you (so you may have to connect to the Internet yourself first).

You can get QuickGPS (ripped from the Kaiser ROM) : HERE. Make sure you install this into main memory.

After tapping the Download button in QuickGPS, the status bar would reach 100%, and then gave me a "Connection failed" error. It seems the ephemeris orbital data (xtra.bin) is downloaded to the "\Temp" folder, but never copied to the "\Windows" folder. I was able to fix this by, first making sure my QuickGPS registry settings matched the settings shown HERE, and hacking the QuickGPS.exe as described HERE

I have included a patched version of QuickGPS, along with a Resco Regedit export of my QuickGPS registry settings for download HERE (copy the "QuickGPS.exe" into your mobile device's "\Windows" folder).

I have no idea if QuickGPS actually helps/works, since I haven't really had to opportunity to test it yet.

I've tried everything in this FAQ, but can't get the GPS to respond, what else can I try?

Some things that others have had tried that they claimed helped include:

Toggling your phone's location setting is set to "OFF", OKing it, and toggling it back "ON".

As with any GPS unit, you the clearer view of the sky you have, the more likely you'll catch a GPS signal. Also, if you're moving often (such as driving a Car) the GPS will have a harder time getting an initial lock. Ideally try standing outside 5-20 minutes with a program that can start the GPS running, such as "Holux GPS Viewer", and see if that helps.

Hard reseting.

How can I find GPS radio status information?

In your dialer (Green handset button), dial the Debug code ##33284# (this just runs "\Windows\FieldTrial.exe").

In the application that opens, press the "Debug Info" button (left Soft-Key). In the menu that pops up, choose "GPS".

What kind of GPS device is inside the Titan?

The chipset the Titan uses is the Qualcomm MSM7500. As part of this chipset there's an embedded gpsOne GPS module.

The gpsOne can operate in 4 modes:

Standalone - Your handset has no connection to the network, and uses only the GPS satellite signals it can currently receive to try and establish a location.

MS Based - Your handset is connected to the network, and uses the GPS signals + a location signal from the network.

MS Assisted - Your handset is connected to the network, uses GPS signals + a location signal then relays its 'fix' to the server, which then uses the signal strength from your phone to the network towers to further plot your position. You can still maintain voice communication in this scenario, but not 'Internet/Network service' ie Web Browser, IM, streaming TV etc..

MS Assisted/Hybrid - Same as above, but network functionality remains. Normally only in areas with exceptional coverage.

I'm guessing (not verified) that ours runs in "Standalone" mode since the GPS stays on and keeps getting data if the phone is off (to turn off just the phone part of the Mogul, go to the Today Screen, hold down the red hang-up button for 3-4 seconds, and then let go).