(Part 2 of my Bug Adventures series, for more real time wiki action check out my Bug Adventures wiki where I flesh out my thoughts before posting them here!)

Why doesn't my GPS aka BUGgps seem to work? By "not working", I mean it doesn't get a GPS satellite lock which results in a Java exception for those using the high level API and void values e.g. "$GPGLL,,,,,022837.595,V*1D "for apps reading the RAW GPS sentences.  My guess is it's a low level software bug that will be fixed in the "real soon now" R1.4 software release. Note that I have attached the external antenna and put it on the window sill where my other GPSes (Nokia LD-4W, Nokia E71) have no problems obtaining a GPS lock!

Herewith my debugging notes:

  1. http://bugcommunity.com/forums/viewtopic.php?t=351 seems to be the definitive source of how to fix your GPS! the fix in the thread:
    1. "navigate the front-panel menu to the GPS module and you will be able to see fix: True/False and IOX, which is the value of the IOX register:"
      1. (front panel led sequence is: modules->GPS->IOX) I get 0x63 which means
        1. bit  0: 1 == no GPS fix, since fix is active low
        2. bit 1: 1 = no overcurrent condition
        3. bit 2: 0 = no wakeup from sleep
        4. bit 3: 0 = don't know what this is, guess is 0 means don't download firmware
        5. bit 4,5 unused
        6. bit 7,6 0,1 == external antenna
  2. Other people's code I have tried
    1. GPSRawFeedExample always outputs "V*blah" which I think means void!
      1. e.g. $GPGLL,,,,,051302.397,V*10
    2. GPSLoggerSimpleGUI - the GUI doesn't work but at least the program doesn't crash :-)
    3. GPSLogger2 creates a zero length file in /tmp but does nothing else e.g. /tmp/GPSSun Jan 04 20:25:49 UTC 2009.log
    4. GpsLogger_1.1 java.lang.NullPointerException
      at com.buglabs.bug.module.gps.GPSModlet.getLatitudeLongitude(Unknown Source)
    5. My friend Simon's app has the same bug as GPS Logger 1.1 i.e. java.lang.NullPointerException
      at com.buglabs.bug.module.gps.GPSModlet.getLatitudeLongitude(Unknown Source)
      1. Simon's guess: the NMEA sentence they are getting from the underlying
        hardware isn't quite in the format they expect, so they end up trying
        to get a double out of the string  ","
      2. http://lists.buglabs.net/pipermail/bug-dev/2008-December/000167.html seems to be the same problem!
  3. Evidence that this is a Bug that's being worked on:
    1. this fix went into  svn trunk (svn://svn.buglabs.net/bug/trunk  ) on December 14, 2008, http://svn.buglabs.net/svn/!revision/7632
      // default to passive (external) antenna, until
      // such time as we have confidence in the internal            
      // antenna's ability to obtain a fix          
      log.log(LogService.LOG_DEBUG, "GPSModlet defaulting to passive (external) antenna");              
      setPassiveAntenna();