As part of a Dell Axim PDA bundle, I came into possession of this curious Dell Navteq BT-332 Bluetooth GPS Receiver that I’m planning to use with an offline OSM app on a laptop (something normally without a location sensor).
Before phones and other devices integrated location sensors the common setup was having an external GPS receiver that would process and relay location data via Bluetooth or physically connected serial (RS-232) port. Many manufacturers created devices in this space and this market was prolific in the early to mid 2000s.
Queries to a Bluetooth Serial Port device
# Find all TTY devices on MacOS
ls -l /dev/tty.*
# Our specific Dell Navteq device
ls -l /dev/tty.BT-GPS-33BA81-BT-GPSCOM
# Use a terminal emulator to read TTY messages from the device file
screen /dev/tty.BT-GPS-33BA81-BT-GPSCOM 38400
Device output data details
- This GPS receiver uses the NMEA-0183HS protocol. Meaning that:
- We need to connect at 38400 baud
- All data lines are CSV
- Every data line comes with a checksum to ensure data integrity
- BT-332 User Manual PDF
Message formats and types
$GPRMC
- V = void means that a GPS fix has not been established (not enough GPS satellites to get a location)
- Lat = ddmm.mmm (0-90 deg)
- Lng = dddmm.mmm (0-180 deg)
- Ground speed in knots (1 knot = 1.852 km/h)
$GPGSV
- SV Satellite information
$GPGGA
- GPS time, position, and fix related data
Sample data from screen
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,20,00,000,,10,00,000,,25,00,000,,27,00,000,*79
$GPGSV,3,2,12,03,00,000,,31,00,000,,24,00,000,,15,00,000,*78
$GPGSV,3,3,12,16,00,000,,05,00,000,,01,00,000,,26,00,000,*7D
$GPRMC,000617.061,V,,,,,,,110905,,*24 <<<< indicates a GPS fix was not yet found
$GPGGA,000618.061,,,,,0,00,,,M,0.0,M,,0000*5E
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,000618.061,V,,,,,,,110905,,*2B
$GPGGA,000619.072,,,,,0,00,,,M,0.0,M,,0000*5D
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,000619.072,V,,,,,,,110905,,*28
$GPGGA,000620.061,,,,,0,00,,,M,0.0,M,,0000*55
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,000620.061,V,,,,,,,110905,,*20
$GPGGA,000621.061,,,,,0,00,,,M,0.0,M,,0000*54
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,000621.061,V,,,,,,,110905,,*21
$GPGGA,000622.073,,,,,0,00,,,M,0.0,M,,0000*54
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
GPS Bluetooth SPP Parser
I ended up writing a NMEA parser for NodeJS which is able to connect to and consume data from this GPS module. See
my GitHub repo gps-bt-serial
for details.