Thinkpad Stories (5 already): “Bluetooth and Nokia phones.”

Story number 5 already.

Here is the background talk: now that I finally have bluetooth support (I never had an USB dongle) I could finally copy my pictures over from my Nokia phone (since I don’t want to invest in an expensive non-standard USB cable).

I followed some advice from the forums and other Internet resources… here is how I did it.

Make sure the following packages are installed on your system:

sudo apt-get install gnome-bluetooth
sudo apt-get install obexserver
sudo apt-get install bluez-utils

Then load the following modules into the kernel (I could skip this step).

sudo modprobe l2cap
sudo modprobe rfcomm

Also, start your bluez-utils:

sudo /etc/init.d/bluez-utils start

Since I am using my Thinkpad, I active the integrated bluetooth device:

sudo su
echo enable > /proc/acpi/ibm/bluetooth

Activate bluetooth in your phone. Make sure it is visible to other devices.

Now do:

hcitool scan

You should see something like this:

Scanning ...
00:11:22:DD:EE:FF YOUR_PHONE_NAME

Copy the address to the clipboard, you’ll use it later.

Now we edit a simple configuration file:

sudo gedit /etc/bluetooth/rfcomm.conf

And save this (use your own address, leave the channel to 10):

rfcomm0 {
device ADDRESS_OF_YOUR_PHONE;
channel 10;
comment "Your description";
}

You may wonder how we got this channel, you can find out by entering this command:

sdptool browse ADDRESS_OF_YOUR_PHONE

Somewhere in the output you find the following:

Service Name: OBEX File Transfer
Service RecHandle: 0x1000f
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100

See?

Now add the Nokia channel to communicate with the phone:

sudo sdptool add --channel=10 OPUSH

And bind it with rfcomm:

sudo rfcomm bind /dev/rfcomm0 ADDRESS_OF_YOUR_PHONE 10

You’re all set up… now you can:

Send a file from your phone:

(1) Start the obexserver with (stores files in /tmp, you must enter this command after every file send):

obexserver

or (stays open, should store in your home dir, but didn’t work with me):

gnome-obex-server

(2) Use your phone, select a picture or video file, then Options -> Send -> Via Bluetooth, it should find your PC.

Send a file to your phone:

(1) gnome-obex-send /path/to/file

It should find your phone and prompt you.

Don’t forget that you must use these commands every reboot again (or you could make a script):

sudo modprobe l2cap
sudo modprobe rfcomm
# (re)start (if necessary):
sudo /etc/init.d/bluez-utils
echo enable > /proc/acpi/ibm/bluetooth
sudo mknod /dev/rfcomm0 c 216 0
sdptool add --channel=10 OPUSH
sudo rfcomm bind /dev/rfcomm0 YOUR_PHONE_ADDRESS 10

When you’re done, I find it neat the disable the integrated bluetooth device (let’s conserve power) this is easy as pie:

echo disable > /proc/acpi/ibm/bluetooth

and you could also stop bluez-utils:

sudo /etc/init.d/bluez-utils stop

if you want.

This was one of my reasons why I kept a Windows partition. Now that I have figured out how to do this in Ubuntu, one partition has a greater change of being wiped and merged.