====== Debian and Nokia LD-3W GPS Dongle ======
It is a while now I bought a Nokia LD-3W, my dream was a connection between my notebook and this little GPS receiver.
====== How-To ======
Connecting the LD-3W is quite simple, if you know how to do it. The only prerequisite is that you have already bluetooth kernel support.\\
===== Preparations =====
==== Packages ====
Install following package:
apt-get install bluez-utils gpsd gpsd-clients
==== Use of Bluez-Utils (Find LD-3W) ====
At first you need to find your LD-3W. To do so execute:
hcitool inq
Output:
Inquiring ...
11:22:33:44:55:66 clock offset: 0x0e82 class: 0x011f00
Then check if the device provides a fitting service. In our case we need a serial port
sdptool search --bdaddr 11:22:33:44:55:66 SP
Output:
Searching for SP on 11:22:33:44:55:66 ...
Service Name: Dev B
Service RecHandle: 0x10000
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Please note the line with the property **Channel:** this is the channel where your GPS device listens for incomming connections (//Bluetooth supports only one connection at a time//)
==== Setup rfcomm.conf ====
Edit your rfcomm.conf it should look something like this:
#
# RFCOMM configuration file.
#
rfcomm0 {
bind yes;
device 11:22:33:44:55:66;
channel 1;
comment "NOKIA LD-3W";
}
The **channel 1;** you received from the output while probing for the **SP** (//Serial Port//). Now you can start your bluetooth services.
/etc/init.d|/bluetooth start
==== Passkey Agent ====
The next problem we will face is the authentication. Many tutorials concerning the bluez tools, talking about a //pin_helper//, but actually my version of hcid does not know any option called //pin_helper//. Running hcid manually tells you something about a missing **passkey-agent**. The **passkey-agent** is a simple application connecting hcid through the dbus message bus and provides a key for all requests. There are solutions for gnome (//bluez-gnome//) and KDE, but you can also use a simple c application provided by //bluez-utils//.
cd /tmp
zcat /usr/share/doc/bluez-utils/examples/passkey-agent.c.gz >passkey-agent
cp /usr/share/doc/bluez-utils/examples/Makefile .
make
cp passkey-agent /usr/local/bin
To start the **passkey-agent**, just type:
passkey-agent --default 0000 &
//The default code of the Nokia LD-3W is '0000', afaik it cannot be changed.//
====== Using LD-3W ======
After your setup is complete you can try out, if it works. To connect your LD-3W and bind it to /dev/rfcomm* you need to run:
rfcomm connect rfcomm0 11:22:33:44:55:66 1
This command will create your tty device node located at /dev/rfcomm0
===== Preparing GPSD =====
In order to run gpsd you need to configure it.
dpkg-reconfigure gpsd
This command will ask you to enter some options, like the path to the rfcomm device. Just look at your **/etc/bluetooth/rfcomm.conf** which device is used. (The name before the opening bracket '{', e.g. rfcomm0 will be /dev/rfcomm0 if you use udev)\\
Now you can start gpsd
/etc/init.d/gpsd start
By default **gpsd** does not open the rfcomm device on start, it waits for at least one client to connect to **gpsd**. To test gpsd telnet it by using following command:
telnet localhost 2947
You also can run **xgps**, which is included in the **gpsd-clients** package. \\
Applications like kismet should also work with **gpsd**.\\
\\
Have fun!
~~DISCUSSION~~