Last time I tried to get GPRS working over bluetooth on Linux was a couple of years ago with my old Sony Ericsson and SUSE Linux 10. I remember spending quite some time arguing with BlueZ and my phone and while I could happily copy files to and from the phone with OBEX, I never could get them to do GPRS properly, so in the end I gave up and used a serial cable (Which had the added advantage of being able to charge the phone from my notebook’s USB while using GPRS which was usefull given the speed at which GPRS ran down the battery)

Just over a year ago my SE died a pitiful death, and the warranty had just run out, so I bought a Nokia E61i. The combination of the excitement of owning a shiny new wide screen smart phone and the fact that I changed jobs at around the same time meant that I very rarely had the need for internet access on the road, and when I did the email and web client on the E61i was usually sufficient to get the job done. (Additionally the memory of the last unsuccessfull attempt with the SE meant that I wasn’t in a hurry to try again)

However, as I am about to fly to Australia for a 2 week roadtrip up the east coast (Great Barrier reef here I come!) at a critical time at work just as a new product goes into production I figured I had better have another go at it. As it turns out, this time around, with openSUSE 11.0 and the E61i the proceedure was trivial, however all the results on google are much more complex than need be (faffing around with ppp, wvdial et al), so, without further ado, here is:

Peter’s Trivial guide to configuring 3G/GPRS over Bluetooth on openSUSE 11.0

Step one is to make sure you have a bluetooth adaptor (Pretty easy this bit huh?) and that it is enabled. Most notebooks have one built in, but a USB dongle should work just as well. openSUSE was kind enough to automatically configure mine when I installed it. If yours is configured you should see a “K” icon that resembles the Bluetooth logo in your KDE system tray. As long as you have bluetooth enabled on your phone, when you click on the “K” you should see your phone’s name show up in the list of available bluetooth devices. If you haven’t already done so, click on your phone’s name and pair it with your notebook (This will involve picking a PIN code and entering it on both PC and Phone). If your phone supports it I also recommend setting your notebook to “authorised” so that it doesn’t bother asking you if the bluetooth connection is allowed everytime your notebook tries to connect.. (On E61i “Bluetooth -> Paired Devices -> Options -> Set as authorised”)

Check that your Bluetooth adaptor is functional.

# hciconfig hci0: Type: USB BD Address: 00:1D:D9:F0:30:12 ACL MTU: 1017:8 SCO MTU: 64:1 UP RUNNING PSCAN ISCAN RX bytes:0 acl:106 sco:0 events:152 errors:0 TX bytes:2767 acl:107 sco:0 commands:64 errors:0

Find the Bluetooth MAC address of your phone with ‘hcitool scan’.

# hcitool scan Scanning … 00:17:E3:F2:DE:1A NokiaE61i

Check that the phone responds to pings.

# l2ping -c 2 00:17:E3:F2:DE:1A Ping: 00:17:E3:F2:DE:1A from 00:1D:D9:F0:30:12 (data size 44) … 0 bytes from 00:17:E3:F2:DE:1A id 0 time 69.75ms 0 bytes from 00:17:E3:F2:DE:1A id 1 time 27.88ms 2 sent, 2 received, 0% loss

Use ‘sdptool’ (Service Discovery Protocol tool) to find a GPRS modem offering Bluetooth Dial-Up Networking profile (Hopefully one will be found on your phone.. If not you are in trouble!) . In particular we need to find the Bluetooth channel number so we can connect it to the rfcomm Bluetooth “serial port” device.

# sdptool search DUN Inquiring … Searching for DUN on 00:17:E3:F2:DE:1A … Service Name: Dial-Up Networking Service RecHandle: 0x10009 Service Class ID List: “Dialup Networking” (0x1103) Protocol Descriptor List: “L2CAP” (0x0100) “RFCOMM” (0x0003) Channel: 2 Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: “Dialup Networking” (0x1103) Version: 0x0100

Bind /dev/rfcomm0 to channel 2 (found in the previous step) on the phone.

# rfcomm bind 0 00:17:E3:F2:DE:1A 2

Check that the bind was successfull.

# rfcomm show 0 rfcomm0: 00:17:E3:F2:DE:1A channel 2 clean

And check that the device we bound to actually exists.

# ls -l /dev/rfcomm0 crw-rw–- 1 root root 216, 0 Sep 19 00:41 /dev/rfcomm0

At this point you now have a “bluetooth serial device” at /dev/rfcomm0 which works with any dial-up program. Personally I use yast to add a new custom provider and then use Kinternet to dial it when I need. The only tricky thing you need to know is to “dial” 99# to use the default GPRS profile saved on your phone (Or use a specific, non-default profile with *99**1# etc where the digit before the # is the profile number).

In order to make this configuration permanant you will need to enter this data into your /etc/bluetooth/rfcomm.conf file so that the “bluetooth serial device” is automatically created at boot. It should look something like:

# # RFCOMM configuration file. # rfcomm0 { # Automatically bind the device at startup bind yes; # Bluetooth address of the device device 00:17:E3:F2:DE:1A; # RFCOMM channel for the connection channel 2; # Description of the connection comment “My Nokia E61i”; }

More info on GPRS modems can be found here..

When configuring your internet connection with yast or wvdial, you will probably want to set Baud = 921600 in order to get access to the higher speeds that modern 3G data connections allow.

Add post to: Delicious Reddit Slashdot Digg Technorati Google