Most recent Android smartphones have a built-in tethering feature that allows you to share your phone’s internet connection with a laptop, tablet, or other devices (although not all wireless carriers let you use this feature, and many charge extra for it).
But what if you want to share your PC’s internet connection with your phone? That’s where reverse tethering comes in.
While there are a number of ways to do this, gnirehtet is one of the more versatile options I’ve seen… albeit one that’s kind of hard to pronounce.
Reverse tethering can come in handy in situations where your computer may have an internet connection, but your phone does not. For example, maybe your PC is connected to a router or modem via an Ethernet cable, but there’s no WiFi available and you’re either in a cellular dead zone or don’t want to use your mobile data.
Windows 10 has built-in support for reverse tethering thanks to a Mobile Hotspot feature that allows you to share your wired or wireless internet connection via WiFi or Bluetooth. Apple also lets you share an Mac’s internet connection by creating a mobile hotspot, but this only works if your Mac has a wired internet connection. As for Linux? There are a bunch of ways to do it, but they vary depending on which GNU/Linux distribution you’re using.
One of the neat things about gnirehtet is that it makes use of Google’s cross-platform adb (Android Debug Bridge) utility so it works with Windows, Mac, or Linux.
The app’s unusual name is what you get if you spell “tethering backward,” and it’s an open source utility developed by Genymobile, the same team that develops scrcpy, an open source screen mirroring tool that allows you to see and interact with your Android device using your computer’s display.
As of version 2.4, gnirehtet supports sending TCP and UDP traffic over IPv4 connections, but IPv6 isn’t supported yet.
In order to use the app, you’ll need to:
- Enable adb debugging on your Android device.
- Download adb tools to your computer.
- Download and unzip the latest version of gnirehtet for your operating system.
- Install the gnirehtet APK on your phone.
- Connect your phone to a PC with a USB cable and run gnirehtet.
Step two might be the trickiest if you haven’t spent time working with the Android SDK before. But if you’re using a Debian-based Linux distro you can just use install “android-tools-adb” and if you’re using Windows, you can just download Google’s platform-tools (download link) and extract these three files to the same folder where you’ve unzipped gnirehtet.
On a Linux computer, you can run the utility by opening a terminal window, navigating to the directory where you’ve put the files, and typing “./gnirehtet run” (without the quotes). On a Windows PC, you can skip the “./” and just type “gnirehtet run” or double-click on the gnirehtet-run.cmd app from File Explorer.
You can find more detailed instructions and some troubleshooting tips at the github page for the gnirehtet project.
The first time you run the app, you should see a Connection Request pop-up on your phone.
Once you accept, you’ll see a VPN icon in the status bar of your phone, and you should be good to go — as you surf the web, check your email, or otherwise use the internet on your Android phone, you’ll see connection request information fly by on the terminal window on your computer.
While it only took me a few minutes to set up gnirehtet on my Windows 10 PC and Android 10 smartphone, I was only able to get it working properly with a USB cable.
When I tried enabling adb over WiFi, the app seemed to recognize my phone, but I got an error message whenever I tried to share my PCs internet connection. Your results may vary.