User Tools

Site Tools


NaviGPS with Linux


The device is known as “Scytex Navi BT GPS” or “Locosys BGT-11”. Here are some useful Links:

USB Connection

The Navi GPS uses a builtin Prolific Serial to USB converter, supported by the Linux Kernel.

Device Drivers  --->
  USB support  --->
    USB Serial Converter support  --->
      <M>   USB Prolific 2303 Single Port Serial Driver

This is displayed in dmesg upon connecting the device to a 2.6 kernel system.

usb 5-5.1: new full speed USB device using ehci_hcd and address 5
usbcore: registered new driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbcore: registered new driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
pl2303 5-5.1:1.0: pl2303 converter detected
usb 5-5.1: pl2303 converter now attached to ttyUSB0
usbcore: registered new driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver

Live GPS data processing

The best way to directly use live data provided by the gps is to use the gpsd daemon. This means you can use the Navi GPS as simple “GPS mouse”.

$> sudo aptitude install gpsd gpsd-clients

Because I just wanted to test it, not really use it on my desktop PC I didn't set the connector port and denied the start on boot question.

Now connect the device and start the daemon:

$> gpsd -p /dev/ttyUSB0

To visualize the data made available by the daemon use the xgps tool.

If you have trouble getting the NaviGPS to talk to gpsd using the NMEA protocol, then switch to the Binary protocol, which gpsd also understands.

Downloading Data

The Navi GPS comes with a Windows tool to download routes, waypoints and track data. To download the data you need to switch the device into “NAVILINK” mode for disabling the NMEA live data sending.

Locosys made specifications for the Navilink protocol available and a first Perl implementation is available.

DataLogging to SD-Card

The NaviGPS handles SD-Cards up to 2GB. When the card is formatted in the device 4 primary partitions are created but only the first one is used and formatted with FAT16. All data is stored inside a gpsdata directory. The created files are NMEA text files which use the following naming scheme: YYYYMMDD_hhmmss.TXT

v1.4 firmware formats the card without a partition table. If you try to display the partition table with fdisk on Linux it will show you four invalid partitions, although the first is close to being usable. — johnc 2007-05-18 13:04 UTC+10

You can log the following NMEA sentences in definable intervals (1, 5, 10, 30, 60, 120, 240 seconds or off):

short Description Default
GGA Global Positioning System Fix Data 1 sec
GLL Geographic position, latitude / longitude off
GSA GPS DOP and active satellites 1 sec
GSV GPS Satellites in view 5 sec
RMC Recommended minimum specific GPS/Transit data 1 sec
VTG Track made good and ground speed off
ZDA Date & Time off

As you can see it does not log Date and Time by default.

I was able to enable the logging of these options on my device in the settings. — marcel 2006-09-15 14:33

However this info can be reconstructed from the filename. Simply add a ZDA entry as first sentence. Eg. for a file named 20060816_081520.TXT add the insert the following line:


You then can process the data with gpsbabel like this:

$> gpsbabel -t -i nmea -f 20060816_081520.TXT -o gpx -F 20060816_081520.gpx

This will produce an XML file in the popular GPX format, eg. to visualize it at Google Maps.


Make sure you have Bluetooth support compiled into your Kernel. Now activate Bluetooth in the Settingsmenu and install the following packages:

  • bluez-pin
  • bluez-util
  • gpsd

(these are Debian-Packagenames)

Now edit your /etc/bluetooth/hcid.conf (Debian location):

# HCI daemon configuration file.

# HCId options
options {
        # Automatically initialize new devices
        autoinit yes;

        # Security Manager mode
        #   none - Security manager disabled
        #   auto - Use local PIN for incoming connections
        #   user - Always ask user for a PIN
        security user;

        # Pairing mode
        #   none  - Pairing disabled
        #   multi - Allow pairing with already paired devices
        #   once  - Pair once and deny successive attempts
        pairing multi;

        # PIN helper
        pin_helper /usr/bin/bluepin;

        # D-Bus PIN helper

# Default settings for HCI devices
device {
        # Local device name
        #   %d - device id
        #   %h - host name
        name "Your Device Name";

        # Local device class
        class 0x3e0100;

        # Default packet type
        #pkt_type DH1,DM1,HV1;

        # Inquiry and Page scan
        iscan enable; pscan enable;

        # Default link mode
        #   none   - no specific policy
        #   accept - always accept incoming connections
        #   master - become master on incoming connections,
        #            deny role switch on outgoing connections
        lm accept;

        # Default link policy
        #   none    - no specific policy
        #   rswitch - allow role switch
        #   hold    - allow hold mode
        #   sniff   - allow sniff mode
        #   park    - allow park mode
        lp rswitch,hold,sniff,park;

        # Authentication and Encryption (Security Mode 3)
        auth enable;
        #encrypt enable;

Now restart your bluetooth-services (“/etc/init.d/bluez-utils restart” under Debian) and scan for your Device:

~$ hcitool scan
Scanning ...
        xx:xx:xx:xx:xx:xx       Bluetooth GPS

Now we got the MAC-Address of the device. For a connection we do also need the channel, but “sdptool browse” didn't return any values. However, using kdebluetoothd i figured out that my naviGPS communicates on channel 1.

… to be continued — marcel 2006-09-15 14:13

navigps.txt · Last modified: 2009/09/10 18:31 by andi