FWIW Reverse USB tethering works great on my Jellybean device, lets assume it has the serial number 0123456789ABCDEF, here are the commands I use to get it running:
adb -s 0123456789ABCDEF shell su -c 'service call connectivity 33 i32 1'
sleep 5
sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
adb -s 0123456789ABCDEF shell su -c "ifconfig rndis0 10.42.0.2 netmask 255.255.255.0"
adb -s 0123456789ABCDEF shell su -c "route add default gw 10.42.0.1 dev rndis0"
I run these commands on my Linux machine which the phone is connected to, and on my jellybean device the browser will load a website using data over USB.
Now I have a KitKat device, and I have a similar script, i use
"service call connectivity 34 i32 1"
on the first line as kitkat needs a slightly different command, so but even after all my commands run with no error messages, when I load up the browser on the phone I simply get 'page not found'
Is there a was to fix this? I've tried pinging google from the phone and the pings work, so I'm assuming this is a software issue?
Has anyone successfully managed to do this on KitKat? Thanks
EDIT: I've done some more tests, and I think it's a DNS issue. Pinging IP addresses works fine, but pinging hostnames gives 'ping: unknown host' on the kitkat device. Pinging hostnames works perfecly on the Jellybean device, I have them both hooked up the same Linux machine right now so the only difference here is the android versions.
I have a feeling there are some extra steps or commands I need to add to my script here, as I cannot even ping the name of my router from the Kitkat device, while I can ping the IP address with no problem.