omatether/README.md
28allday 4d30b9d55a omatether v0.1.0 — iPhone USB tethering for Omarchy/Arch
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>
2026-07-03 19:26:31 +01:00

1.6 KiB

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

./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).