Releases: gabrielmeir53/iphonebridge
Release list
v0.4.2 — verification codes to the clipboard
Incoming one-time / 2FA codes are detected and copied straight to the system clipboard, with a brief confirmation notification — paste with Ctrl+V, no reaching for the phone.
Detection requires both a verification keyword and a 4-8 digit number, so ordinary texts don't trigger it. Needs wl-clipboard (Wayland) or xclip / xsel (X11).
v0.4.1 — sent messages in conversation history
Messages sent through iphonebridge (the app's compose box or iphonebridge sms-send) are now recorded into conversation history — a thread shows both sides: incoming messages and the replies you send from the desktop.
Note: messages composed on the iPhone itself remain invisible — iOS does not expose sent content over MAP.
v0.4.0 — GTK4 desktop app
A standalone GTK4 / libadwaita desktop app — iphonebridge-ui.
- Four surfaces: Messages, Notifications, Calls, and Setup / status
- Talks to the daemon over D-Bus; the daemon gained an
Events1live event-feed interface - Draft Flatpak manifest for the UI (
packaging/flatpak/)
v0.3.0 — HFP Hands-Free calls
Take and place iPhone calls on the Linux desktop over the HFP Hands-Free profile.
- Caller ID, answer / decline, and dialing — call audio routes through the laptop's mic and speakers
- Call control via oFono; SCO call audio via PipeWire's oFono backend
- New CLI commands:
call,hangup,calls,hfp-enable - Incoming-call desktop notifications with Answer / Decline buttons
- D-Bus
Calls1interface
Confirmed end-to-end against iPhone 16 Pro Max / iOS 26.5, including reliable outgoing dial.
v0.2.0 — ANCS per-app notifications
🚀 Phase 2a is live — every iPhone app's notifications mirror to Linux desktop
Live-verified: a WhatsApp notification from a contact arrived on the Linux desktop within ~2s of the iPhone receiving it. iphonebridge now has full Phone-Link feature parity:
| Feature | Mechanism |
|---|---|
| SMS + iMessage incoming | MAP MNS |
| SMS + iMessage outgoing | MAP PushMessage |
| Contacts | PBAP |
| Per-app notifications | ANCS BLE GATT ⬅ new |
| Bidirectional read sync | MAP read-state writes |
What was new in this release
src/iphonebridge/ancs/— full ANCS protocol implementation: constants, wire-format parsers/builders, GATT client subscribing to the three ANCS characteristics,AncsEventtypesystemd/set-le-bearer.sh— strictly-validated privileged helper that writesLastUsedBearer=lein BlueZ's pairing record soDevice1.Connect()chooses BLE rather than BR/EDRsystemd/install-ancs-sudoers.sh— NOPASSWD sudoers rule for the above, locked to two MAC argumentsiphonebridge ancs-enableCLI command — applies the bearer change and cycles the iPhone connection
The unlock
ANCS only works with a proper BLE bond, which requires the iPhone re-pair to happen while:
- Adapter Class-of-Device = A/V Hands-Free (
btmgmt class 4 8) - BLE peripheral advert with
SolicitUUIDs=ANCSis active - An Intel BT adapter (Realtek and most USB BT adapters don't work, per bmh129's hardware notes)
iOS does CTKD during that fresh SSP and produces both BR/EDR LinkKey AND BLE LongTermKey in the bonding record. Then LastUsedBearer=le ensures BlueZ uses the BLE side on reconnect.
Credits
This release would not exist without bmh129/ancs4linux (active 2026 fork of pzmarzly/ancs4linux). The ANCS wire-format parsers in src/iphonebridge/ancs/ are derived from their observer/ancs/ modules, and their empirical documentation of which BT adapters can actually do BLE-with-iOS saved weeks of trial-and-error.
Setup
Existing v0.1.0 users:
git pull
pip install -e .
sudo bash systemd/install-ancs-sudoers.sh
iphonebridge ancs-enable
# follow the prompts to re-pair your iPhone freshSee the README for new install.
v0.1.0 — first release
First tagged release. Working iphonebridge daemon on Pop!_OS 24.04 against iPhone 16 Pro Max running iOS 26.5.
Confirmed working
- Real-time SMS + iMessage notifications via MAP MNS push, with full body + sender name resolution
- Outgoing SMS + iMessage send via MAP
PushMessage— iOS auto-routes as iMessage when the recipient is iMessage-capable (blue bubble) - 1000+ contacts pulled via PBAP, cached in SQLite, name-resolved for incoming/outgoing
- systemd user service with graceful degradation when iPhone toggles are off (60s retry, no crash loop)
- DBus service
com.gabriel.iphonebridge.Messages1(Send,ListRecent,IsHealthy) - CLI:
run,doctor,pair-setup,sms-list,sms-send,contacts-sync,version
The surprise finding
iMessage works over MAP on iOS 26.5, both read and send — contradicting every prior Bluetooth-on-Linux writeup. iphonebridge is potentially the first free open-source Linux iMessage bridge that doesn't require a Mac relay. See `spike/RESULTS.md` §6 for the empirical test.
Known limits (won't change)
- No iMessage attachments / reactions / read receipts / typing indicators (MAP doesn't expose them)
- No group iMessage / MMS / RCS (MAP is 1:1 only)
- No per-app notifications yet (ANCS over BLE — would need a second BT adapter; Phase 2a)
- No outgoing call audio routing (HFP HF role — Phase 2c)
Setup
See the README.