- 我的htc g2手机植根于植物和运行cyanogenmod 7
- 我有一个连接到互联网的Windows 7专业计算机，但我不允许设置Ad-hoc Wi-Fi网络。 （如果我这样做，他们会注意到并追捕我。）
Is there a way for the phone to access the Internet through the USB connection to the computer? If so, how do I set it up?
I recently discovered SimpleRT which works very well with Linux (and apparently OSX as well). Simply enable USB Debugging on your device (no root required), install the APK linked from that page on your device and connect it to your PC via USB, and then run the binary on your PC.
It will set up the connection as a VPN tunnel (
tun0 by default) and your device should prompt you to (a) allow SimpleRT to create/oversee the VPN connection as well as (b) whether to run it when the device is configured as a particular USB accessory (which is what the binary does).
The project does not include a pre-built binary, so I've uploaded one I built for Ubuntu.
Below is a manual method that should work on Linux or Windows: http://blog.mathieu.carbou.me/post/60454997009/reverse-usb-tethering-with-android-2-2
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 interface # 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:
From your computer, execute:./adb shell netcfg usb0 dhcp
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 computerxe2x80x99s 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 !
You can also use Windows to create a WiFi network (using Connectify) and connect your device to that: http://www.nexusoneforum.net/forum/nexus-one-faq-how-tos/3133-reverse-tether-getting-internet-your-phone.html
There are some more possibilities -- but all of them I know of require a rooted device.
First, there's an App named Reverse Tether available for free on the Play Store (it's a limited trial, which restricts the time you can be connected -- but at least you can test this way whether your device is fully supported; the full version is about USD 5). According to an article at AndroidAuthority, setup should be as easy as 1-2-3: Plug in the USB cable, start the app, let it auto-configure (manual configuration is available as well) -- and there you go. You can also let it ask you to connect when it finds an USB-connection.
I know, this is not USB -- but for completeness (and giving alternatives) I thought I might add these as well:
Several manual methods are available as well (and described e.g. at XDA) -- but they are mostly technically complex, and expecting you to patch system files; not for the every-day-user, but rather for the tech-freak.
However, another nice method should just involve 3 lines in the terminal, and is described in a post here, to connect to an ad-hoc Wifi network. Basically, it should go like this:
su ifconfig wlan0 up iwconfig mode auto; iwconfig wlan0 essid "your SSID" channel 11 mode auto ifconfig wlan0 10.0.0.x netmask 255.255.255.0
Another quite easy method is also described here, and involves editing the
wpa_supplicant.conf file once (manually adding your ad-hoc Wifi network).
Do I need to say, really? Use a Wifi router. There are even some small "Travel routers" around for less than USD 50. And then connect your phone like you use to connect it to other Wifi networks...
Hey! there is an app for that
Android Usb Port Forwarding
I am a bit confused how to use it, please inform if you get it working perfectly.
I know this is an even later answer, but it is worth mentioning it.
No rooting needed!
No app installation needed!* Which is not even possible if you do not have some other internet connection.
There is a project called gnirehtet.
That's it! For more information, read the readme file of gnirehtet on their website.
*=Behind the scenes it will install an apk file on to your device via the USB connection.
I've found a good tool for reverse tethering on xda-developers forum. It's called Android Reverse Tethering. It works with Windows and requires a rooted phone.
It works fine on my HTC Desire HD running MIUI v4.
Android reverse tethering steps:
Note: Works only in a rooted Android phone.
Enable USB tethering. To do so, go to Settings xe2x86x92 More... xe2x86x92 Tethering & mobile hotspot xe2x86x92 Usb tethering.
At host machine, the usb tethering connection may be detected by the network manager.
Its name will be something like "Wired connection 2" (or 3).
You must edit it's "IPV4/Method" to "Shared to other computers".
3.1. Without the network manager, you will have to do it manually:
$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 $ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Now, as explained here at the end of Step1 you have to modify
sudo iptables -t nat -A POSTROUTING -j MASQUERADE. But... prefer allow network manager to do it if possible.
At Android device, you can issue these commands using a terminal with
su there, or from your host machine by using ADB:
$ adb shell su -c "netcfg rndis0 dhcp"
If it doesn't get the IP address, or if you are using some application that a static IP address is desirable like "Webkey for Android" App, then assign it manually:
$ adb shell su -c "ifconfig rndis0 10.42.0.2 netmask 255.255.255.0" $ adb shell su -c "route add default gw 10.42.0.1 dev rndis0"
Now internet would be working in the Android phone.
To check, at
adb shell or android terminal, try the command
It works for me.
I know this is a late answer, but as all existing answers suggest that USB reverse tethering is only possible if either your device is rooted or has system support for reverse tethering, I though it'd be worth pointing out there's one more option:
I was looking for a reverse tethering solution that would work on my unrooted devices and with a MacBook, but I just could not find anything. Eventually, I started to develop my own solution. The result is an app that works on devices running Android 4.0 or higher on client side, and all major desktop OSs on the host side.
The app is available on Google Play: ReverseTethering NoRoot