Sunday, 1 February 2009

Visualizing the GPS Satellite Status

In a previous blog I mentioned that J Larimer J Larimer posted a way on how to get to the satellite status information that is captured by Android from the NMEA GSV messages.

I now put a little app together that visualises the satellite status in a way some GPS units do this. This is how it looks like on my OpenMoko:

On the OpenMoko this APK will run if a patch I posted on the Koolu Android Forum is applied to the Android Openmoko build as otherwise the GPS GSV NMEA messages are not parsed at all.

I do not have a G1 phone, but J Latimer's post suggested that the messages are correctly parsed on the device and that the updates are propagated through the Android stack. I would love to hear from someone if this works for you on the G1. Maybe even send a screenshot.

The APK for this app can be downloaded from here and the source is here.


Brian Code said...

Great little program! We've included it in the Koolu Android on Freerunner image by default. One question, could you please include the ability to have the signal strength numbers on top of (or below) the signal strength bars?


Rmac said...


Can you tell me where you got the algorithms for creating the satellite sky plot? I would like to understand how the NMEA data is converted to a graph of the sky view.

I've compared the output of your app to that of another Android app called GPS Status and they seem different.


Ludwig said...

You can download the source for the whole application from

As I said in the blog, I do not have a G1 and, as I had to implement some of the Openmoko functionality myself, it might differ on the G1. The most likely culprit here is the ordering of satellites used in the fix. It was not apparent from the documentation in which order this has to be.

On the Openmoko my output has been checked against a Garmin GPS and against the raw NMEA messages and I believe I am correct.

Jon said...

Thanks for the link to my blog! I tested out YGPS Satellite Status app on the G1 - it works great. Check out

Matze said...

Is there a version that works on cupcake?

Fury said...

Thanks for the code !
it still working on Android 2.3.3 :)

But seems it didn't want the code in the package, so I changed this part with a similar code.

I am not sure to understand the meaning of "Unused satellite", I see only 2 states in my API (wich correspond to "NoFix" and "Used" in the project).

There is my project :

As I am very new java developer, if you try out my code I'll appreciate a comment to tell me if my changes were necessary and if it is correct (it run fine on my Nexus S) :)