Connecting your 6600 to the internet via Bluetooth and PPP under Linux

First, set up your 6600 by following the Mika Raento's instructions here:

I wasn't able to get the setup working on WinXP/Win2K except by using a proxy (which allows you to surf but doesn't allow you to use Agile Messenger and AvantGo which is my primary reasons for trying this setup). If you're bent on using WinXP for this, join the Allaboutsymbian forum. Someone there should be able to help you out.

My attempt at making it work with Linux is more fruitful. I am aware that the information below can be confusing, my apologies in advance. If you're still stuck, i can try to help out - e-mail me at rml at

on your 6600's Bt Connection profile, enter your actual dns servers (look them up in /etc/resolv.conf) On the Linux end (I use Fedora Core 2, kernel 2.6.5-1.358). If you're having problems setting up your USB devices, i urge you to upgrade to kernel 2.6-x). You can download Fedora Core 2 from Google for the following files below:

#ls -al bluez* -rw------- 1 root root 83427 Jun 2 17:36 bluez-bluefw-1.0-2.i386.rpm -rw------- 1 root root 32415 Jun 2 17:36 bluez-hcidump-1.5-4.i386.rpm -rw------- 1 root root 21169 Jun 2 17:36 bluez-libs-2.5-2.1.i386.rpm -rw------- 1 root root 22048 Jun 2 17:36 bluez-libs-devel-2.5-2.1.i386.rpm -rw------- 1 root root 27385 Jun 2 17:37 bluez-pan-1.1-4.i386.rpm -rw------- 1 root root 19790 Jun 2 17:37 bluez-pin-0.23-1.i386.rpm -rw------- 1 root root 49030 Jun 2 17:37 bluez-sdp-1.5-2.1.i386.rpm -rw------- 1 root root 25603 Jun 2 17:37 bluez-sdp-devel-1.5-2.1.i386.rpm -rw------- 1 root root 75257 Jun 2 17:37 bluez-utils-2.4-3.i386.rpm

Install everything #rpm -Uhv bluez*

add the following lines to /etc/modules.conf alias net-pf-31 bluez alias bt-proto-0 l2cap alias bt-proto-2 sco alias bt-proto-3 rfcomm revise your /etc/bluetooth/rfcomm.conf rfcomm0 { # Automatically bind the device at startup bind yes; # Bluetooth address of the device device 00:0e:6d:31:aa:38; # RFCOMM channel for the connection channel 3; # Description of the connection comment "Hopeless Case"; } In your /etc/bluetooth/hcid.conf disable the following two lines by remarking with #s auth enable; encrypt enable; #killall -HUP hcid #hciconfig hci0 up // to detect and get your USB device up. hci0: Type: USB BD Address: 00:0C:76:D3:C7:06 ACL MTU: 192:8 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN RX bytes:197801 acl:3082 sco:0 events:6916 errors:0 TX bytes:1354416 acl:11245 sco:0 commands:142 errors:0 #hcitool scan Scanning ... 00:0E:6D:31:AA:38 Ron's 6600 // ok it can see the phone
** On your 6600, under Connectivity->Bluetooth->Paired-Devices select "New Paired Device"
and wait for it to detect your PC's BT. It should now ask for a PIN. After you have paired your new device, Authorize it. ** you can now try pinging the device to further confirm BT link-up.
#l2ping 00:0E:6D:31:AA:38
0 bytes from 00:0E:6D:31:AA:38 id 200 time 45.03ms
0 bytes from 00:0E:6D:31:AA:38 id 201 time 15.16ms
0 bytes from 00:0E:6D:31:AA:38 id 202 time 15.50ms
3 sent, 3 received, 0% loss
** Check if /dev/rfcomm0 exists, if not, you'll have to make it manually (i went ahead and made 16 devices myself).
#mknod -m 660 /dev/rfcomm0 c 216 0
#mknod -m 660 /dev/rfcomm1 c 216 0
#mknod -m 660 /dev/rfcomm2 c 216 0
#chgrp uucp /dev/rfcomm*
** I was in trouble at this point since despite everything checking out ok, i could not establish a PPP connection from the 6600 to my PC.

According to Mika Raento (author of the original instructions for setting up the 6600 for non-gprs internet access): "I think the problem is in getting the 6600 to connect to your machine when the bluetooth serial connection is requested.

You can do that by sending _from_ your machine to the 6600's BT serial port. The 6600 will then remember that connection (this is used by mrouter) and use it in the future.

Do something like:
        rfcomm bind 1  
        echo x > /dev/rfcomm1
Now the 6600 will try to connect back using mrouter, which will fail. After it gives up (you can make it give up by swithing BT off and on), you should be able to connect via the access point."

** That solved that problem. Thanks again. #rfcomm bind 1 00:0E:6D:31:AA:38 3 ** Then do a "echo x > /dev/rfcomm[ 0 or 1 or 2 ]. When you hit the right one, your 6600 will respond with a "connection/disconnected closed" message.

** Run dund (its useful initially to use --nodetach since its easier to get an indication of when a valid ppp connection is achieved). I had tried using 169.254.x.x as my private net for the BT connection as suggested in Mika's docs, but it i could not get any data passed through the PPP connection afterward so i just used 10.0.0.x which worked well for me.
#/usr/bin/dund --listen  --channel 3 --msdun noauth 115200 ms-dns  lock --nodetach --persist
** If things are working as they should you should get something similar to:
dund[6863]: New connection from 00:0E:6D:31:AA:38
Using interface ppp1
Connect: ppp1 <--> /dev/rfcomm1
local  IP address
remote IP address
** Test if you can ping your 6600
.. usual ping response here ..
** If it responds favorably, you can try running apache on your machine and loading it from your 6600's Opera browser. If you have Apache installed:
#service httpd start
** You should be able to see the default FEDORA welcome page at this point

** Now for the final step. write the following into a script and make it executable. Its a condensed version of the basic masq script from the Linux IP Masquerade How-To (
# my pppoe ppp device
# my BT ppp device
$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
$IPTABLES -t nat -F
** run it

* My routing table when a BT connection is active with the (o) showing up on the 6600
ppp1 - BT line
ppp0 - MyDSL (PPPoe device)
eth0 - local 

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface UH    0      0        0 ppp1 UH    0      0        0 ppp0   U     0      0        0 eth0     U     0      0        0 eth0       U     0      0        0 lo         UG    0      0        0 ppp0
And walah, you're on the internet. oooh, ahhh, so pretty.

#hcidump -x // shows activity and helps somewhat. dont worry if you dont understand 99% of what you see like me.
#tcpdump -i // much more helpful when you can establish a ppp connection to your 6600 but cant get anything on your browser


And thanks to all the helpful people in:
AllAboutSymbian Forum
Nokia Flash Reverse Electronic Engineering Forum

The doc that saved my 6600 from becoming nothing more than a phone with a camera

Ronald Lachenal rml at