Whisperfish - The unofficial SailfishOS Signal client

Indeed.
To be clear: “autostart” and “run in background after closed” should be a user setting.

This is very true of messaging apps, where any particular service might be one you only want to use occasionally, and when not, you don’t want it using power, memory, data, bings and bongs, and leaking your current IP continuously.

I tried to get the Molly developer to give me an option of disabling the background daemon, but he refuses to do it - I really hate when developers tell me that I don’t actually want to do what I have just told them I want to do. Feel free to add your request to mine.
btw, Molly worked fine for voice support on SF, just annoying that when android support starts (not molly), Molly starts binging away as it catches up with all the signal chats I had in WF

3 Likes

Ugh, then there’s something going wrong and I don’t know what. I already had a grep some days ago on sender keys, and I didn’t see any obvious changes. I’m implementing a reset system when there errors occur, but that’s obviously just a band-aid!

I do understand his hesitance though. Signal’s background processing is quite involved (especially key rotations, which are quite crucial to maintain privacy, even when not using the app). On top, it involves a few ten thousands of lines of code. Having it run only when the app is open is quite a coding effort, and diverges from the upstream Signal Android code such that merges become painful. I believe @valldrac is mainly concerned with the maintenance burden that it would imply.

I do understand though that especially the beeps and boops are annoying…

Good to know! Now that 5.0.0.76 has a working microphone again, I might regain my will to fight with ringrtc for voice call support…

8 Likes

I traditionally had problems with WF and Signal in this regard, that’s why I only used Signal and Signal Desktop for a long time. Don’t know if it is just me for some reason :wink: But I am trying to shift as many AAS apps towards native ones, and Signal is a huge one for me, so I thought I might give it a try again :slight_smile:

Is there some kind of long-time logging I could do to help finding the issue? As it isn’t predictable when it happens, it wouldn’t be helpful to have only short term logs, I guess.
And thanks a lot for your work on this important app!

2 Likes

Definitely not. @direc85 and I are usually on a development version with some small updates, which might sometimes give the two of us a more stable experience. I’d like to release a lot more frequently in the near future.

You can try to capture all logs and grep for ERROR, but it will probably give you a lot of false positives as well. The problem is that those sender key updates are not necessarily immediately before a missed message. And even if they are, you’ll only notice a few hours later…

1 Like

I am similar to this. A Signal friend uploaded a video to a preexisting group chat on Signal and I didn’t see it nor any associated replies to video msg.
But a new chat to thev group I received message.
Latest SFOSand WF.

That doesn’t sound like I could be of great help

1 Like

I’ve also been seeing it pop up now, we’re looking at what could’ve happened

3 Likes

Today I had one more incident of a missed message in a group chat. Additionally, I have a message which shows up once in Signal AAS and appears twice in a row in WF. The doubled message in WF shows as edited in Signal, and both versions are present in WF. Is this expected behaviour?

I have the feeling (but can’t proof it so far) that things like missed messages or the two versions of the one message occur when the phone is not connected to the network when the messages are sent.

I’ve had very few (none?) missed group messages lately, so I feel like something fixed it in the main branch. I suppose it’s time to get a new release out.

11 Likes

Suddenly today, Whisperfish crashed a few times and now I get the (infamous) screen “Error. Failed to setup Signal client. Please restart Whisperfish” (or something like that, translated from german).

The problem is: I have setup Whisperfish in daemon mode, so I can’t restart it. Is there some way to force-restart it? Or should I just reset Whisperfish completely?

My understanding is that we currently can’t re-link our account without wiping everything

Okay, so the only way to “fix” this error is to reset Whisperfish completely and re-linking?

Here is info: Frequently Asked Questions · Wiki · Whisperfish / Whisperfish - Signal on Sailfish OS · GitLab

You can force-stop by kill -INT $(pidof harbour-whisperfish), after that you can launch it from CLI to capture logs :slight_smile:

2 Likes

