How to tether your Nokia N95s Internet connection to your laptop via Bluetooth in Linux

Sometimes you end up somewhere with your laptop where you just can’t find any open WiFi. Luckily you have a Nokia N95 and a Bluetooth adapter. I’m going to show you how to tether your N95 to your laptop via Bluetooth the quick and dirty command line way, as well as the prettier GUI way. In these examples I am running Fedora 9 and Gnome.

Warning: You probably only want to do this if you have a decent data plan. Using 3G data can result in a very large bill!

  1. The first thing you need to do is make sure your N95 is paired with your laptop. This is far easier than I expected. As long as you have the gnome-bluetooth package installed, it’s as simple as initiating the pairing from your phone and entering the same passkey on both the phone and the computer when prompted. You also need to have the ppp package and the wvdial package installed. If you don’t, you can simply run, as root in a terminal window, yum install ppp wvdial (or use whatever package manager comes w/ your Linux distro).
  2. Now that both devices are paired, open a terminal window and run hcitool scan to discover your phones Bluetooth MAC address. This section applies to both the command line and GUI parts of this tutorial.

    [user@radon ~]$ hcitool scan
    Scanning …
    00:22:66:9F:83:37 N95

  3. Next we use sdptool to find out the channel for the Dial-Up Networking service.

    [user@radon ~]$ sdptool browse 00:22:66:9F:83:37
    Browsing 00:22:66:9F:83:37 …
    Service Name: Dial-Up Networking
    Service RecHandle: 0x1004a
    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

  4. There will probably be a few screens of output. I have only included the relevant part in the above example. Note that the Dial-Up Networking service is on channel 2.
  5. Using your favorite text editor, as root, edit /etc/bluetooth/rfcomm.conf and make it look like the following, substituting your phones MAC address and channel number.
  6. #
    # RFCOMM configuration file.
    #

    rfcomm0 {
    bind yes;
    device 00:22:66:9F:83:37;
    channel 2;
    }

  7. Save your rfcomm.conf and exit your text editor.
  8. As root, restart the bluetooth service:

    [root@radon ~]# service Bluetooth restart
    Stopping Bluetooth services: [ OK ]
    Starting Bluetooth services: [ OK ]

  9. We have now created a Bluetooth serial port at /dev/rfcomm0 that will be persistent through reboots. This is the port you will use as a “modem” during the rest of the configuration.

Now we move on to the quick and dirty command line setup. Feel free to skip to the GUI setup below if you aren’t very comfortable with the command line.

Command Line Method
GUI Method


