Jami encrypted message chat and video call

Petter Reinholdtsen: Jami/Ring, finally functioning peer to peer communication client
Some years ago, in 2016, I wrote for the first time about the Ring peer to peer messaging system. It would provide messaging without any central server coordinating the system and without requiring all users to register a phone number or own a mobile phone. Back then, I could not get it to work, and put it aside until it had seen more development. A few days ago I decided to give it another try, and am happy to report that this time I am able to not only send and receive messages, but also place audio and video calls. But only if UDP is not blocked into your network.

The Ring system changed name earlier this year to Jami. I tried doing web search for ‘ring’ when I discovered it for the first time, and can only applaud this change as it is impossible to find something called Ring among the noise of other uses of that word. Now you can search for ‘jami’ and this client and the Jami system is the first hit at least on duckduckgo.

Jami will by default encrypt messages as well as audio and video calls, and try to send them directly between the communicating parties if possible. If this proves impossible (for example if both ends are behind NAT), it will use a central SIP TURN server maintained by the Jami project. Jami can also be a normal SIP client. If the SIP server is unencrypted, the audio and video calls will also be unencrypted. This is as far as I know the only case where Jami will do anything without encryption.

Jami is available for several platforms: Linux, Windows, MacOSX, Android, iOS, and Android TV. It is included in Debian already. Jami also work for those using F-Droid without any Google connections, while Signal do not. The protocol is described in the Ring project wiki. The system uses a distributed hash table (DHT) system (similar to BitTorrent) running over UDP. On one of the networks I use, I discovered Jami failed to work. I tracked this down to the fact that incoming UDP packages going to ports 1-49999 were blocked, and the DHT would pick a random port and end up in the low range most of the time. After talking to the developers, I solved this by enabling the dhtproxy in the settings, thus using TCP to talk to a central DHT proxy instead of peering directly with others. I’ve been told the developers are working on allowing DHT to use TCP to avoid this problem. I also ran into a problem when trying to talk to the version of Ring included in Debian Stable (Stretch). Apparently the protocol changed between beta2 and the current version, making these clients incompatible. Hopefully the protocol will not be made incompatible in the future.

It is worth noting that while looking at Jami and its features, I came across another communication platform I have not tested yet. The Tox protocol and family of Tox clients. It might become the topic of a future blog post.

1 Like

There is a gnome version of GNU Jami, maybe this could be a good fit for librem 1…N.


Especially with the matrix disclosures:

can you make video calls with jami?
i have tried it yesterday with the newest version of jami on thinkpad 500 (with pureos installed on it) for video calling but jami can’t find my camera. I got a black screen and also the led indicator doesn’t go on. Microphone works good imo.

i wondering if Pure os causing this problem because other people dont have this issue, but they dont use pureos either.

Jami works great on PureOS on a Librem 15v4, provided you haven’t forgotten to switch on the camera/microphone switch. It does text, audio calls, and video calls between the Librem 15 and several other versions of Jami:

  • Jami app running on an Android 9 smartphone
  • Jami app running on an iPad Air
  • Jami running on an Apple Mac mini running PureOS

That’s all I’ve tested so far.

For a while there were huge connectivity bugs so I couldn’t get friends to use it, but the Jami team has worked them out well enough that it might now be ready for regular use. BTW, under PureOS I don’t use the ancient version in the PureOS (amber) repository. I point to Jami’s repository by adding a new file “jami.list” in /etc/apt/sources.list.d/ . jami.list contains this 1 line:

deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/nightly/debian_10/ ring main

This way, when you do “sudo apt update” followed by “sudo apt full-upgrade” you will get the latest version of Jami.

Good luck!

i have pureos installed on a thinkpad 500.
no switch there.
(camera is not broken and working fine with other software like cheese)