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 是一个理想的选择。

一个 Hacker News 帖子讨论了“Tether”,这是一个能在 Linux 上实现 iMessage 和短信集成的项目。讨论中,社区对打破苹果“围墙花园”的努力表示赞赏,许多用户对 iOS 与非苹果平台之间缺乏官方互操作性感到不满。 围绕该项目的许可协议出现了技术争论,导致开发者迅速将代码从 Copyleft 协议更改为 MIT 协议,以促进更广泛的采用。 其他评论者对一个单人项目能否持续逆向工程苹果不断变化的协议表示怀疑。批评者建议,与其开发独立工具,开发者不如为 KDE Connect 或 Beeper 等成熟的开源项目做出贡献。参与者鼓励开发者专注于与现有生态系统的互操作性,而不是重复造轮子。
相关文章

原文

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