I have finally managed to get the GPS log from my i-Blue 747 GPS receiver onto my Nokia N800
First some background info:
- The i-Blue 747 is a Bluetooth GPS receiver with logging capabilities. It has 32Mb of internal memory on which it can store user configurable information. For example you can tell it to log the position every 5 seconds. The log can later be retrieved on a PC, either via Bluetooth or via USB. The log can be transformed to anything from KML to GPX files.
- The Nokia N800 internet tablet is a portable device which is mainly meant to be used to acces internet services (like the name suggests). It has WLAN, Bluetooth and runs an open source operating system (Debian derived!)
The log functionality of the i-Blue 747 is very nice, but to retrieve the log I need access to some other piece of hardware. At the moment I have always used my desktop PC (which runs Debian) to get the log from the GPS receiver. The internal memory of the i-Blue is quite large, but when traveling longer it can happen that it becomes full. When traveling I don’t have access to my desktop PC, so I have been looking into ways of getting the log from the GPS device in some other way.
My Nokia N800 weighs only 200 grams and would be a perfect candidate to retrieve and store the log while on the road. It can communicate via Bluetooth with my GPS device, it has two SD card readers and I have plenty of SD cards. Because of the open nature of the N800 I have been able to install some software and retrieve the log.
A few days ago Nokia released a new version of OS2008 (Diablo). I installed this version and everything I have done is with this version of the OS. I assume that you know how to become root, install software and use the terminal.
To the retrieve the log I use MTKBabel this is a perl program. It communicates with the GPS receiver via a serial port. There are two ways of connecting the GPS to the N800, the first is via Bluetooth, the second is via an USB cable. I have only been using the Bluetooth connection.
A Bluetooth connection can be mapped to a serial port by the program: rfcomm This little program isn’t in the default installation of OS2008 (Diablo) nor is it in the extra packages repository of Maemo. To get this program I had to go to the maemo SDK repository and look for the bluez-util-test package. These packages aren’t meant to be installed on the N800 but it does work! I downloaded bluez-utils-test_3.28-0osso4_armel.deb and put it on a SD card. Loaded it into the N800 and installed it. Either via “dpkg -i” or via the file manager.
Once installed I turned on the GPS reciever and enable Bluetooth on the N800. To find the address of the GPS receiver I issued the command:
~ $ hcitool scan Scanning ... 00:1C:88:00:8E:7F iBT-GPS
After that I create a serial port to the GPS device with the command:
~ $ rfcomm connect 0 00:1C:88:00:8E:7F Connected /dev/rfcomm0 to 00:1C:88:00:8E:7F on channel 1 Press CTRL-C for hangup
Yeah! I could now open a second terminal and see the GPS coordinates passing by:
~ $ cat /dev/rfcomm0
This resulted in a stream of data passing by. If you look closely you can see coordinates passing by. Ok so far for the easy part.
Now that I had a serial connection available I had to try to get MTKBabel to run on the N800. MTKBabel is a perl program. This is nice because perl is installed on the N800 by default. However the great thing about perl is that a lot of software modules are available to a developer. This is very nice but unfortunately not all of the required modules for MTKBabel are present on the N800. Finding out how to install the required modules was not trivial. Below is my method of getting the modules onto the N800.
The first thing I did was to see if some of the required modules where available in packages somewhere. I found that the Maemo SDK repository had some of the required packages here. I downloaded both the perl-modules_5.8.3-3osso9_all.deb and the perl_5.8.3-3osso9_armel.deb package. I installed these packages onto the N800. This required me to do some forcing because the packages depend on each other! So I installed perl-modules_5.8.3-3osso9_all.deb first with the command:
dpkg --force-depends -i perl-modules_5.8.3-3osso9_all.deb
And than installed the other without problems. Unfortunately MTKBabel still didn’t run and more packages where required. It requires: Device::SerialPort and Date::Format. However I could not find prepackaged packages for these. I tried to get these modules from CPAN and build them on the N800 but this didn’t work.
The solution to this was to install the Maemo SDK on my desktop PC and build the modules in the SDK and transfer them to the N800. Read the Maemo SDK installation document to find out how to install the SDK. Then get the module from CPAN and transfer it into the sandbox home dir. Extract it and build it. Note, the build software ends up in the
Now, the nice thing to do would be to create a debian package for the module. I read the packaging page on maemo and found it to complicated. So I just copied all files from the
blib/arch onto the N800 into the directory
/usr/lib/perl5/. This did the trick and perl could now find all needed modules.
Now I could get the log from the GPS with the command:
./mtkbabel -l off -f gpsdata -t -w -p /dev/rfcomm0