31st December 2011

3G Internet over bluetooth on Asus EeePC 1000H

Since the holidays started, I have been trying to get all the computers up-to-speed, running software updates and reformats, since I'm pretty sure that there will be no time for me to bother with malfunctioning computers next year.

I put my eeepc 1000 back into action recently (fixing its broken keyboard due to its vulnerability to water), and that led me to wonder whether the Blackberry actually supports internet thetering, especially since there is no such thing mentioned in its user interfaces. Apparently it can - over bluetooth and USB. Linux dosen't seem to detect anything special when I plugged it in via USB - perhaps extra drivers are needed. Bluetooth works though, so I'm going with that.

For some weird reason, eeepc has 2 rfkill switches for bluetooth. One is definitely located at /sys/class/rfkill/rfkill1, and the other, which will only appear once rfkill1 is turned on, will have a random number:

% ls /sys/class/rfkill
rfkill0  rfkill1
% sudo zsh -c 'echo 1 > /sys/class/rfkill/rfkill1'
% ls /sys/class/rfkill
rfkill0  rfkill1  rfkill2
% sudo zsh -c 'echo 1 > /sys/class/rfkill/rfkill2'

After installing bluez, I then started the bluetooth daemon:

sudo /etc/rc.d/bluetooth start

The hci0 device also needs to be brought up or hcitool won't detect it:

sudo hciconfig hci0 up

I then had to allow my Blackberry to be discoverable by bluetooth, then I scanned for devices using:

% hcitool scan
Scanning ...
    XX:XX:XX:XX:XX:XX  pykblackberry

Which allows me to find the device ID XX:XX:XX:XX:XX:XX.

I then had to pair the device using:

sudo bluez-simple-agent

Then connecting to the eeepc through the blackberry. This only needs to be done once.

Then the blackberry had to be binded to a rfcomm device. I had no way of guessing which channel blackberry uses for modem (No idea where to find spdtool, any ideas?), so I just guessed 1:

sudo rfcomm bind 0 XX:XX:XX:XX:XX:XX 1

Once binded, the /dev/rfcomm0 device will be available. I then just had to configure wvdial to use it. My wvdial config at /etc/wvdial.conf (I'm using Singtel):

[Dialer Defaults]
Init4 = AT+CGDCONT=1,"IP","internet"
Modem Type = Analog Modem
Phone = *99#
ISDN = 0
Username = 65ideas
Init1 = ATZ
Password = internet
Modem = /dev/rfcomm0
Baud = 460800

Then to connect:

sudo wvdial

Seems like quite a lot of effort though. I'll probably code up a script which can be activated with a button or something.