Command Line Method

  1. Edit /etc/wvdial.conf and make it look like this:
  2. Modem = /dev/rfcomm0
    Baud = 460800
    SetVolume = 0
    Dial Command = ATDT
    Init1 = ATZ
    Init3 = ATM0
    FlowControl = CRTSCTS

    [Dialer Bluetooth]
    Username = user
    Password = pass
    Phone = *99***1#
    Stupid Mode = 1
    Init1 = ATZ
    Inherits = Modem0

  3. I’m using Rogers Wireless in Canada and the above is the minimum configuration that works for me. Literally Username = user and Password = pass. You may need to make changes to the Username, Password, and Phone lines. Contact your wireless provider for the correct details.
  4. I also had to create a script called /etc/ppp/ip-up.local to make the automatic DNS configuration work. Here’s my ip-up.local:
  5. #!/bin/bash
    #

    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    export PATH
    echo “# created by pppd” > /etc/resolv.conf
    echo “nameserver ${DNS1}” >> /etc/resolv.conf
    echo “nameserver ${DNS2}” >> /etc/resolv.conf
    chmod go+r /etc/resolv.conf

    Don’t forget to chmod 755 /etc/ppp/ip-up.local

  6. Unfortunately I have not been able to connect as a normal user in this configuration so you’ll have to connect as root.

    [root@radon ~]# wvdial Bluetooth
    –> WvDial: Internet dialer version 1.60
    –> Cannot get information for serial port.
    –> Initializing modem.
    –> Sending: ATZ
    ATZ
    OK

    –> Sending: ATM0
    ATM0
    OK
    –> Modem initialized.
    –> Sending: ATDT*99***1#
    –> Waiting for carrier.
    ATDT*99***1#
    CONNECT
    ~[7f]}#@!}!} } }2}#}$@#}!}$}%\}”}&} }*} } g}%~
    –> Carrier detected. Starting PPP immediately.
    –> Starting pppd at Sun Oct 19 16:48:56 2008
    –> Pid of pppd: 8028
    –> Using interface ppp0
    –> local IP address 172.28.53.106
    –> remote IP address 10.6.6.6
    –> primary DNS address 207.181.101.4
    –> secondary DNS address 207.181.101.5

  7. I removed the lines containing unprintable characters, but otherwise you should see something very similar to above. Note that wvdial stays in the foreground. This is so you can disconnect by simply pressing Ctrl-C.
  8. You can verify that you are online by switching to a new terminal window and running ifconfig.

    [root@radon ~]# ifconfig
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:12767 errors:0 dropped:0 overruns:0 frame:0
    TX packets:12767 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:714652 (697.9 KiB) TX bytes:714652 (697.9 KiB)

    ppp0 Link encap:Point-to-Point Protocol
    inet addr:172.28.53.106 P-t-P:10.6.6.6 Mask:255.255.255.255
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
    RX packets:4 errors:0 dropped:0 overruns:0 frame:0
    TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:3
    RX bytes:64 (64.0 b) TX bytes:94 (94.0 b)

    [root@radon ~]# ping simplehelp.net
    PING simplehelp.net (74.52.95.42) 56(84) bytes of data.
    64 bytes from 2a.5f.344a.static.theplanet.com (74.52.95.42): icmp_seq=1 ttl=46 time=110 ms
    64 bytes from 2a.5f.344a.static.theplanet.com (74.52.95.42): icmp_seq=2 ttl=46 time=102 ms
    64 bytes from 2a.5f.344a.static.theplanet.com (74.52.95.42): icmp_seq=3 ttl=46 time=164 ms
    64 bytes from 2a.5f.344a.static.theplanet.com (74.52.95.42): icmp_seq=4 ttl=46 time=130 ms
    64 bytes from 2a.5f.344a.static.theplanet.com (74.52.95.42): icmp_seq=5 ttl=46 time=149 ms
    ^C
    — simplehelp.net ping statistics —
    5 packets transmitted, 5 received, 0% packet loss, time 4513ms
    rtt min/avg/max/mdev = 102.061/131.349/164.376/23.190 ms

  9. Once you are finished online, don’t forget to switch back to the terminal where you ran wvdial and press Ctrl-C.

    ^CCaught signal 2: Attempting to exit gracefully…
    –> Terminating on signal 15
    –> Connect time 5.8 minutes.
    –> Disconnecting at Sun Oct 19 16:54:48 2008


GUI Method

Now, if all that command line stuff scares you, here’s how to make it work using Gnome’s GUI:

  1. Click System -> Administration -> Network
  2. You will be asked to enter your root password. Enter it and click OK.
  3. Now you can see a list of installed network devices. Click on the Hardware tab.

  4. click to enlarge

  5. Now click the New button, select Modem, and click OK.
  6. Change the Modem Device to /dev/rfcomm0. If /dev/rfcomm0 is not available in the list, just type it in. Click OK.
  7. Now click the Devices tab.

  8. click to enlarge


    click to enlarge

  9. Click the New button, select Modem connection, and click Forward.

  10. click to enlarge

  11. All I needed to do to make my Rogers Wireless connection work was enter *99***1# as the Phone Number, user as the Login Name, and pass as the Password. I also chose to name this connection Bluetooth. Click Forward.

  12. click to enlarge

  13. I left these options at their defaults. Click Forward.

  14. click to enlarge

  15. We’ve finished creating the connection. Click Apply.

  16. click to enlarge

  17. Click the X in the top right corner to close this window.

  18. click to enlarge

  19. Click Yes to save the changes.
  20. Click OK. No, we won’t need to restart the computer.

  21. click to enlarge

  22. So, let’s use our newly created connection. Click System -> Administration -> Network Device Control.
  23. Select the Bluetooth connection you just created and click Activate.

  24. click to enlarge

  25. Notice how the Bluetooth connection has changed from Inactive to Active.

  26. click to enlarge

  27. Open Firefox and visit https://www.simplehelp.net.

  28. click to enlarge

  29. When you are finished online, go back to the Network Device Control window, select the Active Bluetooth connection and click Deactivate.

  30. click to enlarge

  31. Verify that the Bluetooth connection is indeed Inactive, then close the Network Device Control window.

  32. click to enlarge

  33. Some of you may be wondering why I chose not to use Network Manager. It’s quite simply due to the fact that mobile broadband support in Network Manager is in it’s infancy and I found it to be virtually unusable. Once Network Manager’s mobile broadband support becomes better, I’ll rewrite this tutorial based on it.
{ 0 comments… add one }

Leave a Comment