Repository navigation
Releases: frosty-universe/usb-android-tethering
Releases · frosty-universe/usb-android-tethering
Release list
v0.1.0
First public release.
Added
- Userspace USB tethering driver for Android on macOS (Apple Silicon and Intel). No kernel extension, no SIP changes.
- Universal protocol support.
- RNDIS, with Linux
rndis_hostinterface matching (including theEF/01/01variant), packet-filter fallbacks and destination-MAC fixup. - CDC-NCM (NTB16) and CDC-ECM, for phones macOS's native driver doesn't claim, never detaching a native driver.
- The data interface is found through the CDC Union descriptor.
- A stable host MAC per phone.
- RNDIS, with Linux
- Native network integration. The phone appears as a real Ethernet interface (
fethpair) backed by the network service "USB Android Tethering". macOS runs DHCP, routing and DNS itself, and ranks it by service order. - VPN compatibility. It uses a real Ethernet interface rather than a
utuntunnel, and bridges IPv4 and ARP only so IPv6 can't bypass a VPN. - High-throughput, low-overhead data path.
- Asynchronous libusb I/O: 8 queued receive transfers and 8 pipelined transmit transfers.
- RNDIS multi-packet aggregation within the phone's announced limits.
- A kernel BPF filter.
- Allocation-free transmit packing.
- Event-driven threads with no idle polling.
- Background service (
install/uninstall) using launchd. It starts at boot, reacts to USB hotplug, and reconnects automatically. - Durability.
- A crash guard process (kqueue).
- Cleanup at start-up and a
cleanupcommand. - Self-healing if the network service is deleted or DHCP fails (the link is brought up only after the data path is wired, so macOS's first DHCP exchange can't be lost).
- Exponential backoff on repeated failures.
- Safe reinstall over a running daemon.
- Diagnostics.
statusanddevices(both with--json), andprobefor testing the link without root. Hints for phones with tethering off, CDC-NCM phones and iPhones. - Optional automatic tethering switch through
adb(USB debugging, Android 9+). It alternates between therndisandncmgadget functions, and adb runs as the logged-in console user, never as root. - Logging. Leveled (
-v,-vv,-q), coloured (honoursNO_COLOR), optional file output with 5 MB rotation. - One-command installer (
install.sh). It downloads the latest universal (Apple Silicon + Intel) release, verifies its SHA-256 checksum, and installs the service.--uninstallremoves everything. - Automated releases. A version tag builds, tests and publishes a universal binary with SHA256SUMS.
- Documentation: README with a step-by-step guide, architecture, performance methodology, contributing guide, security policy.
- Continuous integration on Apple Silicon and Intel runners and on the minimum supported Rust version (1.88).
Install
curl -fsSL https://raw.githubusercontent.com/frosty-universe/usb-android-tethering/main/install.sh | sh