Category: gpsd

My GPS Works!

I had trouble with my DeLorme GPS a while back.  This new version of Ubuntu (or the kernel) fixes it.

I installed Ubuntu 8.10 just recently and I was able to get my GPS to work.  All I did was install gpsd with apt-get.

Here is the output from dmesg:

[39636.625066] usb 4-2: new full speed USB device using uhci_hcd and address 2
[39636.806942] usb 4-2: configuration #1 chosen from 1 choice
[39637.437849] usbcore: registered new interface driver usbserial
[39637.437876] usbserial: USB Serial support registered for generic
[39637.437912] usbcore: registered new interface driver usbserial_generic
[39637.437915] usbserial: USB Serial Driver core
[39637.452600] usbserial: USB Serial support registered for DeLorme Earthmate USB
[39637.452622] usbserial: USB Serial support registered for HID->COM RS232 Adapter
[39637.452637] usbserial: USB Serial support registered for Nokia CA-42 V2 Adapter
[39637.452670] cypress 4-2:1.0: DeLorme Earthmate USB converter detected
[39637.454432] usb 4-2: DeLorme Earthmate USB converter now attached to ttyUSB0
[39637.454461] usbcore: registered new interface driver cypress
[39637.454464] cypress_m8: Cypress USB to Serial Driver v1.09
[39637.486314] usbcore: registered new interface driver hiddev
[39637.487441] usbcore: registered new interface driver usbhid
[39637.488536] usbhid: v2.6:USB HID core driver

NavIt

I was having trouble downloading the maps for RoadNav, and I didn’t notice a lot of progress or change on the problem.  So, I checked for alternatives, and I found this.  I tried the first on the list: NavIt.

Installing

I didn’t find NavIt in the Ubuntu repository, and so, I had to install manually.  The Wiki has a getting started section with instructions for installing on Linux.

First, I had to install the dependencies so that I could compile it.  I installed the list from the dependencies section.

sudo apt-get install build-essential pkg-config automake libglib2.0-dev libtiff-dev libtool libxmu-dev libfribidi-dev gettext zlib1g-dev gpsd gpsd-clients libgps-dev libgtk2.0-dev freeglut3-dev glutg3-dev libcegui-mk2-dev libdevil-dev libglc-dev libpcre3-dev libmng-dev libfreeimage-dev

Next, I ran the configure and make.  Instead of installing, I just ran it from the directory where I compiled it.

Configuring

At this point, I had it working as long as I ran it from the directory where the program exists.  But, it didn’t have any maps for my area.  Next, I had to tackle configuring with the XML file.

First, I created a hidden directory and copied the xml file to it:

$ mkdir ~/.navit
$ cp /home/skp/bin/navit-0.1.0/navit/navit.xml  /home/skp/.navit/

Next, I opened the xml file with Gvim (my favorite text editor).  “Gvim ~/.navit/navit.xml”.  You could use any text editor to open it.

The first change I made was to change the default position.  I got my default coordinates from here as suggested in the Wiki.  I found that these coordinates got me close, but not quite the address I had requested.  So, I checked them with Google maps.  If you notice, the URL on the “Link” link in the upper right corner has the coordinates of the map you request.

I tried to run it at this point from my home directory, but it would not work.  It was looking in other directories, and so, I took the easy route and just keep running it from the source directory.  It still read my xml file from my home directory.

Next, I had to setup the maps.  I followed these directions.  I used the maps from CloudMade, which has maps of the United States.  I downloaded the *.navit.bin.zip files and extracted them to ~/.navit/.  For example, I downloaded the Florida map: florida.navit.bin.zip to ~/.navit/florida.navit.bin.  Finally, I added this to the XML file:

<mapset enabled=”yes”>
<map type=”binfile” enabled=”yes” data=”/home/skp/.navit/florida.navit.bin” />
</mapset>

Now, when I started it up, I saw a map with where I wanted it to start!

Creating a Shortcut

The last thing  I did was create a shortcut in my application menu.  This was pretty easy.

The first step was to create a simple shell script to launch the program.  This was necessary because the program has to run from the source folder.  Here is what my script looked like:

#!/bin/sh

cd ~/bin/navit-0.1.0/navit
./navit

Note: change the cd path to the location where you downloaded and compiled the program.

Then, make the script executable with:

chmod +x navit.sh

To add the menu, I used the Menus application by right clicking on the Applications menu and choosing “Edit Menus”.  I clicked on the Accessories menu and clicked the New Item button.  Here are the options that I chose:

  • Type: Application
  • Name: NavIt
  • Command: /home/skp/bin/navit.sh
  • Comment: <blank>

Note: change the Command path to the script that you created to launch the program.

For the icon, I clicked on the little spring icon on the left to choose a different icon.  For the path, I chose: /home/skp/bin/navit-0.1.0/navit/xpm/desktop_icons/128×128.

To troubleshoot, you may want to change the Type from Application to Application in Terminal because the terminal window will show you the output messages from the program.

Gpsd: Fixing for Ubuntu

I have an LT-20 Delorme Earthmate GPS.  It may not be the best GPS, but it gets the job done.  Getting it to work in Ubuntu was no easy feat.

I had to fix a bug in a cypress module.  I followed the instructions from here.

To get the kernel version, I ran:

uname -r

Then, to install the kernel source, I ran:

sudo apt-get install linux-source-2.6.24

Then, I changed directories into the installation directory and unzipped the source:

cd /usr/src
sudo tar -xvf linux-source-2.6.24.tar.bz2

Then, I copied the two files:

cd linux-source-2.6.24/drivers/usb/serial/
sudo mkdir /usr/src/modules
sudo cp cypress_m8.h cypress_m8.c /usr/src/modules/

Next, I created the make file (note that I have installed gvim.  I saw a note saying that they had problems using the gedit text editor):

cd /usr/src/modules
sudo gvim Makefile

And, I pasted these lines into the Makefile:

obj-m := cypress_m8.o
KDIR := /lib/modules/

$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

Then, I edited cypress_m8.c and commented out line 408.  The original instructions have more detail on this.  I thought the line number might be different, but it was the same as the original instructions.

When running make (sudo make) I had trouble with “make: Nothing to be done for `default’.” message.  I just opened the file and deleted and readded the tab in front of the last line.  Then, it ran fine.

Then, I ran the command:

sudo install -m 644 cypress_m8.ko /lib/modules/`uname -r`/kernel/drivers/usb/serial/cypress_m8.ko
sudo depmod -a

Resources