Sometimes you need internet on your Android device but Wi‑Fi isn’t available, the hotspot data plan is exhausted, or you’re working on a locked‑down network that only allows wired connections. A reliable way to solve this is reverse tethering – using your computer’s active network connection and routing it to the phone over a USB cable. The method described here relies only on the Android Debug Bridge (ADB) and works on any device that can enable USB debugging, without requiring root access.
ADB provides a low‑level channel between the PC and the Android device. By creating a reverse port forwarding rule, the PC can act as a gateway for the phone’s traffic. The phone sees the PC as a network interface (usually usb0) and routes its data through it. Because the traffic travels over the USB cable, it is fast, encrypted by the USB protocol, and does not consume mobile data.
ADB is part of the Android SDK Platform‑Tools. You only need the tiny Platform‑Tools package, not the full SDK.
C:\adb on Windows or ~/adb on macOS/Linux.PATH so you can run adb from any terminal.
Path variable and add the full path to the Platform‑Tools folder.export PATH=$PATH:~/adb to your ~/.bash_profile or ~/.zshrc, then run source ~/.bash_profile (or the equivalent).adb version. You should see something like Android Debug Bridge version 1.0.41.USB debugging opens the ADB channel. The steps are almost identical across Android versions.
The exact steps differ per operating system. All three methods create a Internet Connection Sharing (ICS) bridge that forwards traffic from the PC’s primary network adapter to the USB interface that ADB will expose.
Wi‑Fi or Ethernet) and the adapter that will be created by ADB (it appears as Remote NDIS based Internet Sharing Device after the first ADB command).Remote NDIS based Internet Sharing Device.Wi‑Fi).USB Ethernet. If you do not see this option, it will appear after the first ADB reverse‑tether command.en5 (or similar) for the USB connection.Linux requires a few command‑line steps, but the principle is the same: enable IP forwarding and set up NAT (Network Address Translation) from the primary interface to the USB interface (usb0).
# Enable IP forwarding
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
# Replace eth0 with your actual internet interface name
# Replace usb0 with the interface that appears after the first ADB command
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT
iptables-persistent to keep the rules after a reboot.Now that the PC is ready to share its connection, we tell ADB to create the USB network interface on the phone and forward traffic.
adb devices
You should see a line with the device’s serial number and the word device.
rndis0 on the phone and forwards all traffic to the PC’s shared network.
adb shell "su -c 'setprop sys.usb.config rndis,adb'"
Explanation: The setprop call changes the USB configuration to rndis (USB Ethernet) while keeping ADB active. On non‑rooted devices the su -c part is ignored; the command still works because Android allows the change for debugging builds.
192.168.137.2 on Windows). Verify by opening Settings → Network & internet → Wi‑Fi (the Wi‑Fi toggle will be off) → scroll to the bottom where the USB network appears, then tap it to see the IP.Open a browser on the phone and navigate to any website. If the page loads, reverse tethering is successful. For a more technical check:
# On the phone, open a terminal emulator (or use ADB shell)
adb shell
# Inside the shell, run:
netcfg | grep usb
# Expected output similar to:
usb0 UP 192.168.137.2/24
If the usb0 (or rndis0) interface shows UP and an IP address, the link is working.
Manually running the ADB command each time can be tedious. You can automate it with a small script.
@echo off
adb devices | findstr /i "device" >nul
if errorlevel 1 (
echo No device detected. Connect your phone and try again.
pause
exit /b 1
)
adb shell "setprop sys.usb.config rndis,adb"
#!/bin/bash
if ! adb get-state 2>/dev/null | grep -q device; then
echo "Device not found. Connect your phone via USB."
exit 1
fi
adb shell "setprop sys.usb.config rndis,adb"
Save the script, make it executable (chmod +x scriptname), and run it whenever you need the connection.
adb devices
Remote NDIS based Internet Sharing Device has an IP address (usually 192.168.137.1).USB Ethernet interface appears in ifconfig and has an IP.dns.google or 1.1.1.1.If your device refuses to switch to RNDIS mode, or the manufacturer disables USB Ethernet, you have two fallback options that still avoid rooting:
Because the phone’s traffic now traverses the PC, any network monitoring tools on the PC can see the data. Ensure the PC is trusted and has up‑to‑date security software. The USB link itself is encrypted at the hardware level, but the data is not end‑to‑end encrypted unless you use HTTPS or a VPN on the phone.
Reverse tethering with ADB gives you a quick, root‑free way to give an Android device internet access through a wired PC connection. By following the steps for your operating system, you can set up a reliable link, verify it works, and troubleshoot the most common hiccups. The method is especially handy for developers testing network‑dependent apps on devices without mobile data, for travelers stuck in Wi‑Fi‑restricted environments, or for anyone who simply wants to conserve a mobile data plan.









