Hacker News 当前排名第一的帖子(389 分、164 条讨论)属于一个 544 star 的 C++ 项目:Tether,MIT 协议开源,仓库在 github.com/zackb/tether。作者 Zack Bartel 2025 年初把日常电脑换成 Linux 后,开始把 macOS 上离不开的 Continuity 功能逐项搬过来。项目 2026 年 4 月建仓,8 月底放出蓝牙消息支持后冲上 HN 首页。当前功能状态如下:
| 功能 | 状态 | 传输通道 |
|---|---|---|
| 剪贴板同步 | 稳定 | WiFi |
| 文件传输 | 稳定 | WiFi |
| OTP 验证码自动填充 | 稳定 | WiFi + 浏览器/邮件扩展 |
| iMessage 与短信收发 | Beta | 蓝牙 |
| 通知镜像 | Beta | 蓝牙 |
| 通讯录同步 | Beta | 蓝牙 |

iMessage 为什么难搬
Continuity 是苹果生态的封闭圈:iMessage 没有公开 API,通知转发走的是专有协议,苹果没有给任何第三方系统留官方入口。此前的方案各有代价。KDE Connect 功能齐全,但面向 Android,路线图上从未有过 iMessage 支持。BlueBubbles 的思路是在一台常开的 Mac 上架代理服务转发消息,作者试用后的评价是即便配上 Tailscale,体验也不理想,而且前提是你得先拥有一台 Mac。
Tether 的路线是两条链路各管一半:WiFi 链路(TCP 加双向 mTLS)负责剪贴板、文件和验证码;蓝牙链路负责 iMessage、短信和通知,全程不需要 Mac 参与配对。
WiFi 链路:mTLS 与 OTP 流水线
iPhone 端 App 在 App Store 上架(Tether - Linux Companion,免费,当前版本 1.1.10,8 月 25 日更新),通过 Bonjour/mDNS 发现局域网里的 tetherd 守护进程,再用苹果 Network.framework 完成 TLS 协商。连接从第一天起就是双向 mTLS(X.509 RSA 证书),两端都确认对方身份后才开始通信。作者还在博客里提到,项目定期用 Claude Opus 和 Fable 做漏洞排查。
这条链路上最能提升日常体验的是验证码流水线。Thunderbird/Betterbird 邮件扩展监听收件箱,解析出新验证码后经 native messaging 交给守护进程;Firefox/Chromium 浏览器扩展盯住登录页的验证码输入框,验证码到达即自动填充。iOS 端的 Share Extension 能把手机上收到的验证码推到 Linux 剪贴板;走蓝牙进来的短信验证码同样会被递给浏览器扩展。验证码从邮件或短信到登录表单,中间不再需要人工抄写。
蓝牙链路:ANCS,苹果给配件预留的通道
消息和通知的突破口来自一个存在了很久的官方接口。Apple Notification Center Service(ANCS)是苹果公开的 BLE 服务,设计初衷是让蓝牙手环和手表读取 iPhone 的通知。它的服务 UUID 是 7905F431-B5CE-4E99-A40F-4B1E122D00D0,包含三个特征:
| 特征 | UUID | 属性 |
|---|---|---|
| Notification Source | 9FBF120D-6301-42D9-8C58-25E699A21DBD | notify,必选 |
| Control Point | 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9 | write,可选 |
| Data Source | 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB | notify,可选 |
Notification Source 推送每条通知的 8 字节摘要:EventID(新增、修改或删除)、EventFlags(是否重要、是否静音)、CategoryID、CategoryCount 和 4 字节的 NotificationUID。客户端拿 UID 通过 Control Point 发查询命令,Data Source 返回标题、副标题和正文。苹果文档同时写明:ANCS 不保证一直在线,iOS 可能在任意时刻取消发布,客户端必须订阅 GATT 的 Service Changed 特征来感知上下线。
ANCS 只解决"读"。回复短信、同步通讯录要走经典蓝牙(BR/EDR)上的另外两套配置文件:Message Access Profile(MAP)管消息,Phone Book Access Profile(PBAP)管通讯录,两者都基于 OBEX。iMessage 和短信在手机侧统一经 MAP 推给电脑。一台电脑要同时扮演两种角色:BLE 上订 ANCS 读通知,经典蓝牙上建 MAP/PBAP 收发消息。
配对的雷区:社区记录下的经验规则
真正把这条路走通的人是社区。ancs4linux 项目首创了 ANCS 通知方案,erikwb 的 BlueFerry 更进一步,把 iPhone 的实际设备行为写成一份 PROTOCOL.md 文档。文档开头就声明这些是实测观察,未经苹果承诺。几条关键结论(iPhone 16 Pro Max、iOS 26.5、BlueZ 5.86 环境):
- Linux 适配器的设备类要设成 A/V Hands-Free(主类 4、次类 8),否则配对后拿不到消息权限。
- 请求 ANCS 的广播只能在配对完成且经典链路连通之后注册。提前广播会让 iOS 把同一台电脑记成两个独立设备,权限开关分裂在两条记录里。
- 发起配对的正确姿势是注册 pairing agent 后直接对未配对设备调用
Device1.Connect()。iOS 发现无安全凭据,拒绝 profile 连接并自行发起配对;iPhone 在每条连接里都会把自己 role-switch 成 central,而只有 central 能在加密完成后执行 SMP-on-BR/EDR 跨传输密钥推导,一次配对同时生成 BR/EDR 和 LE 两张 bond,iOS 侧只保留一条设备记录。 - 换成 Linux 主动调用
Device1.Pair(),在实测的 Intel AX210 上只能得到经典蓝牙单边 bond;联发科 MT7922 则两种方式都能成。控制器差异需要逐个验证。 - 配对完成后,iOS 设置里的 Show Message Notifications 和 Sync Contacts 两个开关可能要几分钟才出现,并且只在 ANCS 广播活跃时出现。
- 系统授权弹窗批准前,Control Point 的第一次请求返回 NotPermitted,批准后约 5 秒重试即成功。
iOS 18 及更早版本另有坑:外向 LE 连接直接以 le-connection-abort-by-local 告终,MAP/PBAP 却能正常工作。对应到 Tether 里就是两种模式:控制器支持双传输且 BlueZ 5.86 以上走完整模式,否则自动退到兼容模式(只用经典蓝牙,通知镜像不可用)。
许可边界:GPL 之外的 clean room
ancs4linux 和 BlueFerry 都是 GPL 协议,Tether 是 MIT。作者在博客里给出了他的选择理由:把互操作协议的实现放在 copyleft 许可后面,客观上限制了任何许可不兼容的项目使用它,对一份描述设备行为的协议来说并不合适。Tether 的做法是参照公开的 PROTOCOL.md 文档,用 C++ 写了全新的实现,不接触 GPL 代码。
实际部署与边界
系统要求集中在蓝牙栈:BlueZ 5.86 以上并打开实验性 bearer API(Tether 自带 systemd drop-in,tether --bt-setup 会打印你的机器还缺哪几步和对应命令,不替你执行),控制器需同时支持 BR/EDR、LE 和广播。桌面侧要求 Wayland 合成器支持 wlr-data-control 协议,Hyprland、Sway 均可,X11 不在支持范围。Arch 用户 yay -S tether 一条命令,Debian/Fedora 按依赖表从源码 make release。
配对流程在 GTK 应用里完成:Devices 页选中 iPhone 按下 Pair over Bluetooth,两端确认同一个数字码,然后回到 iPhone 的蓝牙设置里打开上述两个权限开关。日常使用中,左侧是会话列表,短信和 iMessage 混排,直接在桌面回复;底部状态栏实时显示 WiFi 和蓝牙两条链路的连接状态。

边界也要列清楚:通知镜像不支持 iOS 18 及更早版本;iPhone 侧需要安装 App Store 的免费应用;项目发布两周,GitHub 上 544 star、12 fork,消息功能标注为 Beta。路线图上还有两项:带 Safari 自动填充的 TOTP 验证码保险库,以及对 macOS 的支持探索。
对同时持有 iPhone 和 Linux 桌面的用户,这基本是第一个不需要 Mac 中转、覆盖面完整到验证码自动填充的开源方案。项目地址:github.com/zackb/tether。
来源
- 作者博客:zackbartel.com/blog/2026/08/tether/
- GitHub 仓库与 README:github.com/zackb/tether
- BlueFerry 协议文档:github.com/erikwb/blueferry/blob/main/PROTOCOL.md
- Apple ANCS 官方规格(developer.apple.com 存档)
- HN 讨论:news.ycombinator.com(389 分 / 164 评论)