Saturday, March 11, 2006

jeepx: GPS Discoveries: Qualcomm GPS API restricted on Sprint phones

location based services

While trying the Garmin Mobile on a Sanyo CDMA phone equipped with Qualcomm Mobile Station Modem (MSM) chipsets I decided to look a little deeper into what's under the hood on this particular phone.

The MM7400 offers quite a punch for a phone with features that go way beyond what one would be used to from a plain, no-frills device. Streaming video, good sound quality, A-GPS, voice, great quality display and ease of use which makes things always better.

My beef with phones start when you try to add more to it than what comes with it. The Motorola has a way in that now allows me to add even my own GPS-based apps to it. But Sprint has a much bigger lock around this phone. Let's get to it.

Qualcomm GPS API

First, Qualcomm makes available the specification of its GPS API on this site, just fill the form and you can download two PDF's: one that describes the GPS package and another with usage guidelines. From the second paper you get that behind the scenes Garmin Mobile makes two types of calls: one that uses the network data mostly and another that makes more use of the capabilities of the phone itself.

gpsOne, the group of technologies used by Qualcomm for its location-based services works through "cell network-based trilateration" which uses with CDMA [...] advanced forward link trilateration (AFLT)". It makes use of the user plane through TCP/IP.

Trying to simplify the process here you have a Mobile Set operating in two basic modes: MS-Assisted and MS-based and you basically depend on a PDE (Position Determining Entity) server like those provided by SnapTrack (a Qualcomm company) that helps the phone track the satellites position so it can obtain its first fix.

In MS-Assisted mode assistance data is sent to the phone from the location server for every fix causing a much higher volume of data but providing a great accuracy and really fast TTFT (Time for First Fix) in the other hand MS-based mode works better for an application that is tracking the device's location so it can display its position on a moving map for example and consequently minimizing the data traffic to the network.

Sprint PCS Location Services

So far so good. That's what Qualcomm made available now on the Sprint side if you try to download the SDK from the Developer site you will see right away that things won't be that easy.

Version 2.0 of the Sprint SDK (Launchpad) doesn't include the GPS piece of the Qualcomm API, it spelled out on the name of the zip file itself. According to a post to the Sprint Forum the current "SDK does not include support for Location APIs. Currently, these are available only to Sprint partners in location services or partner prospects for location services under a non-disclosure agreement [...]."

Sprint wants to recoup the money put in the investment necessary to upgrade its network, which makes sense. But remember that this whole process got started with the mandate for the E911 services.

This one is an old post, which doesn't reflect the current state of things, it seems that at some point the (compiled version) of the GPS classes were being distributed in the Sprint SDK so that applications like the GpsTester described there could possibly work but the lock was added and the compiled classes removed from the SDK. But nowadays GpsTester fails probably because it is not signed by Sprint to make use of their location server. This way it fails to connect and run on the device.

Still, there is hope

I had to check about adding my own apps to the Sanyo and this time it wasn't that hard to find a way in (please refer to the legalese at the i860 post). This site allows you to upload a J2ME midlet by sending a SMS with a "jump code" that points to the .jar on a Sprint compatible OTA server. The site also shows how you can create your own server with PHP and MySQL. GPSTester got installed thru this process, but it didn't quite work.

Signed apps, like GMapViewer can be installed from the embedded web browser itself and this one worked just fine (didn't check the search funtions) but there is no GPS support.

Looking elsewhere

And looking back at the beginning of this technology, here is an interesting piece of history on this article about oneGps and E911 implementation options with a reply from SnapTrack.

Guess the next step will be to check which other vendors SDK's that use Qualcomm's and Brew GPS API: Brew Devices By Manufacturer

And here are some pointers on Brew development at the DevX site:
Meanwhile let's go back to the iDen API and real GPS for a chang

No comments: