Howto: Using your mobile phone as a bluetooth modem

Hello everybody!

It’s been a long time since I don’t write about any computer stuff so here I’m back again showing you how to use your mobile phone as a bluetooth modem under Linux. I needed it a couple of weeks back when I was travelling and wanted to be able to check my e-mail anywhere so I hope it seems usefull for you tu.

First of all a few important facts:

  • I’m using a Nokia N70 but it should work with almost any device
  • I’m using a Spanish SIMYO card
  • I’m running a Debian GNU/Linux SO with some required packages (bluez, bluez-utils, wvdial)

Altough the process should be quite simple (pair your computer with your phone and then use it) I found lot of troubles while pairing that I’ll show how to solve.

First of all you should check if your mobile phone supports acting like a bluetooth modem so do ‘sdptool browse’ and look for something like “Dial-up Networking” (obviously have your bluetooth enabled in both PC and phone).


$> sdptool browse
Inquiring ...
Browsing 00:1C:9A:40:CB:BB ...

[…]

Service Name: Dial-Up Networking
Service RecHandle: 0x10017
Service Class ID List:
“Dialup Networking” (0x1103)
Protocol Descriptor List:
“L2CAP” (0x0100)
“RFCOMM” (0x0003)
Channel: 3
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
“Dialup Networking” (0x1103)
Version: 0x0100
[…]

Okey, now lets pair both devices (here is where I found most of my problems) as none of the pages I found showed how to do it. Pairing means allowing a connection from PC to mobile phone or vicebersa.

Edit your ‘/etc/bluetooth/rfcomm.conf’ to assign a device (MAC) and channel, use which you get in the previous step.


Mirage:/home/kets# cat /etc/bluetooth/rfcomm.conf
#
# RFCOMM configuration file.
#

rfcomm0 {
# Automatically bind the device at startup
bind no;

# Bluetooth address of the device
device 00:1C:9A:40:CB:BB;

# RFCOMM channel for the connection
channel 3;

# Description of the connection
comment “DUN to use N70 as modem”;
}

Now let’s try to connect using ‘rfcomm connect rfcomm0’ which will prompt a message in your mobile phone to allow or deny the incoming connection and probably a PIN number.


Mirage:/var/lib/bluetooth/00:1F:3A:DB:1E:29# rfcomm connect rfcomm0
Can't connect RFCOMM socket: Connection refused

If you get this ‘Connection refused‘ even if you are allowing it and inserting correctly your PIN (the one specified in /etc/bluetooth/hcid.conf’), it means that you need a key agent. Anyway check your syslog to see if this is what it’s going wrong:


tail -f /var/log/syslog

Sep 20 16:45:58 Mirage bluetoothd[2993]: pin_code_request (sba=00:1F:3A:DB:1E:29, dba=00:1C:9A:40:CB:BB)
Sep 20 16:45:58 Mirage bluetoothd[2993]: No agent available for 0 request

So, this mean that what’s going wrong is that you insert any PIN in you phone and the computer doesn’t recognize it so it denies the connection request. If you have the ‘gnome-bluetooth’ package installed it is said that it should prompt a PIN code to insert the same PIN that you inserted in your phone but, at least for me, it’s not working. The solution? Use bluetooth-agent which sadly doesn’t have any man page so I had to do several tests in order to make it work.

What you have to do before trying to connect using ‘rfcomm’ is telling the bluetooh agent which PIN are you going to use, so run:


Mirage:/# bluetooth-agent 1234

And after that try to connect:


rfcomm connect rfcomm0

(write 1234 in your phone and … :))

Connected /dev/rfcomm0 to 00:1C:9A:40:CB:BB on channel 3
Press CTRL-C for hangup

There you are!, you’ve finally paired your devices!. Now, the rest of the process is quite easy. Edit ‘/etc/wvdial.conf’ as following:


[Dialer SIMYO]
Modem = /dev/rfcomm0
Baud = 460800
Phone = *99***1#
Username =.
Password =.
Stupid Mode = on
Dial Command = ATDT
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","gprs-service.com"
Modem Type = Analog Modem
New PPPD = yes
ISDN = 0
Ask Password = 0
Compuserve = 0
Force Address =
Idle Seconds = 3000
DialMessage1 =
DialMessage2 =
Auto DNS = 1

You might have to make some changes if you’re using a different network operator like phone number, username, password and the Init3 part where here it says “grps-service.com”. For the first one contact your operator, and for the following check in your mobile phone: tools -> settings -> connection -> access points, and choose the one you’re using to see the correct values.

Now we’re done, just run ‘wvdial SIMYO’, wait until the negotiation finishes and enjoy checking your e-mail or surfing the web:


Mirage:/home/kets# wvdial SIMYO
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","gprs-service.com"
AT+CGDCONT=1,"IP","gprs-service.com"
OK
--> Modem initialized.
--> Idle Seconds = 3000, disabling automatic reconnect.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Fri Sep 25 00:12:36 2009
--> Pid of pppd: 9543
--> Using interface ppp0
--> pppd: ��[0c]
--> pppd: ��[0c]
--> pppd: ��[0c]
--> pppd: ��[0c]
--> local IP address 95.214.14.79
--> pppd: ��[0c]
--> remote IP address 10.6.6.6
--> pppd: ��[0c]
--> primary DNS address 195.230.105.134
--> pppd: ��[0c]
--> secondary DNS address 195.230.105.135
--> pppd: ��[0c]

That was all. Hope it helps 🙂

11 Responses to “Howto: Using your mobile phone as a bluetooth modem”

  1. Xarly Says:

    Deberías actualizar un pokito no? Por cierto, he probado esta movida y no va.

  2. Bluetooth « La cocina de Tux Says:

    […] algunos links para hacer cosas interesantes con el Bluetooth, amen del problema que nos afecta, y en uno de ellos comenta que la solución pasa por el Bluetooth-agent, que con Gnome pasa por instalar el paquete […]

  3. thiemel Says:

    Thank you very much for your “howto”

    Also there is other “not clean” solution – you can create / modify file
    “/var/lib/bluetooth/<adapter mac address>/pincodes” file which will contain string:
    <client1 mac> <pin1>
    <client2 mac> <pin2>

  4. How Ubuntu’s broken bluetooth support came to be « Benny’s Blog Says:

    […] you can just say, ‘Well, instead of hcid.conf just use blah.conf’. I did get a long way configuring my keyboard in rfcomm.conf, but since my keyboard doesn’t seem to support SMP (Session Multiplex Protocol, I got errors […]

  5. mced Says:

    Thank you very much! I’ve been sucessfully using a Sony-Ericsson Z610i with Yoigo for the past three years. Now I’ve bought a Nokia N900, but I couldn’t connect with it. Thanks to your “bluetooth-agent” trick and your wvdial.conf file, I’ve finally reach that goal.

    And now, Manolete language: ¡muchas gracias! Durante tres años me he estado conectando con ese móvil y ese operador que no pienso volver a escribir. Ahora que me había comprado ese otro móvil, no conseguía conectar por ignotas razones. Pero gracias al truco del “bluetooth-agent” y a tu archivo wvdial.conf, me he llevado el gato al agua (I’ve brought the cat to the water).

    • Jaime Says:

      mced, perdona por contestar tan tarde… Me alegro que te haya servido el post para algo, la verdad es que me costó mucho solucionarlo y siempre viene bien dejarlo aquí, plasmado, para que a otros les resulte más fácil.

  6. Star Says:

    Hi there, just became aware of your blog through Google, and found that it
    is truly informative. I’m gonna watch out for brussels. I’ll appreciate if you continue this
    in future. Lots of people will be benefited from your writing.
    Cheers!

  7. Bluetooth | La cocina de Tux Says:

    […] Bluetooth que habrá que probar en algún momento, amen del problema que nos afecta, y en uno de ellos comenta que la solución está en el Bluetooth-agent, que con Gnome pasa por instalar el […]

  8. Bluetooth | La cocina de Tux Says:

    […] con el Bluetooth que habrá que probar en algún momento, amen del problema que nos afecta, y en uno de ellos comenta que la solución está en el Bluetooth-agent, que con Gnome pasa por instalar el paquete […]

  9. Benny Bottema » How Ubuntu’s broken bluetooth support came to be Says:

    […] you can just say, ‘Well, instead of hcid.conf just use blah.conf’. I did get a long way configuring my keyboard in rfcomm.conf, but since my keyboard doesn’t seem to support SMP (Session Multiplex Protocol, I got errors […]

Leave a comment