December 29, 2008

Connecting to the Internet on Ubuntu Linux using GPRS, Bluetooth enabled mobile

Mobile phones can act as a gateway between our computer and the Internet. In this post I will discuss how to connect your computer(with Ubuntu 8.10 Interpid Ibex as operating system) to the Internet using a mobile phone(Nokia, Sony Ericsson, Treo etc.) with Bluetooth and GPRS functionality.

To make the connection, we first need to setup a link between mobile phone and Ubuntu system. Steps:

Discovering the mobile phone
We
will use hcitool utility to discover the mobile phone. First of all, TURN ON the bluetooth on both mobile phone and computer. Then launch the Terminal from Applications->Accessories->Terminal. Now type the following:

mohit@mohit-laptop:~$ hcitool scan
Scanning ...
00:16:BC:F4:6E:EF mNokia

Note down the address of your mobile, in my case it was 00:16:BC:F4:6E:EF.

Adding the mobile device to /etc/bluetooth/rfcomm.conf
We will now add an entry for our mobile phone in /etc/bluetooth/rfcomm.conf. Open the rfcomm.conf using the command given below.

mohit@mohit-laptop:~$ sudo vim /etc/bluetooth/rfcomm.conf

Now, we have to specify our mobile phone's address ( which we found in the previous step using hcitool scan)
My rfcomm.conf looks like this:

rfcomm0 {
bind yes;
# Bluetooth address of the device
device 00:16:BC:F4:6E:EF
# RFCOMM channel for the connection
channel 1;
# Description of the connection
comment "Nokia";

}

Making the connection
Use the command sudo rfcomm bind rfcomm0 to make the connection. Now we have a modem on /dev/rfcomm0

Creating some PPP Scripts
First of all we will create a chatscript
/etc/chatscripts/BluetoothPhone. Here APN should be replaced with the Access Point Name that the service provider uses. In my case it is "airtelgprs.com".

TIMEOUT 10
ABORT 'BUSY'
ABORT 'NO ANSWER'
ABORT 'ERROR'
SAY 'Starting GPRS connect script\\n'

# Get the modem's attention and reset it.
"" 'ATZ'

# E0=No echo, V1=English result codes
OK 'ATE0V1'

# Set Access Point Name (APN)
SAY 'Setting APN\\n'
OK 'AT+CGDCONT=1,"IP","airtelgprs.com"'

# Dial the number
ABORT 'NO CARRIER'
SAY 'Dialing...\\n'
OK 'ATD*99***1#'
CONNECT ''

Second, we have to create /
etc/chatscripts/BluetoothPhone-Disconnect

""      "\\K"
"" "+++ATH0"
SAY "GPRS disconnected."

Finally, we have to create /etc/ppp/peers/BluetoothPhone

/dev/rfcomm0 # Bluetooth modem
115200 # speed
defaultroute # use the cellular network for the default route
usepeerdns # use the DNS servers from the remote network
nodetach # keep pppd in the foreground
crtscts # hardware flow control
lock # lock the serial port
noauth # don't expect the modem to authenticate itself
local # don't use Carrier Detect or Data Terminal Ready
replacedefaultroute
debug

# Use the next two lines if you receive the dreaded messages:
#
# No response to n echo-requests
# Serial link appears to be disconnected.
# Connection terminated.
#
lcp-echo-failure 4
lcp-echo-interval 65535

connect "/usr/sbin/chat -V -f /etc/chatscripts/BluetoothPhone"
disconnect "/usr/sbin/chat -V -f /etc/chatscripts/BluetoothPhone-Disconnect"

Connecting to the Internet
Now to connect to the Internet, type the command sudo pppd call BluetoothPhone. Internet can be disconnected anytime by pressing Ctrl+C.

December 28, 2008

About Me

Who are you?
I'm Mohit Soni. I started hacking computers at the age of 10 with my PC. My exploration of computers started with Microsoft Windows 98 and QBasic. I continued my computer journey  with Visual C++ 6.0. I also spent significant time with Visual Basic 6.0 and Visual Foxpro 6.0. I am now quite comfortable with Java, PHP, C, C++.
I started hacking GNU/Linux when I was 17, with Ubuntu 6.06. But now, I am an avid openSUSE user and fan.