Tether:在 Linux 上使用 iMessage、SMS 等服务
Tether: iMessage, SMS, etc. on Linux

原始链接: https://zackbartel.com/blog/2026/08/tether/

在全面转向 Linux 后,作者发现自己非常怀念苹果生态中独有的“连续互通”(Continuity)功能,尤其是剪贴板同步、文件传输以及 OTP 自动填充。虽然现有的 KDE Connect 等解决方案在 Android 上表现良好,但却无法满足作者对于 iPhone 集成的需求。 为此,作者开发了名为 **Tether** 的工具,旨在将 macOS 的类似功能引入 Linux。Tether 非常重视安全性,在 iOS 与 Linux 之间的所有通信中均采用了 mTLS 技术。该项目目前已涵盖文件共享、剪贴板同步,以及一个创新的浏览器扩展程序,用于处理来自邮件及网页消息的 OTP 自动填充。 通过利用蓝牙协议,Tether 现已在 Linux 上成功支持了 iMessage、短信、通知镜像以及联系人同步功能。尽管蓝牙的实现过程存在重大的技术障碍,但最终成果实现了无缝衔接,弥补了苹果专有生态与 Linux 之间的鸿沟。该项目现已开源(采用 MIT 许可证),作者鼓励社区贡献代码,以扩展其功能并支持更多的邮件客户端。对于寻求在 iPhone 与 Linux 设备之间获得更佳集成体验的用户,Tether 是一个理想的选择。

本次讨论的核心是 **Tether**,这是一个全新的开源项目,旨在实现 iPhone 与 Linux 系统之间的 iMessage、短信、通知同步及文件传输。 讨论串重点强调了以下几个主题: * **许可协议与社区:** Tether 的作者在收到关于项目 copyleft 协议的反馈后,迅速将其更改为更宽松的 MIT 协议。这引发了关于开源价值观的广泛讨论:一些开发者倾向于使用限制性协议(如 AGPLv3)以防止被大公司利用,而另一些人则认为宽松的协议能促进更广泛的采用与协作。 * **互操作性:** 用户对苹果的“围墙花园”及其缺乏对互操作性的支持表示不满。对于因工作或个人原因依赖 iPhone 的 Linux 用户来说,Tether 被视为一座受欢迎但技术难度颇高的桥梁。 * **与现有工具的对比:** 许多参与者将 Tether 与 KDE Connect 进行了比较。虽然 KDE Connect 已相当成熟,但用户指出它缺乏深度的 iOS 集成(尤其是针对 iMessage 和通知)。作者解释称,之所以选择开发 Tether 而非向 KDE Connect 贡献代码,是因为双方在路线图上存在分歧,且项目需要一些与专有技术相关的特定功能。 * **技术挑战:** 由于苹果生态系统的限制,实现过程非常困难,必须在 iPhone 上安装配套应用程序才能完成。
相关文章

原文

I didn't miss macOS, but...

When I went to Linux full time I was surprised to not miss much from macOS.

tldr; I made Tether to do all the things I did miss.

tether open showing imessages on linux

No AirPlay kinda sucked, but the one thing I kept wishing I had was what Apple calls "Continuity": the ability to send and receive iMessages and SMS, share files, sync clipboard, and see notifications from my iPhone on my computer.

In particular, that thing where OTP codes sent to Mail or Messages autofill into the login form I'm waiting for on the Mac. It sounds small, but that was the one thing I really missed!

It is impossible to fully implement all of Continuity on Linux, but Tether's goal is to do all of it that is technically possible.

Before you ask, I know KDE Connect exists. It's great! If you're on Android you should definitely use it. The problem is that it didn't do what I wanted and it's roadmap indicated it never would.


Origins

Tether started its life filling the major holes. Clipboard sync was first, I wanted the OTP flow and I knew this was going to be required, and it was also the easiest. This let me copy / paste between macOS and Linux (Wayland) and forced the project to build out all the foundation I knew it would need later.

I knew the App Store was going to be a hurdle so I shipped the iOS app first with only support for clipboard sync. There was a very basic tetherd daemon for the linux side but that was it.


Security was a first class citizen from day one.

I never skipped out on safety. The networking between iOS and Linux has been mTLS from the start, and both sides must agree before anything can communicate. Since then I've done Opus and then Fable bug / security sweeps regularly.

After that, file transfer was the obvious next step and that went in quick and easy.


Wat

As for mail and browser stuff, I'm not very creative. To be honest I've kinda cheated here. I use Zen Browser (Firefox) and Betterbird (Thunderbird) and both support WebExtensions very well. So, I just made a browser and mail extension to deal with OTP stuff.

The mail extension looks for OTP codes and sends them to the browser extension which looks for OTP input elements and autofills OTP codes as they arrive from mail.

It actually works great! The problem is broad support: if you use a different mail client you're kinda out of luck for now. I'd LOVE if someone wants to help with that stuff, but it's so far out of my comfort that I'll stick with the backend side for now.


Bluetooth Breakthrough

My understanding to this point was that there was no interface to iMessage / SMS directly. You could always run a proxy on a Mac and send and receive texts through that, but in my opinion that is not a solution. I tried it. Even with Tailscale it was an unpleasant experience.

Then I ran across ancs4linux and later BlueFerry and I was completely shocked. In particular, erikwb's protocol documentation, which finally gave me enough information to understand what was happening.

There was a licensing issue, these projects are GPL and Tether is and always will be MIT, but I wanted a clean room implementation in C++ anyway. Personally, I think putting an interoperability protocol implementation behind a copyleft license is a little unfortunate! I'd rather see something like this usable by anyone, regardless of the license of the project using it (libtether?).

Anyway, now that the truly hard problem was solved, implementation went about as smooth as you could expect a bluetooth integration would go (it's still a complete shit show in 2026). Problem after problem with no clear explanation, an automatic kicking machine, and a bunch of carefully tracked edge cases compensating for bluetooth's inadequacies.


But we got there.

And Tether now supports: iMessage, SMS, Notifications, Contact sync on Linux. In addition to its previous: File Transfer, Clipboard Sync, OTP handling.

And my damn text OTP codes FINALLY autofill in the web browser!


Why?

While I did scratch my own itch with this project, I genuinely want Tether to be for everyone. I don't get anything out of people using it other than the satisfaction of knowing that something I built is useful.

Contributions are welcome! Bugs, feature requests, translations, documentation, really anything would be wonderful.

If you're on Linux with an iPhone, I really hope you give it a try.

联系我们 contact @ memedata.com