Running Signal on the Librem 5

Kevin Guillaumond

October 7, 2023

Trying to daily drive the Librem 5

I received my Librem 5 a few months ago, and I’ve been trying to make it my daily driver.

The one app I really need on my Librem before I put my SIM card into it, is Signal. Everything else, I can deal with not having in my pocket while I figure out how to use alternatives.

Signal is necessary because I convinced a lot of friends and family to move to it from WhatsApp back in 2021, and I don’t want to ask them to migrate again.

This article documents my quest to using Signal on my Librem 5.

TL;DR I’m going to try and run it on Waydroid.

Looking for an official Signal app

The easiest scenario would have been to find Signal in the PureOS repository. As you can probably guess from the length of this article, there is no official Signal package there.

The Signal website does have a download page for “Signal for Debian-based Distros” but unfortunately, at the time of writing, it’s only available for x86.

So, no official and simple way to install the app.

Third-party apps

A logical next step is to look at third-party apps. Since the Signal apps are open source, I hoped people would be able to write their own app and make it available on the Librem 5.

But that’s not how Signal works. The developers do not want third-party apps to connect to their servers, and they don’t want to federate with other servers. So if you want to use Signal, you need to use an official app made by Signal Messenger LLC.

I’m gathering the first part from this LibreSignal issue from 2016, where Moxie Marlinspike, the founder of Signal, writes:

I’m not OK with LibreSignal using our servers, […] You’re free to use our source code for whatever you would like under the terms of the license, but you’re not entitled to use […] the service that we run.

As for the second part, there is this from Moxie on the same issue:

It is unlikely that we will ever federate with any servers outside of our control again, it makes changes really difficult.

A few days later, he wrote Reflections: The ecosystem is moving, justifying why “[…] it’s entirely possible to build a federated Signal Protocol-based messenger, but I no longer believe that it is possible to build a competitive federated messenger at all.”

This is the final paragraph:

An open source infrastructure for a centralized network now provides almost the same level of control as federated protocols, without giving up the ability to adapt. If a centralized provider with an open source infrastructure ever makes horrible changes, those that disagree have the software they need to run their own alternative instead. It may not be as beautiful as federation, but at this point it seems that it will have to do.

Now, this is admitedly old data, but I haven’t seen evidence that the stance of Signal Messenger LLC has changed since then.

Note that there are third-party Signal apps, on Flathub for example, like Axolotl and Flare. I believe that Signal Messenger LLC will eventually prevent them from reaching the official servers, rendering the apps useless for my purposes. I’d like to still be able to use Signal after that crackdown.

Trying to use the official Linux app anyway

At this point, my best bet seems to try and run the official Linux app. Since the app is open source, I should be able to take the source code and compile it for ARM64.

It seems that somebody named Adam Thiede has reached the same conclusion at some point, because they did exactly that and made the result available as a flatpak.

I found out about it via the Purism forum. Unfortunately, the flatpak is now unmintained:

I no longer use Signal. Updates are untested and shipped automatically by CI.

But it’s a decent start.

I can send and receive messages, in 1:1 chats and in existing groups. I can make and receive calls.

It does have a few problems:

I could consider living with the first 4 of these problems but a) it already makes life quite painful and b) the last one means that even that painful workflow can stop at any time.

Waydroid to save the day?

There may be a stopgap solution until a real Linux app exists, and that’s via Waydroid. Waydroid is an Android container that runs on Linux.

You start it like a normal app, and it’s a full-blown LineageOS system. It’s seriously impressive. Even internet access was working out of the box.

I installed Waydroid without the Google apps, so https://signal.org/download/android/, which only contains a link to the Google Play store, isn’t useful to me. But you can download the latest APK from the Danger Zone at https://signal.org/android/apk/.

Setup went fine, and that’s when I discovered that you can’t be registered on several Android devices at the same time. As soon as I registered on Waydroid, my Android phone got disconnected.

Another fun things about Waydroid: if you close it like a normal Phosh app, it restarts. You need to close it with waydroid session stop.

So in order to test this properly, I’m going to have to actually move the SIM card to the Librem.

Wish me luck!

Any hope for official apps?

Unlike the rest of the post, this paragraph is speculation. Just my take on how things are going to evolve.

Using an official app will be the way to go when Signal invests resources into making an app that’s nice to use on a Linux phone.

It hasn’t happened yet, but it may one day. They don’t need to write all the code themselves. Their apps are released under AGPL, and there are other companies that have an interest in making Signal work on Linux phones (Purism, for example). So if Signal Messenger LLC decides to start a native app for Linux, they won’t have to do all the dev work themselves.

They could even potentially pick any third-party app and declare it semi-official, promise they won’t prevent it from talking to their servers, and warn that they won’t wait for it to update before deprecating things (so that they can keep “moving the ecosystem”). That requires pretty much 0 work from the company.

Unfortunately, even though the Signal code is open source, it doesn’t seem to be developed in the open. For example, the public repo for the server code wasn’t updated for a year at some point. This is a strong sign that the company wants to write the Signal apps themselves, and that the “semi-official third party app” idea wouldn’t work.

Overall, it doesn’t look like there will be a nice-to-use Signal app on the Librem 5 until Signal Messenger LLC decides to invest resources into writing a 4th official Signal app (after iOS, Android, and Electron). Which is unlikely to happen given the current size of the Linux phone market. Which, in turn, is going to struggle to grow without a native Signal app.

I hope we can break out of that circle one day.