Using Jami from China


I have a strong interest in Jami since the beginning because of its protocol design which make it as difficult to censor as bitTorrent &co is.

It turns out that I’m traveling in China regularly and out there it is Wechat or nothing, and that’s make me pretty uncomfortable because it might me requesting the persons that I want to stay in touch outside of China to install Wechat.

Anyway, I used to test Jami in China 2 years ago and it didn’t make it. So before going back to China I wanted to try it thought a VPN to simulate a long distance call. I connected my pc to a Jami account A and my phone to an account B then connect my phone to VPN in Asia. The text messages kind of work even if it takes time (maybe DHT update ?) but I’m not able to make a call.
I tried:

  • voice and video
  • from phone to pc and reverse
  • multiple Asian location: Japan and Korea
  • wait 1h to be sure the DHT is well updated

It stays in “search” (ie: the other device never ring).

Can someone try a long distance call and tell us if it works ?

1 Like

Hi, for a use in China, it will be great to have your feedback once you’ll be there. I personnaly tested it 2 years ago with a local sim card 4g, and it works well for audio and video. But since, we observe conflicting feedbacks.
If you want to try a call Canada (EST), you can try to call me at “christophe_support”.

1 Like

I just had a call with Chritophe and it worked really really well.

So we test France (where am I now) to Canada where Cristophe is, it worked like a charm, both video and audio.
I connected my self to a vpn in Japan, almost instantly Cristophe was able to call me and it worked very well. The video wasn’t good but the audio was pretty great beside a few tiny tiny drops which didn’t affect the comprehension.
Keep in mind that this test wasn’t representing a real case, the flux make almost 20.000km, which shouldn’t happened in reality.

Thanks for your help.
I keep you online about the usability of Jami in China :wink:


good news, Jami work well in China, even better than WeChat, which is incredible, believe me.

I started to read the documentation on gitlab and, as far as I understand, there is still a bunch of central address ip that Jami need to keep working, and I’m not talking about bootstrap servers which is mandatory at some point. Be aware that one day or another china will ban those ip addresses. You can track your domain blocking status using:

But for now on it works pretty well, and I will keep using it until can’t.
There is still some bug, but I will report it on gitlab.

Thank you very much to all the team for your great work, you made an amazing working software and I hope one day I will be able to propose Jami as a reliable alternative to WeChat.


@koolok this is great news that it is currently working in China for you :grinning:

there is still a bunch of central address ip that Jami need to keep working, and I’m not talking about bootstrap servers which is mandatory at some point.

