Wednesday, March 11, 2009

How I connected to Internet from Linux via Airtel GPRS

First of all, I needed to activate Airtel's MO (Mobile Office) GPRS service. At the moment, they provide a form of this service by which I will be charged @ 30p/50KB (at least that's what I understood from their website). So, here is what I did:

Activating the MO service

Dialed *567*1# to activate (*567*2# to deactivate) the service on my prepaid Airtel connection.

Configuring the mobile

To configure the mobile for the MO service, I needed to set the active GPRS access point to airtelgprs.com. I have a Nokia 3220. There I had to set airtelgprs.com under Settings -> Connectivity -> GPRS -> GPRS Modem Settings -> Edit Active Access Point -> GPRS Access Point. Also, I set the Alias for Access Point, and Active Access Point to airtelgprs.com. That was all I had to do on the mobile side.

Connecting the Mobile to my Linux box

I connected the mobile (Nokia 3220) using the Nokia CA-42 cable to an USB port on my 4 yr old Compaq Presario 2203AL Laptop running Fedora 10. I made sure that the kernel had recognized my mobile as an USB modem. I checked that using the command dmesg. Among the several lines of output, the following lines appeared:


usb 2-2: new full speed USB device using uhci_hcd and address 2
usb 2-2: configuration #1 chosen from 1 choice
usb 2-2: New USB device found, idVendor=0421, idProduct=0802
usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
cdc_acm: This device cannot do calls on its own. It is no modem.
cdc_acm 2-2:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters


Thus, my mobile was detected as an USB modem with device name ttyACM0 under the /dev directory.

Linux side configuration

First of all, I made sure that I had turned off my wi-fi connectivity on this laptop. Also, I don't use ethernet on this laptop. So, basically, I got totally offline. All I had to do now was to use wvdial program to connect to the internet via the mobile. For that I needed to create the file wvdial.conf in /etc/ directory, and put the following lines in it:


[Dialer Defaults]
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = USB Modem
Phone = *99***1#
Stupid Mode = 1
ISDN = 0
Username = "none"
Init1 = ATZ
Password = "none"
Modem = /dev/ttyACM0
Baud = 230400


Once that was done, I ran the command wvdial from a terminal with root privileges. (Of course, later I intend to write a suitable udev rules file so that the permissions of the ttyACM0 device will be set such that I will be able to run wvdial as a normal user.) Connectivity was established, ppp was started, and along with several lines of output from wvdial, I found the following lines of information:


--> local IP address 117.99.41.9
--> remote IP address 10.6.6.6
--> primary DNS address 202.56.230.5
--> secondary DNS address 202.56.250.6



I checked using ifconfig that ppp was up. Also, the command route -n showed that my default gateway was 10.6.6.6 as expected from the above output. I then manually set the nameservers in the file /etc/resolv.conf.

That's all I had to do. I could now successfully ping any website, and surf the net, although very slowly... but who cares, it was fun :-)

To stop the connection, I just had to stop wvdial by pressing Control-C.

2 comments:

Parijat Prasun Pal said...

Hmm, this technique is good. You mentioned CA-42 cable. I also have CA-42 cable for my old Nokia 6070 phone. After connecting the phone is identified as /dev/ttyUSB0, but cannot connect via wvdial, and then everything freezes.

Santanu's Linux Log said...

Hi Parijat. About the CA-42, the first cable I purchased turned out to be a non-Nokia make CA-42. That behaved in the same way as yours. I returned that and it was replaced with an original Nokia CA-42. That one worked.

When the cable gets connected to the PC, I looked at the output of the "dmesg" command. The device/vendor ID value shown there helped me verify if that cable was a genuine Nokia CA-42 cable.