Friday, April 24, 2009

Connecting to Internet on Ubuntu using GPRS on HTC PDAs

I own an awesome O2 XDA Orbit (base model - HTC P3350) PDA which has kept me satisfied with its features for almost last 2 years. Coupled with a fantastic GPRS plan from Idea (with really good connection speeds, I admit), it was very easy for me to remain connected  24x7. When my laptop had Windows (OEM version that came with my Dell Vostro), the internet connection sharing feature on the PDA allowed me to use GPRS internet on my laptop whenever I visited Sangli. Windows used to automatically configure itself to use this GPRS internet (I didn't like it though, as these things were happening without me knowing any details).

Then came a day when I got frustrated enough with Windows, and destroyed windows (with all its partitions) once and for all, from my laptop, and installed 3-4 different linux flavours instead. That (golden) day was Sunday 8 March 2009.

Since then, I have never missed windows again, but for some exceptions like iTunes, which is just not available on windows (see my previous post about this - iTunes for Ubuntu) or configuring different networking interfaces (like autoconnecting to wireless networks). Connecting to GPRS internet connection provided by my PDA to Ubuntu, had been one such problem that I didn't have a clue about.

The solution, though, turned out to be pretty simple. There are two ways to share Internet Connection from a windows mobile 6 device, like my O2 XDA Orbit -
  1. USB
  2. Bluetooth PAN

USB Connection (RNDIS)


What is needed is an RNDIS (Remove Network Device Interface Specification) driver on Ubuntu.
So get the sources of one such driver, build it and install the kernel module -

shreyas@ghatotkatch:~$ svn co https://synce.svn.sourceforge.net/svnroot/synce/trunk/usb-rndis-lite
shreyas@ghatotkatch:~$ cd usb-rndis-lite
shreyas@ghatotkatch:~/usb-rndis-lite$ make
shreyas@ghatotkatch:~/usb-rndis-lite$ sudo ./clean.sh
shreyas@ghatotkatch:~/usb-rndis-lite$ sudo make install


Then edit the network interface file -

shreyas@ghatotkatch:~/usb-rndis-lite$ sudo emacs /etc/network/interfaces

Add following entries to the interfaces file -

auto rndis0
iface rndis0 inet dhcp


Save the file and restart your network interfaces -

shreyas@ghatotkatch:~/usb-rndis-lite$ sudo /etc/init.d/networking stop
shreyas@ghatotkatch:~/usb-rndis-lite$ sudo /etc/init.d/networking start


That's it. Now on your WM6 PDA, select Start>Programs>Internet Connection Sharing.
I assume you have already configured GPRS on your PDA. So in the Internet Connection Sharing app, select USB as PC-Connection type, and click Connect. Now connect your PDA to the USB port.

The RNDIS connection should be automatically configured and the rndis0 interface should have got an IP address. To check this, run /sbin/ifconfig command, and verify the rndis0 interface.

Reference - http://forums.opensuse.org/1579065-post1.html


Bluetooth PAN

It has been my experience that Bluetooth PAN (Personal Area Network) slows down the internet connection a bit (as compared to connecting to USB) and also eats into the device battery.

Anyway, to configure a Bluetooth PAN on Hardy Heron (8.04), you need to install atleast following packages -

shreyas@ghatotkatch:~$ sudo apt-get install bluez bluez-compat

The network interfaces file will need to be edited -

shreyas@ghatotkatch:~$ sudo emacs /etc/network/interfaces

Add a new interface for our Bluetooth PAN -

auto benp0
iface benp0 inet dhcp


Then add the bnep module to the kernel. This module takes care of the Bluetooth PAN interface. By the way, BNEP stands for Bluetooth Network Encapsulation Protocol.

shreyas@ghatotkatch:~$
sudo modprobe bnep

Now select Bluetooth PAN as PC Connection type in internet connection sharing app on your PDA, and try to find the PDA from your laptop / PC - 

shreyas@ghatotkatch:~$ hcitool scan
Scanning ...
    00:17:E5:3F:BE:E8    hexaM!ner


Use the hex string to connect to the PAN network -

shreyas@ghatotkatch:~$ sudo pand --connect 00:17:E5:3F:BE:E8


That's it. You should be connected, and your bnep0 interface should have got a brand new IP address. You can verify it using /sbin/ifconfig.

Reference: This article on samiux.wordpress.com


Technorati Tags: , , , ,

1 comment:

Anonymous said...

It was extremely interesting for me to read that article. Thanx for it. I like such topics and anything that is connected to them. I definitely want to read a bit more soon.
Alex
Phone blocker