Android USB Network Connection

2016-06-23

It's possible to create a network connection between an Android phone and your computer over USB. Also some later Android versions have this option in the settings menu. This method uses the RNDIS protocol on a a jail broken phone. This information is available elsewhere but it's somewhat hard to find. So I am reposting here.

echo 0 > /sys/class/android_usb/android0/enable
echo 18d1 > /sys/class/android_usb/android0/idVendor
echo 4e23 > /sys/class/android_usb/android0/idProduct
echo rndis > /sys/class/android_usb/android0/functions
echo 224 > /sys/class/android_usb/android0/bDeviceClass
echo 1 > /sys/class/android_usb/android0/enable
setprop sys.usb.state rndis
netcfg rndis0 up
ifconfig rndis0 10.100.100.1 netmask 255.255.255.0

 This is the code that works on my Samsung Galaxy Nexus (yes a very old phone) running Android 4.3. I imagine the process is similar on other phones, but maybe the Vendor/Product codes need to change.

After the above script is run on your phone just connect it's USB cable to your computer. On Linux the interface will show up as for example usb0. I think the interface is provided by the rndis_host, cdc_ether and usbnet kernel modules which hopefully load automatically. Just configure it with a corresponding address on the subnet and you have a IP over USB to your phone.

Useful for sharing your phones 3g/Wifi or app development/hacking.