To tether a Windows Mobile 6 cell phone (make sure you have a data plan that allows tethering), you will need to install a few things:
Once those are installed, we need to download and build the latest usb-rndis-lite code:
cd usb-rndis-lite/
make
## remove the existing usb-rndis drivers with clean.sh
sudo ./clean.sh
sudo make install
Before you plug in the cell phone, you will need to blacklist the rndis_wlan kernel module:
sudo rmmod rndis_wlan
Plug in your cell phone. If you type “dmesg”, you will see something like the following:
[ 152.500604] usb 4-1: configuration #1 chosen from 1 choice
[ 154.138352] rndis0: register ‘rndis_host’ at usb-0000:00:1d.3-1, RNDIS device (SynCE patched), 80:00:60:0f:e8:00
[ 164.441074] rndis0: no IPv6 routers present
This is showing that the phone was found. Let’s take a look at the list of interfaces using ifconfig:
rndis0 Link encap:Ethernet HWaddr 80:00:60:0f:e8:00
inet addr:169.254.2.2 Bcast:169.254.2.255 Mask:255.255.255.0
inet6 addr: fe80::8200:60ff:fe0f:e800/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:8050 Metric:1
RX packets:29 errors:46 dropped:0 overruns:0 frame:23
TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2097 (2.0 KB) TX bytes:9146 (9.1 KB)
On the phone, turn on Internet Connection Sharing and connect via USB. Wait a few seconds (obtaining an ip address can take up to a minute or so) then issue the ifconfig command again:
rndis0 Link encap:Ethernet HWaddr 80:00:60:0f:e8:00
inet addr:192.168.0.102 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::8200:60ff:fe0f:e800/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:8050 Metric:1
RX packets:8113 errors:13535 dropped:0 overruns:0 frame:6766
TX packets:8643 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6063101 (6.0 MB) TX bytes:1890604 (1.8 MB)
Yay! We are connected.
In order to use Firefox, Pidgin or any other software that uses Network Manager, you need to stop the Network Manager daemon:
You will be able to use your applications again

i had this working not to long ago. but i ran into some other errors from being update happy. only have the net on my phone and so i couldn’t svn co. instead i had a friend visit the page and save each file as a text. then email them to me. i followed some tutorial that told me to create a ifcfg-rndis0 file, but it wasnt ubuntu specific, so i just thew it in the /etc/networking folder. everything was working, but then as i said, i got update happy. one thing lead to another. before long, i was having to reboot the phone several times to get an ip. then the phone would connect to the network (in ICS) but restarting the network on ubuntu would say the network was down..and finally to the point of my phone only telling me to check the usb connection..frustrated with everything that went wrong, i backed up and installed 7.10. i am back to the email with the txt files. and it wont let me sudo clean.sh or sudo ./clean.sh (command not found.)
and still, the phone says check usb connection. which i have done many times, tried each and every usb port. rndsi device shows up on dmesg. but when i start ICS , the rndis device unregisters and is becomes just an ordinary highspeed usb device. i have no idea where i messed this up. and att isnt kind to me with linux support. yet they’re happy to charge me more and put a limit on my monthly usage. pshaw.
Hi Jason,
thanks for your help with this article. I would like to add my two cents to this so:
I have a Vodafone Italy connection and in order to connect my eeepc running ubuntu 8.10 with my HTC Diamond I have modified the source code of rndis in this way:
after download the code how you have suggested I have modified the code:
$ gedit rndis_host.c
on line 524, I have searched for this code:
if (tmp hard_mtu) {
dev_err(&intf->dev,
“dev can’t take %u byte packets (max %u)\n”,
dev->hard_mtu, tmp);
goto fail;
}
and replaced it with this
if (tmp hard_mtu) {
dev_err(&intf->dev,
“dev can’t take %u byte packets (max %u)\n”,
dev->hard_mtu, tmp);
retval = -EINVAL;
/* goto fail;*/
}
Then I have continued with your suggested steps (compile & install). Now my ICS and Ubuntu 8.10 are up and running!