Skip to content

Releases: gabrielmeir53/iphonebridge

v0.4.2 — verification codes to the clipboard

Choose a tag to compare

@gabrielmeir53 gabrielmeir53 released this 20 May 18:12

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

Choose a tag to compare

@gabrielmeir53 gabrielmeir53 released this 20 May 18:12

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

Choose a tag to compare

@gabrielmeir53 gabrielmeir53 released this 20 May 18:12

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 Events1 live event-feed interface
  • Draft Flatpak manifest for the UI (packaging/flatpak/)

v0.3.0 — HFP Hands-Free calls

Choose a tag to compare

@gabrielmeir53 gabrielmeir53 released this 20 May 18:12

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 Calls1 interface

Confirmed end-to-end against iPhone 16 Pro Max / iOS 26.5, including reliable outgoing dial.

v0.2.0 — ANCS per-app notifications

Choose a tag to compare

@gabrielmeir53 gabrielmeir53 released this 20 May 02:01

🚀 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, AncsEvent type
  • systemd/set-le-bearer.sh — strictly-validated privileged helper that writes LastUsedBearer=le in BlueZ's pairing record so Device1.Connect() chooses BLE rather than BR/EDR
  • systemd/install-ancs-sudoers.sh — NOPASSWD sudoers rule for the above, locked to two MAC arguments
  • iphonebridge ancs-enable CLI 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=ANCS is 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 fresh

See the README for new install.

v0.1.0 — first release

Choose a tag to compare

@gabrielmeir53 gabrielmeir53 released this 20 May 01:07

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.