Internet connection using bluetooth, PPP and a GSM phone

For posterity only. Such a setup is now totally outdated !

1. Introduction

This short howto gives some hints on how to connect to the internet with your laptop, using a GSM phone and dial-up networking. This is not a complete guide on how to setup the thing, because all steps are well described elsewhere, but rather a quick note on what stuff have to be put together to make things work.

2. The idea and the required things to concretise the idea

Do you know that your GSM phone can probably be used as a modem ? This is a very interesting feature, if you have a Linux computer with bluetooth, and a GSM phone with dial-up profile and bluetooth. The GSM phone can then become a wireless gateway to transmit data from and to your computer with another remote computer, which will in turn transmit packets to the internet. The best of this is that you can read your e-mail from any location covered by the GSM network, which is in general pretty good. The drawback is that GSM is so slow that don't hope to read more than your e-mails, and pray not to have too big messages... Baud rate is 9600 and ping is around 800-1000ms.

Required stuff :

Note : bluetooth is used here as a link between the computer and the phone, but other solutions exists (USB cable for example). Using bluetooth is quite funny because you can keep your phone hidden in your pocket. This may impress peoples not knowing how you connect to the internet :-)

My actual configuration is based on a Dell Latitude X1 with a Motorola V500 on the client side. On the server side I use the builtin soft modem of a Compaq Armada M300.

3. Client side

(your side, the side of the computer willing to connect to the internet)

You need Point to Point Protocol in order to transmit data accross the GSM "serial" line. Under Linux this includes two or three components :

4. Server side

mgetty+sendfax, Auto_PPP

pppd, peers

Using masquerade

This will allow the server to relay data transmission to the internet, in the following example through the eth0 interface.


IF_IN=eth0
IF_OUT=ppp0

/usr/sbin/iptables -A FORWARD -i $IF_IN -o $IF_OUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i $IF_OUT -o $IF_IN -j ACCEPT
/usr/sbin/iptables -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE