Signal Binding [4.0.0.0;5.0.0.0)

Hello @M_G ,

Another user reported having the same issue as you, and he fixed it with this solution.

It seems to be a error with the way the raspberry report the kernel architecture, or something like that.
Forcing value in the boot/config.txt could maybe resolve your issue.

1 Like

It is not an error it is a feature ā€¦
The kernel can run in 64 bit mode but the application ( userland ) can run in 32 bit mode.
If the application ( OH / binding ) relies on the check of the kernel ( uname -m ) to identify the architecture then it may fail if the userland does not run in the same mode.

Oh ! Thanks for the clarification, now I understand.

If the application ( OH / binding )

Actually, itā€™s sqlite that uses this detection. Iā€™m not sure if I can overwrite it effectively. The sqlite devs says that we can use a env variable to do so, but as openHAB is using sqlite as a ā€œfeatureā€ downloaded as a dependency by the osgi environnment, it seems outside the scope of a binding ? And even if I do, if another component use sqlite and already initialized it, it wonā€™t work.

The sqlite dev puts the responsability on the raspberry team, so unfortunately he wonā€™t fix it.

Saw that. Indeed it looks like this is specific for Raspberry that 32bit userland is used together with 64bit kernel. Although I found some questions that are several years old about if this would be possible the majority of these topics is about Raspberry nowadays.

I have no idea how this works but I am surprised that the application does the detection shouldnā€™t it be the OS that has the control ?

Itā€™s a simple ā€˜uname -mā€™ which indeed target the kernel.

It means that, basically, raspberry pi 4 user cannot use sqlitejdbc persistence service, unless they use a workaround such as the one we discuss here (which is not so easy to diagnose/find)
Iā€™m surprised that the topic is not more present in the forum.

I know that there are about at minimum 2 or 3 other cases.

  • two tests need to be done to identify kernel architecture and userland architecture

  • possible tests for kernel are:

    • uname -m => aarch64
    • lscpu | grep Architecture => aarch64
  • possible tests for userland architecture

    • getconf LONG_BITS = 32
    • file /bin/ls => ELF 32-bit LSB executable
2 Likes

Hey Gwendal,

Thanks a lot, that was it! Itā€™s working :partying_face: :partying_face: :partying_face:

Thanks to Wolfgang as well!

1 Like

Just in case this helps debugging and improvingā€¦

Today I upgraded from OH 4.0.4 to OH 4.1.1. Afterwards, the Signal account was broken (as before).

I found the /lib/ folder in /tmp/ including the .so file disappeared (probably in the process of the upgrade). So I did the following:

  • Copy the configuration data of the account into an editor
  • delete the Signal Account Thing, uninstall the binding, deleted the SQL stuff inside /lib/ which is copied there by the binding whenever an account is created.
  • then re-install the binding
  • do the steps as described in my previous post
  • create a new Bridge by copying the config from the editor back into the Thing
  • enjoy having it back working! :slight_smile:

Hello all,

You probably have issue with the binding right now.

**COMMUNICATION_ERROR**

IOException - org.asamk.signal.manager.api.AccountCheckException: signal-cli version is too old for the Signal-Server, please update.

This signal-cli issue shows that the upstream project signal-cli is aware and so should make a new version soon.
A new signal binding will of course follow as soon as possible, so stay tuned.

3 Likes

While desperately waiting for the updateā€¦ :sweat_smile:
I just noticed that there is a very recent release in signal-cli! :smiley:

See here

Hope that helps!

Great news !
I was also waiting and checking for a new release every day.
I will try to make a new binding release very soon.
Thanks for the information.

I just made a new release. Hope it will work.
As usual : remove, reinstall from the marketplace.

In my case I also had to remove binding, restart openHAB, reinstall binding because it keeps getting the old version, for whatever reason.

1 Like

I uninstalled the binding and reinstalled without reboot. It immediately started working again :star_struck:

Big thanks for updating so quickly!

By the way, even better. On my RPi4 / 8GB, OpenHABian, OH 4.1.1, I first-time tried using this fix and deleted the .so library I added manually in the previous fix.
Itā€™s perfectly working! :smiley:

Thank you for updating so fast!

I uninstalled / reinstalled the Binding, even restarted the system but still not working.
In the UI it is sown as disabled / uninitialized:

Any hint where I could start debugging? (I am still using the old openHAB 3.4.4 :grimacing:)

Iā€™m really sorry but the binding doesnā€™t support openHAB 3.X anymore :slightly_frowning_face:. In fact, I am surprised that you could use the 3.4.0 version so long, given that Signal likes to break compatibility for older version a couple time a year.

The reason is that the signal-cli project (that I use for the binding) needs java 17, and java 17 is available with openHAB 4 only.
I maintained in 2022/2023 a fork of signal-cli for java 11 but there was -literraly- thousands of modification and it was hell to maintain, so I dropped it as soon as openHAB 4 comes outā€¦

Sorry, all I can do now is wishing you an upgrade without issue :sweat_smile: ?

1 Like

THX for the update.
The signalaccountbridge thing is now online again.
But using
val signalAction = getActions("signal", "signal:signalaccountbridge:SignalBinding_openHAB");
in a rule gives me the following error:
2024-02-08 10:55:00.949 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Signal_Send' failed: Instance is not an SignalActions class.

I had this error message several times, but only when I remove the binding and reinstall it.
I think there is something wrong with the bundle reloading mechanism of openHAB.
But when I restart openHAB, the error goes away.
Let me know if it still happens after a restart ?

1 Like

Your right. It works after restarting the openhab service.
THX for your advice and making the addon work again!

Thanks for this Binding!
I got a quick question. How is it possible to send a message to multiple phone numbers?
Something like

signalAction.sendSignal("+33123456789,+33987654321", "Hello world!")

I also tried to use signalconversation, but I donā€™t get it work. Thereā€™s no example how to use it in git.

As you can see here :

Itā€™s on my wishlist !
Iā€™m primarily driven by my own need, and as I donā€™t ā€˜needā€™ this, this is on the todo list here since the beginningā€¦ By putting this here I hope to gain some help from contributorsā€¦ but to no avail for now :sweat_smile:

I didnā€™t put examples because it is designed to be straightforward. But if you donā€™t get it to work then it seems that I failed my goal :sweat_smile:
ā€œsignalconversationā€ Things are just a mean to use the binding directly with items, no code. A conversation Thing represent the exchange with one recipient. It has two channel, and those channels can be bound to text items : when the item linked to the ā€œsendā€ channel is updated, the message is sent to the recipient. And when the binding receive a message from this recipient, the item linked to the ā€œreceiveā€ channel is updated.

1 Like