usb rndis over shell - renfengmei/doc GitHub Wiki
/sdcard/usb_tether_start.sh:
#!/system/bin/sh prevconfig=$(getprop sys.usb.config) if [ "${prevconfig}" != "${prevconfig#rndis}" ] ; then echo 'Is tethering already active?' >&2 exit 1 fi echo "${prevconfig}" > /cache/usb_tether_prevconfig setprop sys.usb.config 'rndis,adb' until [ "$(getprop sys.usb.state)" = 'rndis,adb' ] ; do sleep 1 ; done ip rule add from all lookup main ip addr flush dev rndis0 ip addr add 192.168.0.1/24 dev rndis0 ip link set rndis0 up iptables -t nat -I POSTROUTING 1 -o rmnet0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward dnsmasq --pid-file=/cache/usb_tether_dnsmasq.pid --interface=rndis0 --bind-interfaces --bogus-priv --filterwin2k --no-resolv --domain-needed --server=8.8.8.8 --server=8.8.4.4 --cache-size=1000 --dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,192.168.0.255 --dhcp-lease-max=253 --dhcp-authoritative --dhcp-leasefile=/cache/usb_tether_dnsmasq.leases < /dev/null
/sdcard/usb_tether_stop.sh:
#!/system/bin/sh if [ ! -f /cache/usb_tether_prevconfig ] ; then echo '/cache/usb_tether_prevconfig not found. Is tethering really active?' >&2 exit 1 fi if [ -f /cache/usb_tether_dnsmasq.pid ] ; then kill "$(cat /cache/usb_tether_dnsmasq.pid)" rm /cache/usb_tether_dnsmasq.pid fi echo 0 > /proc/sys/net/ipv4/ip_forward iptables -t nat -D POSTROUTING 1 ip link set rndis0 down ip addr flush dev rndis0 ip rule del from all lookup main setprop sys.usb.config "$(cat /cache/usb_tether_prevconfig)" rm /cache/usb_tether_prevconfig while [ "$(getprop sys.usb.state)" = 'rndis,adb' ] ; do sleep 1 ; done
To start USB tethering:
adb shell "su -c 'sh /sdcard/usb_tether_start.sh'"
To stop USB tethering:
adb shell "su -c 'sh /sdcard/usb_tether_stop.sh'"