usbmuxd pairing + ipheth + systemd-networkd profile (Driver=ipheth match, fallback metric 750, RequiredForOnline=no). Commands: install/pair/unpair/ status/priority/uninstall. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
41 lines
1.6 KiB
Markdown
41 lines
1.6 KiB
Markdown
# omatether
|
|
|
|
iPhone USB tethering for **Omarchy / Arch** (systemd-networkd + iwd stack).
|
|
Plug an iPhone in over USB and use its internet connection — the phone's
|
|
Wi-Fi if it's on one, cellular otherwise. Fully headless, no GUI required.
|
|
|
|
## How it works
|
|
|
|
- `usbmuxd` handles the iOS pairing/trust handshake (udev-activated, no service to enable)
|
|
- the kernel's `ipheth` driver exposes the phone as a normal network interface
|
|
- a `systemd-networkd` profile (`10-iphone-tether.network`) matches by
|
|
`Driver=ipheth` and DHCPs it, at **fallback priority** (route metric 750)
|
|
so it never hijacks ethernet (100) or Wi-Fi (600)
|
|
|
|
## Install
|
|
|
|
```bash
|
|
./omatether.sh install # packages + networkd profile
|
|
./omatether.sh pair # unlock phone, tap Trust
|
|
```
|
|
|
|
Then on the phone: **Settings → Personal Hotspot → Allow Others to Join: ON**.
|
|
The connection comes up automatically whenever the phone is plugged in.
|
|
|
|
## Commands
|
|
|
|
| Command | What it does |
|
|
|---|---|
|
|
| `install` | Install usbmuxd/libimobiledevice, write networkd profile |
|
|
| `pair` / `unpair` | Manage the Trust pairing |
|
|
| `status` | Device, interface, IP, route, live connectivity test |
|
|
| `priority high` | Route all traffic via the phone even when ethernet is up |
|
|
| `priority low` | Back to fallback-only (default) |
|
|
| `uninstall` | Remove the networkd profile |
|
|
|
|
## Notes
|
|
|
|
- iOS shares whatever uplink it has: on Wi-Fi it shares the Wi-Fi; otherwise cellular.
|
|
- The tether interface usually appears as `eth0`; the profile matches by driver, not name.
|
|
- `RequiredForOnline=no` — an unplugged phone never blocks boot.
|
|
- DNS follows the Omarchy convention (`UseDNS=no`; global resolvers via systemd-resolved).
|