2012年10月19日金曜日

Reverse USB Tethering with Android 2.2

I've recently upgraded my Nexus One to Android 2.2, which include the USB Tethering option to connect a computer through the phone's Internet connection.

In my case, i want to do the opposite: when i don't have access to a wireless network, such as at work, i'd like to connect my phone to my computer and use my computer's Internet connection.

Here is below to do it manually. I hope I will have some time to develop a small app to automate all of this !

Requirements:
Android 2.2 (or an older version with a root tethering app)
ADB from Android SDK, or a rooted Android 2.2 with terminal in root mode
STEP 1:

For Windows: Install USB drivers from Android SDK
For Linux: Nothing to do

STEP 2:

On Nexus One: Connect USB cable and activate USB Tethering. You should see on linux or windows a new network interface.

STEP 3:

On Linux Computer, setup a bridge:

# usb0 is the new network intreface
# eth0 is the main interface connected to internet (or a gateway)
sudo ifconfig eth0 0.0.0.0
sudo ifconfig usb0 0.0.0.0
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo brctl addif br0 usb0
sudo ifconfig br0 up
sudo dhclient br0

See https://help.ubuntu.com/community/NetworkConnectionBridge to setup bridges

On windows, Bridge the 2 network interfaces

STEP 4:

Setup usb0 interface of your phone. You have to options:

1. From your computer, execute:

./adb shell netcfg usb0 dhcp

2. Or in a root terminal on your phone, type:

su
netcfg usb0 dhcp

You should now be able to connect to Internet on your phone using your computer's Internet connection.

Try to do a ping www.google.com to be sure !

STEP 5:

To shut down the reverse-tethering, first unbridge interfaces on your computer:

sudo ifconfig eth0 down
sudo ifconfig usb0 down
sudo ifconfig br0 down
sudo brctl delbr br0
sudo ifconfig eth0 up
sudo dhclient eth0

Then on your phone, uncheck the USB Tethering option !

0 件のコメント:

コメントを投稿