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 !
- 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
For Windows: Install USB drivers from Android SDK
For Linux: Nothing to do
On Nexus One: Connect USB cable and activate USB Tethering. You should see on linux or windows a new network interface.
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
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:
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 !
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 !
I've tested on a Windows VM... Two problem occur:
- When we activate USB Tethering on the phone, the ADB connection is dropped: Windows does not seem to be able to handle both the network connection and the Android debug bridge like Linux.
- The Android interface that is installed does not seem to work like in Linux: we have no control about it and it only seems to work one-way... Even by setting manually the usb0 interface on the phone I wasn't able to activate the interface on Windows.
So... Windows users.... Perhaps it's time for you to switch to Ubuntu Linux ;-)