Install guide
Ten minutes, two phones, one QR scan. You need:
- An Android phone with your SIM — this becomes the bridge. Any Android 8.0+ phone works; it will stay plugged in.
- Your main phone — Android for now.
- Both phones on the same network for setup — either your home WiFi, or the bridge phone's hotspot.
Step 1 — the bridge phone
- Install SimTether Bridge on the SIM phone — free, sideload the APK fromGitHub Releases(
simtether-bridge.apk). Sideloading is normal and safe here; Android will ask you to allow installs from your browser once. A Google Play listing is coming. - Open it and grant the permissions it asks for — SMS and call access is the job, plus notifications and nearby-device access to keep the link up. Keep the status notification visible; hiding it stops the bridge.
- Connect it to power and WiFi. The bridge shows a QR code.
Turn off RCS ("chat features") on the bridge phone.SimTether relays carrier SMS — texts that go through the mobile network. RCS chats (on by default in Google Messages) travel over the internet straight into the messaging app; they never touch SMS, so the bridge can't see them — and no Android API can change that. On the bridge phone: Google Messages → profile icon → Messages settings → RCS chats → off (in other messaging apps, disable their "chat" settings the same way). With RCS off, senders fall back to SMS automatically — nothing is missed.
Step 2 — your main phone
- Install SimTether from Google Play — a one-time purchase. The listing is going live shortly; the client app is only distributed there.
- Open it, tap Pair, and scan the QR on the bridge. That's the entire pairing — keys are exchanged and pinned in that scan.
- Done. SMS and call events now arrive on your main phone.
The bridge works best left alone: plugged in, on stable WiFi, with battery optimization disabled for the app (it will ask). Treat it like a router — set it up once and forget it exists.
Optional — remote access
Off by default. If you want the link to keep working when your main phone leaves home:
- In the bridge app: Settings → Remote access → enable. The bridge registers with a relay over TLS.
- Enable the same toggle on your main phone.
- Traffic stays end-to-end encrypted — the relay forwards ciphertext only. Advanced users can point both phones at a self-hosted relay.
The hosted relay is a best-effort service — it may be discontinued or become a paid feature later. Local/hotspot mode and self-hosted relays are free and unaffected either way. The app never depends on our infrastructure to function.
Advanced — run your own relay
If you'd rather not use the hosted relay at all, the relay is a single small jar you can run on any VPS, home server, or Docker host. It only ever forwards ciphertext.
- Build it:
./gradlew :relay:fatJar — or grabsimtether-relay.jar from GitHub Releases. - Run it:
ACCESS_TOKEN=your-token java -jar simtether-relay.jar(listens on port 44711). Put a TLS terminator in front — Caddy, nginx, or any reverse proxy — so the apps can reach it as wss://. - In the bridge app: Settings → Remote access → enter your
wss://your-host:port and the same token. Pair again so the QR carries your relay to the client.
Run exactly one instance — rooms live in memory and there is no cross-server lookup. Full options (env vars, limits) are inrelay/README.md in the repository.
The rooted build
| Standard | Rooted bridge |
|---|
| Where | GitHub Releases (Play soon) | GitHub Releases only |
| SMS + call control | yes | yes |
| Live call audio | no | yes — requires a rooted bridge phone |
| Status | stable | in development |
Root lets the bridge capture GSM call audio — the one thing Android keeps away from normal apps. If your bridge phone is rooted, the rooted build adds audio streaming to your main phone; everything else is identical.
The rooted build is experimental — install it only from the official GitHub Releases page. To verify any build is genuinely ours, compare the signing certificate against the fingerprint published in
SECURITY.md:
apksigner verify --print-certs file.apk. A fingerprint that doesn't match is not our build.
Troubleshooting
| Symptom | Usually means |
|---|
| "Pairing rejected" | The QR expired or the bridge was re-paired — show a fresh QR on the bridge and scan again. |
| Client can't find the bridge | Phones aren't on the same network, or the bridge phone's battery saver killed the service — disable optimization for the app. |
| Some texts reach the bridge phone but never arrive on the main phone | Those arrived as RCS chats, not SMS — disable chat features in the bridge's messaging app (see step 1). |
| Remote access never connects | Check the relay address in bridge settings, and that remote access is enabled on both phones. |
| Keystore warning banner | This device's Android Keystore is broken — stored secrets fall back to plain files. A factory image / different phone is the real fix. |