Jami offers two additional features besides just messaging/calling that require using someone’s server: a TURN dht relay/proxy (which can help with push notifications) and a nameserver (like for registering a nickname.

You are absolutely correct that these are centralized services that can get blocked. Both features are optional.

However, the core DHT messaging features of Jami should work fine anywhere that you can make an initial connection to the DHT. So the struggle will be finding a place to download the software and finding a single working IP address to join the DHT.

Hopefully in the future Jami software will come with a longer list of bootstrap servers. Also it would be a good feature to be able to connect to a friend’s device over LAN, and if they are connected to the DHT you can use that as the bootstrap. This will make it much harder to censor Jami.

1 Like

@wrycode : out of curiosity, by ‘initial connection’ do you mean connecting one single time, or is it connecting once at the beginning of each new start of the app?
Thank you!

It’s always possible to find a vpn for a one shot action like that, it’s just not convenient to stay connected all the time.

That’s will be amazing !

Also it would be a good feature to be able to connect to a friend’s device over LAN

It’s already an option

1 Like

@sblin finding nodes over LAN is already an option but I meant using this as a permanent way to enter/bootstrap the network. This would not be permanent if Jami still only tries to connect to a centralized bootstrap server at startup.

The question I have is this: does Jami retain a list of DHT peers that it will try to reconnect to if the bootstrap node is blocked (even after you reboot your device)?

If the answer is yes, then yes @Herve5 you would only need to make that first connection and you would be able to reconnect any time as long as at least one DHT peer on your list still has the same IP address.

1 Like

yes it’s the case, nodes are cached inside ~/.cache

1 Like

I am about to delete my post above from Oct. 23, 2020, because as I indicate a Jami address of mine for testing, now there is one person per day trying to contact me just to see if it works.
I delete because apparently the post is too old and cannot be just edited anymore…
I think removing it won’t hurt the discussion here anyway.

As I am to it, if I may : i think it should be more clearly explained, straight from the beginning, that the price to pay for not having a central server (which I definitely approve!) is that both sender and receiver must be simultaneously online for ‘instant’ connections to happen.
Within the above chats I got with total strangers, almost everyone is more or less pissed off that 'they sent me a message that waited 24h to succeed!?’ -just because I was not on initially and then they switched Jami off during some time…

@Herve5 I will add it to the FAQ.

In the future, when group chats a released, it will be possible (and hopefully easy) to set up a “bouncer” for yourself so that you can always be online even when your phone is not online.

1 Like

Very interesting! Thank you!

Hi, is it still working in China? I am also looking for a solution, now that Signal is blocked.

@nocturrne, I’m not in China so I cannot vouch foe certain, but I can say that

  • There is no central connection server for Jami : it is intentionally designed so as to avoid this, so nobody can block the server as there is just no server
  • If we want to be VERY pessimistic, on the other hand, the first time you start Jami, the app indeed tries to connect to some neighbors, to start the larger-scale connection. I think these ‘initial neighbors’ are standard and preset in Jam when you start it the first time (only), so I imagine it may be possible to block them.
    The way to do then is to connect a first time BEFORE, from a place where more connections are allowed.
    Then, when you have connected once successfully, your local database of ‘neighbors’ is updated, larger, and unique (it depends on your neigbors at the time of initial connection), so from then on there is no way to block. Even blocking specifically Jami’s ‘initial neighbors’ doesn’t prevent anything.

Yes it works in China. But not perfectly, let me explain.

  1. None of the Jami’s central servers (bootstrap, dhtproxy, name server, TURN) are blocked as of yet, so using Jami in China is not much different than using it anywhere else in the world.

  2. That being said, once enough people starts using it, those aforementioned servers could easily be blocked, keep that in mind.

  3. If you use Jami on mobile devices, you need to know that google’s GCM does not work inside China, so notification would be a huge problem. Apple’s APN works fine.

  4. In the end, even without the firewall of China, people aren’t having the best experience with Jami, because messages are transmitted p2p strictly, if you cannot establish direct connection, you can’t use it.

To sum it up, if you are using it on iphones and desktop computers, AND one of your devices is behind a router with public IP address, and have UPNP enabled, OR you know how to build your own TURN server, then it should work fine.

@terrytw , isn’t this TURN discussion only needed for video? I expect the main goal of communicating from really afar would be simple text messaging ; does the TURN issue still happen then?

From my understanding, it does not matter if it is messaging or video/audio call, Jami will try to establish p2p direct connection, if direct connection fails, it will fall back to TURN server relay.

If you cannot establish direct connection, and you do not use TURN server, how can your messages be transmitted?

I’m no specialist at this, but I thought the main difference between Jami and, say, Signal, was precisely that Jami doesn’t depend on servers that some ISP or countries can cut. What I hear here is that seems wrong?
What is then the advantage of Jami? Just the fact that an user isn’t associated to a phone # but just an anonymous signature? If that signature can be traced to its IP the anonymity is very light…
I thought Jami was using some Tor-like wrapping at least, or connections ike Briar does?

They have a quite informative article explaining the concept, I will attach it in the end.

From my understanding, the main difference is that for signal users, for example if I were to send a message to you, that message is first encrypted on my end, then sent to signal server, the signal server then send that message to you, signal server cannot decrypt that message, only you can decrypt it.

As for Jami, it will try to reach you directly via a number of ways, try to send the message directly to you, but it does not always work, especially when you use mobile devices, that is when you need a server, it works as a relay. Plus some other user cases, the article has it explained clearly.

Also, when using Jami, you can have your own server, that is a significant difference here.

article: Why is Jami truly distributed?

1 Like