Transferring files between Debian and a Nokia 6555 cell phone

A short howto describing the way I figured out how to move files via bluetooth between my Nokia 6555 cell phone and my Thinkpad X31 running Debian GNU/Linux.

After some frustration I got some great help from HanishKVC on getting things going. It seems a lot depends on gnome, and figuring out how to do bluetooth in XFCE, etc., proves difficult.

First I enabled bluetooth on my phone (via Settings -> Connectivity) and enabled it on my laptop:

magnum:~# echo enable > /proc/acpi/ibm/bluetooth

I was able to see the phone:

gsf@magnum:~$ hcitool scan
Scanning ...
        00:1B:AF:D5:CA:1C       Nokia 6555b
gsf@magnum:~$

I installed obexftp and tried to check some files, but failed:

gsf@magnum:~$ obexftp -b 00:1B:AF:D5:CA:1C -l
Browsing 00:1B:AF:D5:CA:1C ...
Channel: 10
Connecting...failed: connect
Still trying to connect
Connecting...failed: connect
Still trying to connect
Connecting...failed: connect
Still trying to connect
gsf@magnum:~$

Each time, the phone asked for a passcode/passkey and I put in the one I had in /etc/bluetooth/hcid.conf ("1234"), but it failed to pair. I was finally able to get past it by building passkey-agent (note that on a really stripped-down machine I had to install libdbus-1-dev for the make to work):

magnum:~# cd /usr/share/doc/bluez-utils/examples/
magnum:/usr/share/doc/bluez-utils/examples# gunzip passkey-agent.c.gz 
magnum:/usr/share/doc/bluez-utils/examples# make
cc `pkg-config --libs --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE
-DVERSION="\"unknown\"" -o passkey-agent passkey-agent.c 
magnum:/usr/share/doc/bluez-utils/examples# mv passkey-agent /usr/bin/
magnum:/usr/share/doc/bluez-utils/examples#

I also had to set a default key:

gsf@magnum:~$ passkey-agent --default 1234 &
[1] 18890
gsf@magnum:~$

When I tried again, the passcode worked:

gsf@magnum:~$ obexftp -b 00:1B:AF:D5:CA:1C -l
Browsing 00:1B:AF:D5:CA:1C ...
Channel: 10
Connecting...Passkey request for device 00:1B:AF:D5:CA:1C
done
Receiving "(null)"...\<?xml version="1.0"?>
<!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"
 [ <!ATTLIST folder mem-type CDATA #IMPLIED> ]>
<folder-listing version="1.0">
    <folder name="Graphics" created="20060101T000000" user-perm="R" mem-type="DEV"/>
    <folder name="Themes" created="20060101T000000" user-perm="R" mem-type="DEV"/>  
    <folder name="Tones" created="20060101T000000" user-perm="R" mem-type="DEV"/>   
    <folder name="Video clips" created="20060101T000000" user-perm="R" mem-type="DEV"/>
    <folder name="Music files" created="20060101T000000" user-perm="R" mem-type="DEV"/>
    <folder name="Images" created="20070101T000000" user-perm="R" mem-type="DEV"/>  
    <folder name="Audio" created="20070101T000000" user-perm="R" mem-type="DEV"/>   
    <folder name="Received files" created="20070101T000000" user-perm="R" mem-type="DEV"/>
</folder-listing>
done
Disconnecting...done
gsf@magnum:~$

Once the device is paired, I no longer need the passkey-agent to be running to connect.

To pull down multiple files from my phone, I use a bash command such as this:

gsf@magnum:~$ for a in `seq 10 38`; do obexftp -b 00:1B:AF:D5:CA:1C -g \
Images/Image0$a.jpg; done
keywords: Debian, Linux, Nokia, 6555, bluetooth created 2008-07-04 last modified 2009-01-27