Hello all,

There are loads of scattered threads and webpages on using Windows XP's Internet Connection Sharing to share your computer's broadband connection with your Treo 650 via bluetooth. This is commonly known as "reverse DUN". However, when I was trying to figure out how to do it with Linux, most of the information I found was misleading. But I just managed it, so I thought I'd put a write-up here.

This largely summarized what I found at http://aquariusoft.org/page/palm/bluetooth_linux/, but I thought this forum would make a better permanent home for this kind of information.

A quick comment before I give the details -- the main thing is NOT to set up a bluetooth network access point. Most HOWTOs describe how to setup a Linux box to share network via the bluetooth Network Access Point profile (NAP). This is the generic profile for sharing of TCP/IP connections and it uses the bluez daemon program "pand". However, it doesn't seem to work with the Treo, maybe because the Treo doesn't support whatever Bluetooth profile is necessary to access the NAP Profile (the LAN profile?), or else because none of those HOWTO's turn on some kind of optional discovery service that the Treo needs.

Instead of offering a pure tcp/ip connection with "pand", your server should offer a ppp connection through the bluez program "dund". This also saves you from having to mess around with networking bridging via bridge-utils, ipchains, or iptables.

I remember reading somewhere that "reverse DUN" was just a misnomer for NAP or LAN profiles. I'm not sure what the exact truth is as regards the profile names and and what the Treo supports, but given that "dund" stands for dial-up networking daemon it seems likely "reverse DUN" was a pretty accurate name after all.


I assume you know how to install packages in Debian and edit system configuration files.

Unlocked Treo 650 GSM
Belkin Bluetooth USB dongle (Belkin Part #F8T008uk)
Debian Linux server (Sarge, kernel 2.4.27-2) with a static ip address
Debian package bluez-utils (version 2.15-1.1)
Debian package bluez-firmware
Debian package bluez-bcm203x


1) After plugging in the dongle, I ran "lsusb -v" for details on the dongle. It turns out this dongle is based on the Broadcom 2035 chipset, which requires installing the additional Debian packages bluez-firmware and bluez-bcm203x.

2) In "/etc/bluetooth", create a file called "pin" containing the passphrase you will use to pair your Treo with your PC.

3) In "/etc/default/", edit the file "bluez-utils". Change DUND_ENABLED=0 to DUND_ENABLED=1. Add the line:

DUND_OPTIONS="--listen --persist --msdun call dun"
This will cause linux to start up a dialup networking server on startup. The --msdun option lets it offer DNS information.

4) In "/etc/ppp/peers/", create a file "dun" as follows:

# IP address of PC : IP address to be assigned to Palm
# My DNS server
These configurations define the kind of connection your server will offer the treo. 57600 is the modem speed. 115200 also worked for me -- it's the fastest sppeed the treo seems to offer.

In this, is my server's static IP address within my local network behind my adsl modem/router. is the IP address it will assign the Treo when the Treo connects to it. Both these addresses will not be inadvertently assigned by my ADSL modem/router, because I configured its DHCP server to only assign addresses above After ms-dns, 172.31.129 is my ISP's primary DNS server, which I got from their configuration webpages. The setting "noauth" means that we do not require a username / password to start the ppp connection, since we will rely on bluetooth authentication for security. Further information is available at the man page for pppd.

5) reboot your server so it's all up and running

6) The Treo setup is as usual:

Go Preferences / Bluetooth / Trusted Devices / Add Device in order to find your computer and establish a pairing with it. Your treo should prompt your for the passphrase you set in the "pin" file.

Go Preferences / Connections / New, and then set it to "Connect to PC" via "Bluetooth" and select your computer from the device list.

Go Preferences / Service / New, and then select the new connection you created. Leave username and password blank. Click Details, and put "Idle timeout" to never. (I have not tested it myself, but I believe setting "FallBack" to your carrier's GRPS network will cause it automatically to switch to GPRS when your server is out of range is not available.) Click Advanced, and verify that both tickboxes are ticked so that the ip address and the DNS are configured automatically.

7) Hit connect, and you should be good to go!

Versamail and pssh are working right off the bat. I haven't got Blazer browsing yet. It wants the phone on. When I turn on the phone, it still doesn't work. But I understand this is a general blazer issue, and not something specific to the configuration I outline above. (Any advice greatly appreciated!)