If you can just run harbour-whisperfish --quit on the terminal :slight_smile:

4 Likes

Thanks! That was exactly what I was looking for :sweat_smile:

So now I was able to capture some logs:

[defaultuser@NSC-Handy ~]$ harbour-whisperfish --verbose
2026-03-30T16:59:25.408207Z DEBUG whisperfish::qtlog: Using Wayland-EGL
library "libui_compat_layer.so" not found
library "libutils.so" not found
library "libcutils.so" not found
library "libhardware.so" not found
library "android.hardware.graphics.mapper@2.0.so" not found
library "android.hardware.graphics.mapper@2.1.so" not found
library "android.hardware.graphics.mapper@3.0.so" not found
library "android.hardware.graphics.mapper@4.0.so" not found
library "libc++.so" not found
library "libhidlbase.so" not found
library "libgralloctypes.so" not found
library "android.hardware.graphics.common@1.2.so" not found
library "libion.so" not found
library "libz.so" not found
library "libhidlmemory.so" not found
library "android.hidl.memory@1.0.so" not found
library "vendor.qti.qspmhal@1.0.so" not found
2026-03-30T16:59:25.531982Z  INFO whisperfish::gui: QmlApp::application loaded - version v0.6.0-beta.39
2026-03-30T16:59:25.869884Z  WARN whisperfish::qtlog: "Failed to attach key memory region for qtcontacts-sqlite-np: QSharedMemory::attach (shmget): doesn't exist"
2026-03-30T16:59:25.869999Z  WARN whisperfish::qtlog: "Failed to open contacts transient store"
2026-03-30T16:59:25.870429Z  WARN whisperfish::qtlog: "Unable to open synchronous engine database connection"
2026-03-30T16:59:25.870571Z  WARN whisperfish::qtlog: QSqlQuery::prepare: database not open
2026-03-30T16:59:25.870648Z  WARN whisperfish::qtlog: "Failed to prepare distinct display label group selection query:
\n SELECT DISTINCT DisplayLabelGroup FROM DisplayLabels ORDER BY DisplayLabelGroupSortOrder ASC"
2026-03-30T16:59:25.889926Z  WARN whisperfish::qtlog: qml/harbour-whisperfish-main.qml:443:5: QML Connections: Cannot assign to non-existent property "onRingingChanged"
2026-03-30T16:59:25.993520Z  INFO run: whisperfish::worker::setup: identity_key found, assuming registered
2026-03-30T16:59:25.993567Z  INFO run: whisperfish::config::settings: Setting default settings.
2026-03-30T16:59:26.035632Z ERROR run: whisperfish::worker::setup: ACI UUID not set after registration or opening storage!
2026-03-30T16:59:26.035834Z DEBUG run: whisperfish::qtlog: qml/harbour-whisperfish-main.qml:431:expression for onClient
Failed(): [FATAL] client failed
2026-03-30T16:59:26.073289Z DEBUG run: whisperfish::qtlog: qml/pages/FatalErrorPage.qml:25:onCompleted(): [FATAL] error occurred: Einrichtung des Signalclients fehlgeschlagen
2026-03-30T16:59:26.074937Z DEBUG whisperfish::qtlog: Starting favorites query at 245 ms
2026-03-30T16:59:26.076120Z  WARN whisperfish::qtlog: qml/harbour-whisperfish-main.qml:41: ReferenceError: PeopleModel is not defined
2026-03-30T16:59:26.161466Z DEBUG whisperfish::qtlog: Favorites queried in 332 ms
2026-03-30T16:59:26.237848Z DEBUG whisperfish::qtlog: Starting metadata query at 408 ms
2026-03-30T16:59:26.245183Z DEBUG whisperfish::qtlog: All queried in 416 ms
2026-03-30T16:59:26.537463Z  WARN fetch_all_sessions_augmented:fetch_group_v2_self_member{gv2_id="*****************************CENSORED***************************"}:fetch_self_recipient_id:fetch_self_recipient: whisperfish_store::store: No E.164 set, cannot fetch self.
thread 'main' panicked at /home/mersdk/whisperfish-build/whisperfish-store/src/store.rs:866:14:
no self recipient to retrieve db id from
stack backtrace:
0:       0x621900f9f4 - <unknown>
1:       0x6218aea848 - <unknown>
2:       0x621900c2b0 - <unknown>
3:       0x621900f8a8 - <unknown>
4:       0x621901117c - <unknown>
5:       0x6219010e78 - <unknown>
6:       0x6219011900 - <unknown>
7:       0x6219011690 - <unknown>
8:       0x621900ffe0 - <unknown>
9:       0x621901136c - <unknown>
10:       0x6218a2ffb8 - <unknown>
11:       0x6218a2ff98 - <unknown>
12:       0x621956f06c - <unknown>
13:       0x6219577a18 - <unknown>
14:       0x62195ea368 - <unknown>
15:       0x621960227c - <unknown>
16:       0x621957c178 - <unknown>
17:       0x621963612c - <unknown>
18:       0x6219647358 - <unknown>
19:       0x62192bc314 - <unknown>
20:       0x62192a6cf0 - <unknown>
21:       0x62191848f0 - <unknown>
22:       0x62190b86e4 - <unknown>
23:       0x62190b98b8 - <unknown>
24:       0x62190b8884 - <unknown>
25:       0x62195c4564 - <unknown>
26:       0x6219889078 - <unknown>
27:       0x6218d60070 - <unknown>
28:       0x6219c0eb4c - <unknown>
29:       0x7f1ef2f87c - _ZN7QObject5eventEP6QEvent
30:       0x7f1ef02b98 - _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent
31:       0x7f1ef04fcc - _ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData
32:       0x7f1ef56208 - <unknown>
33:       0x7f1e0fa4dc - <unknown>
34:       0x7f1e0fd648 - <unknown>
35:       0x7f1e0fde34 - g_main_context_iteration
36:       0x7f1ef5667c - _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE
37:       0x7f1ef00f84 - _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE
38:       0x7f1ef089e4 - _ZN16QCoreApplication4execEv
39:       0x62195ade1c - <unknown>
40:       0x621964c1ac - <unknown>
41:       0x6218b36bd0 - <unknown>
42:       0x6218b56228 - <unknown>
43:       0x6218b47338 - <unknown>
44:       0x6219005d10 - <unknown>
45:       0x6218b39294 - <unknown>
46:       0x7f1d56419c - __libc_start_main
47:       0x6218a6e0cc - <unknown>
[defaultuser@NSC-Handy ~]$

