A fire-and-forget macOS shell command that makes a supported Nothing phone expose native CDC-NCM USB Ethernet. It installs nothing and runs no background process.
Install ADB once, enable USB debugging on the unlocked phone, connect it, and accept its authorization prompt:
brew install android-platform-tools
git clone https://gist.github.com/bdd3faf8990d1aa15d39bb92a7c9ac2e.git nothing-ncm-tether
cd nothing-ncm-tether
bash build.sh
sh nothing-tetherWith multiple Android devices connected, use sh nothing-tether SERIAL.
Re-run it after rebooting the phone or whenever tethering does not return.
Android keeps using its normal upstream—phone Wi-Fi or mobile data—and the script
does not change Wi-Fi settings on either device.
The thin shell script performs exactly three ADB phases:
- Push
ncmtether.jarto/data/local/tmp/. - Save NCM as the unlocked USB mode and reset USB so
usb0is absent. - Request Ethernet tethering through Android's shell identity, then enable NCM.
The ordering prevents Android's Ethernet client from claiming usb0 before the
tethering service does. Plain svc usb setFunctions ncm is insufficient on the
affected Nothing build because its NCM resource overlay targets the wrong package.
Everything is visible in nothing-tether and NcmTether.java. The JAR is
compiled Android DEX, not a Mac executable. Run bash build.sh to reproduce it from
source when Android SDK/build-tools 36.1 and a JDK are installed. Without those,
build.sh keeps the checked-in precompiled JAR and still validates it.
No Go, root, sudo, proxy, VPN, macOS driver, or installation is involved.