Building and running Signal Desktop on the Librem 5

I also get this problem when trying to install axolotl_1.0.5-1_arm64.deb – looks like it wants libc 2.32 but in PureOS we have libc 2.31. I guess Mobian had libc 2.31 until recently and then the same package worked on both PureOS and Mobian. To get something that works in PureOS now we can take a previous version, I tried axolotl_1.0.4-1_arm64.deb and that worked (I mean it worked to install that deb file, trying to run the program is another story).

To get the previous version of the deb file, clone the whole repo and checkout the tag corresponding to the version you want:

git clone https://github.com/nuehm-arno/axolotl-mobian-package
cd axolotl-mobian-package/
git tag # to list all available tags
git checkout v1.0.4-1
ls *.deb # now the axolotl_1.0.4-1_arm64.deb file is there

Looks like there are instructions for building the deb file from source here: https://github.com/nanu-c/axolotl/blob/main/docs/INSTALL.md#mobian
Probably it’s possible to build a new package for the Librem 5 based on that, to ba able to run the latest axolotl version on the Librem 5.

Thanks. I installed the axolotl_1.0.4-1_arm64.deb pkg, subscribed my mobile number, got the SMS with the PIN. But was unable to add a contact (my other mobile number). After marking Add (contact) the screen went away and I had no contacts to write a message to. It is just not working. The same is with the axolotl on my Ubuntu mobile, there it is version 1.0.5 from September 23, 2021.

Does this make calls successfully as well, or only texts?

2 Likes

How can I determine the Node.js version that Signal currently wants?
Is it the version that is in this file:

Yes, they say so here https://github.com/signalapp/Signal-Desktop/blob/development/CONTRIBUTING.md under “Developer Setup” where it says “First, you’ll need Node.js which matches our current version. You can check .nvmrc in the development branch to see what the current version is.” And the development branch is the default branch you get when cloning the repo.

1 Like

Hahaha, I find myself doing this all the time! It’s so funny, yet so frustrating that one does this.

@Skalman? I’m highly curious about this too. Someone must’ve tried it?

I did not test that yet. Trying to guess, I would expect there is a good chance it can work in Signal Desktop since the call functionality is hopefully unrelated to the screen size and also does not need touch input, so if it works on a laptop it should work on the Librem 5 as well. Anyway, I will test it and write something here about it.

3 Likes

Awesome thank you! I ask because I know I couldn’t get calls to work in Axolotl.

Now I tested it, voice calls are working in Signal Desktop on the Librem 5.

One annoyance: the sound from the call (i.e. the other person’s voice) comes out through the speaker at the bottom of the phone instead of at the top where my ear is. I suppose this can be expected for a program that thinks it is running on a desktop computer, it will just output audio through the usual speaker, it is not aware of any other speaker, maybe.

5 Likes

if its using PulseAudio - you can use Pulseaudio volume control UI - to easily direct that specific applications sound output to a specific speaker… I use that on my desktop all the time, when I want SOME sound only - on my bluetooth speaker, and other sounds on internal speaker etc.

4 Likes

What about videocalls?

2 Likes

I am trying to build the RingRTC library on Fedora 34.
I had to install rustup. I followed these instructions:

sudo dnf install snapd
sudo ln -s /var/lib/snapd/snap /snap
sudo snap install rustup --classic

And I had to install gcient. I followed these instructions:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH="$PATH:/path/to/depot_tools"

The build is currently running.

1 Like

How did it go?

I did not get it working yet.
First I ran into an issue that crti.o could not be found.

I got this error:

  = note: /usr/bin/aarch64-linux-gnu-ld: cannot find crti.o: No such file or directory
          /usr/bin/aarch64-linux-gnu-ld: cannot find -lstdc++
          collect2: error: ld returned 1 exit status
          

error: could not compile `ringrtc` due to previous error
make: *** [Makefile:76: electron] Error 101

I modified this bin/build-electron to explicitely mention the sysroot:

-        npm_config_arch=${TARGET_ARCH} npm_config_target_arch=${TARGET_ARCH} npm_config_disturl=https://atom.io/download/electron npm_config_runtime=electron npm_config_target=11.2.0 npm_config_build_from_source=true npm_config_devdir=~/.electron-gyp RUSTFLAGS="-C link-arg=-s ${RUSTFLAGS_WIN}" OUTPUT_DIR="${OUTPUT_DIR}" cargo build --target ${CARGO_TARGET} --features electron --release
+        npm_config_arch=${TARGET_ARCH} npm_config_target_arch=${TARGET_ARCH} npm_config_disturl=https://atom.io/download/electron npm_config_runtime=electron npm_config_target=11.2.0 npm_config_build_from_source=true npm_config_devdir=~/.electron-gyp RUSTFLAGS="-C link-arg=-s ${RUSTFLAGS_WIN} --sysroot ./src/webrtc/src/build/linux/debian_sid_arm64-sysroot"  OUTPUT_DIR="${OUTPUT_DIR}" cargo build --target ${CARGO_TARGET} --features electron --release

This brought me a bit further, but now I get:

error[E0463]: can't find crate for `core`
  |
  = note: the `aarch64-unknown-linux-gnu` target may not be installed
  = help: consider downloading the target with `rustup target add aarch64-unknown-linux-gnu`
  = help: consider building the standard library from source with `cargo build -Zbuild-std`

error[E0463]: can't find crate for `std`
  |
  = note: the `aarch64-unknown-linux-gnu` target may not be installed
  = help: consider downloading the target with `rustup target add aarch64-unknown-linux-gnu`
  = help: consider building the standard library from source with `cargo build -Zbuild-std`

For more information about this error, try `rustc --explain E0463`.
error: could not compile `semver-parser` due to previous error
warning: build failed, waiting for other jobs to finish...
error: build failed
make: *** [Makefile:76: electron] Error 101

And I do not know how to solve this. Ideas are welcome.

Something about a “crate”, probably related to rust and/or rustup then.

Could it be that you missed the step “rustup target add aarch64-unknown-linux-gnu”?

Otherwise, you could try a different way of installing rustup. What I did was to use the so-called “recommended” way to install according to https://www.rust-lang.org/tools/install which is a curl command fetching a script from https://sh.rustup.rs and then piping that to sh – in my opinion a completely ridiculous way to install something so I understand if you don’t want to do that, but anyway, it could be that rustup behaves differently when installed that way compared to the snap install that you used.

Did anyone try https://github.com/0mniteck/Signal-Desktop-Builder? It’s intended to be used on Mobian, but might also run on PureOS.

1 Like

I did a while ago, but it did not work then. I asked for help in the Librem5 Matrix channel, and Undef answered that it is a fork of his repository.

I tried to build ringrtc again, now in an Ubuntu 20.04 VM. This worked (but I had to install the following packages that are not in the instructions in the first post of this thread: python and yarn).
I will continue my attempt to build Signal Desktop later on.

1 Like

Hello, did you also tried the Flatpak version ? It is maybe easy to install, what do you think ?