Getting GPS console output with gllin

From Openmoko

Jump to: navigation, search

gllin is the driver used to access GPS data in the Neo 1973. If you have a FreeRunner you don't need to look at this page.


How to see gllin output

This page describes the "quick start" procedure allowing to see the first output and actually use the GPS device in the command line mode, using the gllin driver.

After you download and install the gllin_1.0+r350-r0_fic-gta01.ipk (or similar), it creates the folder 'gllin' in the root home. This folder contains the executable with the same name which starts the driver.

To get the output of this driver, read the file /tmp/nmeaNP (it is actually a pipe, not a file). The simplest way is to open another ssh connection to the phone and use cat:

cat /tmp/nmeaNP

Type cat after you start the gllin, not before. The output from the GPS driver looks like

(and so on). 

The data are presented in NMEA format which gives a lot of data. The coordinates themselves are reported with the two messages (GPRMC and GPGGA) that are described below. Both messages occur in the normal output (also in conditions when the the device does not see any satellites and cannot give actually report the coordinates). They consist of multiple comma separated fields. Even numeric fields like coordinates under some circumstances are empty. Empty fields are easy to recognize because commas are included anyway.

Below we discuss both messages, giving the real examples that were taken in surroundings of Zurich (official coordinates 47°22′N, 8°33′E with approximate elevation about 408 m) early morning (about 6:44 UTC), in the 8th of January 2008.

GPRMC message

GPRMC tels the latitude, longitude, speed, time and date. Hence the proper signal could also be used to set up the clock. If the device can see the satellites, the message looks like



  • 064459.00 Fix taken at 6:44:59.00 UTC (early morning)
  • A A for the normal (active) message or V for the void message. Void messages are described below.
  • 4723.078551,N Latitude 47 degrees 23.078551 minutes North.
  • 00831.004788,E Longitude 8 degrees 31.004788 minutes East
  • 000.0 Ground speed in knots (we are just standing in place). Multiply by 1.852 to get kilometers per hour.
  • 000.0 Track angle in degrees
  • 080108 Date - 8th of January 2008 (year goes last, 240307 is 24th of March 2007)
  • (empty) Would be magnetic variation
  • *50 The checksum, begins with *

If the device cannot see the satellites properly (it usually does not work indoors unless very close to the window), it puts 'V' (void) at the output. In this case the GPRMC messages look like


In this case it is necessary to go to the more open place. It may take several minutes before device reports the correct location.

GPGGA message

This message does not tell the speed but it tells the number of satellites, estimates the quality and gives the altitude. The message looks like



  • 064458.00 Current time is 06:44:54 UTC (the test was done early morning)
  • 4723.078480,N Latitude 47 degrees 23.078480 seconds North
  • 00831.004426 Longitude 8 deg 31.004426 seconds East
  • 1 Fix quality: 0 = invalid, 1 = GPS fix (SPS), 2 = DGPS fix, 3 = PPS fix, 4 = Real Time Kinematic, 5 = Float RTK, 6 = estimated, 7 = manual input, 8 = simulation mode
  • 06 Number of satellites being tracked (six are seen)
  • 1.0 Horizontal dilution of position
  • 464.0,M Altitude (in meters) above mean sea level.
  • 0.271000, M Height of geoid (mean sea level) above WGS84 ellipsoid
  • 0.0100505 time in seconds since last DGPS update
  • Following the spec, next should go the DGPS station ID number but seems missing.
  • *42 the checksum, always begins with *

If the device cannot see the satellites properly it reports the zero quality. The number of satellites can also be checked. For instance, the device indoors may report:


Which means that the UTM time is 12:02:13.58 (correct), the quality is 0 and no any satellites can be seen. This explains why the coordinate fields are empty.

Using grep

The trivial way to concentrate on one type of the GPS messages is to use grep which is installed in the phone:

cat /tmp/nmeaNP | grep GPRMC

From other interesting messages, device emits GPGSV (detailed information about satellites and where they are in the sky). See NMEA documenation for details.

Using awk

The awk tool provides some more elegant parsing capabilities. For example, find your current location with

awk -F, '/\$GPGGA/ {print (substr($3,0,2) + (substr($3,3) / 60.0)) $4,  (substr($5,0,3) + (substr($5,4) / 60.0)) $6}' /tmp/nmeaNP
Personal tools