Could it be your storage was full? There’s an age old bug (:face_with_peeking_eye:) where your .config/be.rubdos/harbour-whisperfish/config.yml gets overwritten if your storage is full… If you want to recover that file (after fixing your storage), feel free to ping me.

2 Likes

Yes, that was actually the case (some Android-App filled my storage with a lot of files called ._backup-something.tmp all of them 5GB :roll_eyes: ).

Yes, I would really like to do that :upside_down_face:

1 Like

Tips on diagnosing “Failed to setup Signal client” error are appreciated.

There is lots of available storage on the device. Jolla C2 Sailfish OS 5.0.0.77.

I uninstalled Whisperfish

Ran

rm -rf ~/.local/share/harbour-whisperfish ~/.config/harbour-whisperfish ~/.local/share/be.rubdos/harbour-whisperfish ~/.config/be.rubdos/harbour-whisperfish

Reinstalled whisperfish via Storeman

Then try to register

Output from

harbour-whisperfish --verbose >wlog.txt 2>&1

below:

e[2m2026-04-03T14:35:36.529360Ze[0m e[34mDEBUGe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m Using Wayland-EGL
library “libutils.so” not found
library “libdmabufheap.so” not found
library “libbase.so” not found
library “libz.so” not found
library “libcutils.so” not found
library “android.hardware.graphics.mapper@4.0.so” not found
library “libgralloctypes.so” not found
library “libhidlbase.so” not found
library “libhardware.so” not found
library “libc++.so” not found
e[2m2026-04-03T14:35:36.627787Ze[0m e[32m INFOe[0m e[2mwhisperfish::guie[0me[2m:e[0m QmlApp::application loaded - version v0.6.0-beta.39
e[2m2026-04-03T14:35:36.628350Ze[0m e[33m WARNe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m src/sailfishapp.rs:211:int __cpp_closure_14317703314545309294_impl(QmlApplicationHolder* const&)(): Failed to load translator for (“en-GB”) Searched “/usr/share/harbour-whisperfish/translations” for “harbour-whisperfish”
e[2m2026-04-03T14:35:37.104797Ze[0m e[33m WARNe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m “Failed to attach key memory region for qtcontacts-sqlite-np: QSharedMemory::attach (shmget): doesn’t exist”
e[2m2026-04-03T14:35:37.104957Ze[0m e[33m WARNe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m “Failed to open contacts transient store”
e[2m2026-04-03T14:35:37.105262Ze[0m e[33m WARNe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m “Unable to open synchronous engine database connection”
e[2m2026-04-03T14:35:37.105482Ze[0m e[33m WARNe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m QSqlQuery::prepare: database not open
e[2m2026-04-03T14:35:37.105585Ze[0m e[33m WARNe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m “Failed to prepare distinct display label group selection query: \n SELECT DISTINCT DisplayLabelGroup FROM DisplayLabels ORDER BY DisplayLabelGroupSortOrder ASC”
e[2m2026-04-03T14:35:37.127893Ze[0m e[33m WARNe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m qml/harbour-whisperfish-main.qml:443:5: QML Connections: Cannot assign to non-existent property “onRingingChanged”
e[2m2026-04-03T14:35:37.232674Ze[0m e[32m INFOe[0m e[1mrune[0me[2m:e[0m e[2mwhisperfish::worker::setupe[0me[2m:e[0m identity_key found, assuming registered
e[2m2026-04-03T14:35:37.232815Ze[0m e[32m INFOe[0m e[1mrune[0me[2m:e[0m e[2mwhisperfish::config::settingse[0me[2m:e[0m Setting default settings.
e[2m2026-04-03T14:35:37.235872Ze[0m e[31mERRORe[0m e[1mrune[0me[2m:e[0m e[2mwhisperfish::worker::setupe[0me[2m:e[0m ACI UUID not set after registration or opening storage!
e[2m2026-04-03T14:35:37.236282Ze[0m e[34mDEBUGe[0m e[1mrune[0me[2m:e[0m e[2mwhisperfish::qtloge[0me[2m:e[0m qml/harbour-whisperfish-main.qml:431:expression for onClientFailed(): [FATAL] client failed
e[2m2026-04-03T14:35:37.293891Ze[0m e[34mDEBUGe[0m e[1mrune[0me[2m:e[0m e[2mwhisperfish::qtloge[0me[2m:e[0m qml/pages/FatalErrorPage.qml:25:onCompleted(): [FATAL] error occurred: Failed to setup Signal client
e[2m2026-04-03T14:35:37.297689Ze[0m e[34mDEBUGe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m Starting favorites query at 233 ms
e[2m2026-04-03T14:35:37.300439Ze[0m e[33m WARNe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m qml/harbour-whisperfish-main.qml:41: ReferenceError: PeopleModel is not defined
library “libion.so” not found
e[2m2026-04-03T14:35:37.503889Ze[0m e[34mDEBUGe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m Favorites queried in 439 ms
e[2m2026-04-03T14:35:37.593475Ze[0m e[34mDEBUGe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m Starting metadata query at 529 ms
e[2m2026-04-03T14:35:37.602686Ze[0m e[34mDEBUGe[0m e[2mwhisperfish::qtloge[0me[2m:e[0m All queried in 538 ms

Thanks.