SOLVED: Android immediately disconnects, always

Hi all, my first post to jitsi.org :slight_smile:

jitsi on own VPS. Host OS OpenSuse Leap 15.1, so docker based installation.
As I have an apache in use, installed natively on the host, ports 80/443 are in use already.

SIMPLE config to get started, no auth/letsencrypt/jigasi/SIP/etherpad/jibri. No no reverse proxy on host
first “goal” is just to get a simple, unauthorized call established, with 2 participants.
exposed ports in .env are 8000/8443 (default)

docker-compose up starts fine, avoided -d to see logs.

I can connect via any browser to https(ColonSlashSlash)meet(dot)example(dot)com:8443, tested with Firefox (WIN and LINUX) and chromium (LINUX)

I CAN’T connect via Android app, F-Droid version 20.0.3

App starts. Works fine. at least tested with starting a single participant conf with default server URL meet.jit.si. IMMEDIATELY disconnects when setting server URL to https(ColonSlashSlash)meet(dot)example(dot)com:8443.

  • No log entry appearing in docker, so no entry in nginx’s acces_log

  • logcat via usb debugging to Android Studio:

    04-02 01:14:28.814 23283-23313/? I/JitsiMeetSDK: [features/base/connection] No connection found while disconnecting.
    04-02 01:14:28.987 23283-23313/? E/JitsiMeetSDK: [features/base/lib-jitsi-meet] Failed to load config from https(ColonSlashSlash)meet(dot)example(dot)com:8443/config.js?room=he Error(TypeError){“message”:“Network request failed”,“stack”:“TypeError: Network request failed\n at anonymous (index.android.bundle:135:7285)\n at call (native)\n at dispatchEvent (index.android.bundle:126:5676)\n at value (index.android.bundle:121:6095)\n at value (index.android.bundle:121:2835)\n at apply (native)\n at anonymous (index.android.bundle:121:5024)\n at apply (native)\n at value (index.android.bundle:50:1280)\n at apply (native)\n at value (index.android.bundle:37:3685)\n at anonymous (index.android.bundle:37:841)\n at value (index.android.bundle:37:2939)\n at value (index.android.bundle:37:813)”}
    04-02 01:14:29.045 23283-23313/? I/JitsiMeetSDK: [features/overlay] The conference will be reloaded after 17 seconds.
    04-02 01:14:29.064 23283-23313/? D/JitsiMeetSDK: ExternalAPI Sending event: CONFERENCE_TERMINATED with data: { NativeMap: {“error”:“TypeError: Network request failed”,“url”:“https(ColonSlashSlash)meet(dot)example(dot)com:8443/test”} }
    04-02 01:14:29.080 23283-23283/? D/JitsiMeetActivity: Conference terminated: {error=TypeError: Network request failed, url=https(ColonSlashSlash)meet(dot)example(dot)com:8443/test}
    04-02 01:14:47.797 23283-23313/? I/JitsiMeetSDK: [features/app] Reloading the conference using URL: https(ColonSlashSlash)meet(dot)example(dot)com:8443/
    04-02 01:14:47.802 23283-23313/? I/JitsiMeetSDK: [features/base/connection] No connection found while disconnecting.
    04-02 01:14:47.940 23283-23313/? E/JitsiMeetSDK: [features/base/lib-jitsi-meet] Failed to load config from https(ColonSlashSlash)meet(dot)example(dot)com:8443/config.js Error(TypeError){“message”:“Network request failed”,“stack”:“TypeError: Network request failed\n at anonymous (index.android.bundle:135:7285)\n at call (native)\n at dispatchEvent (index.android.bundle:126:5676)\n at value (index.android.bundle:121:6095)\n at value (index.android.bundle:121:2835)\n at apply (native)\n at anonymous (index.android.bundle:121:5024)\n at apply (native)\n at value (index.android.bundle:50:1280)\n at apply (native)\n at value (index.android.bundle:37:3685)\n at anonymous (index.android.bundle:37:841)\n at value (index.android.bundle:37:2939)\n at value (index.android.bundle:37:813)”}
    04-02 01:14:47.942 23283-23313/? W/JitsiMeetSDK: [features/app] Failed to load config but there is no room, applying a fake one
    04-02 01:14:47.961 23283-23313/? I/JitsiMeetSDK: [modules/RTC/ScreenObtainer.js] Screen sharing not supported by the current browser: react-native
    04-02 01:14:47.973 23283-23313/? I/JitsiMeetSDK: [modules/RTC/ScreenObtainer.js] Desktop sharing disabled
    04-02 01:14:47.990 23283-23313/? I/JitsiMeetSDK: [features/base/media] Start muted:
    04-02 01:14:48.003 23283-23313/? I/JitsiMeetSDK: [features/base/media] Start audio only set to true
    04-02 01:14:48.016 23283-23313/? D/JitsiMeetSDK: [features/analytics] Loaded 0 analytics handlers
    04-02 01:14:48.020 23283-23313/? W/JitsiMeetSDK: [modules/statistics/AnalyticsAdapter.js] Disposing of analytics adapter.
    04-02 01:14:48.022 23283-23313/? E/JitsiMeetSDK: [features/analytics] Error(Error){“message”:“No analytics handlers created!”,“stack”:“Error: No analytics handlers created!\n at anonymous (index.android.bundle:394:1131)\n at f (index.android.bundle:109:155)\n at anonymous (index.android.bundle:109:882)\n at apply (native)\n at anonymous (index.android.bundle:115:1783)\n at y (index.android.bundle:115:661)\n at C (index.android.bundle:115:1025)\n at callImmediates (index.android.bundle:115:3100)\n at value (native)\n at anonymous (index.android.bundle:37:1283)\n at value (index.android.bundle:37:2939)\n at value (index.android.bundle:37:1253)\n at value (native)”}
    04-02 01:14:48.036 23283-23313/? D/JitsiMeetSDK: [modules/RTC/RTCUtils.js] Available devices: [ { kind: ‘videoinput’,
    label: ‘Camera 0, Facing back, Orientation 90’,
    groupId: ‘’,
    deviceId: ‘0’,
    facing: ‘environment’ },
    { kind: ‘videoinput’,
    label: ‘Camera 1, Facing front, Orientation 270’,
    groupId: ‘’,
    deviceId: ‘1’,
    facing: ‘front’ },
    { kind: ‘audioinput’,
    label: ‘Audio’,
    groupId: ‘’,
    deviceId: ‘audio-1’ } ]

Any advice would be great

Sorry for “strange” URLs, “only 2 links in first post of new members” :-S

I have exactly the same issue (although I do not know how to check logcat). Have tried the Play Store app (20.1.0 build 3883698) as well as the F-Droid app (20.0.3 build 200300).

Connection via Chrome on the Android phone works (although I’m getting redirect to use the app). Chrome on Windows also works, as well as the iOS app.

Just an immediate response that the connection is broken.

Found another thread (Implementing own test server for iOs & Android) on this. In that thread a reference was made to https://whatsmychaincert.com, a site where you can check your certificate (if the chain is correct). Mine was not. Replaced the nginx certificate with one with a correct chain and restarted nginx. Afterwards the Android app was able to connect fast and without issues.

3 Likes

@Sander you are my HERO OF THE DAY!

That’s the issue with things that are running smooth and easy on theirselve, for years. I know it took me while to get my first self-signed cert for apache on my vps running. Since letsencrypt is only a certbot call, as I’ve pointed the ssl-global.conf settings to the /etc/letsecrypt/live/… cert files, I’ve stopped spending any thought about this topic…

My fault: As I’m using docker containers for my new jitsi setup, but already have an apache natively installed and in use for several vhosts, so ports 80/443 are blocked for other things (no reverse proxying currently), I’ve got the idee to just “reuse” the already existing letsencrypt certs for the native apache . Did this by copying the cert files to ~/.jitsi-meet-cfg/web/keys/ (or $CONFIG/web/keys) Was not brave enough to use links, because of docker. BUT not really thinking that much about it I’ve copied the letsencrypt “cert.pem” as jitsi’s nginx used “cert.crt”. Which is NOT the right way, cert chain missing. THANKS for this veryvaluable hint, @Sander! Must be letsencrypt “fullchain.pem”.

Et voila: SOLVED

P.S.: “(although I do not know how to check logcat)@Sander maybe I could help you vice versa, although I’m for sure not an android developer :slight_smile: But it’s quite easy: What you need to see logcat stack traces is “adb”. You could do this on command line: https://developer.android.com/studio/command-line/logcat. Or via Android Studio. Which is easier, but large download. Nevertheless makes fun. Connect your device via usb, enable debveloper option “usb debugging”, start your to be debugged app. And watch the impressive amount of to be filtered msgs :slight_smile:

2 Likes

That worked for me too!

I have bought a SSL certificate at Namecheap and the certificate does not include the chain certificate. I created the chain cert on https://whatsmychaincert.com and concatanated them (cat example.com.crt example.com.chain.crt > example.com.chained.crt), restarted nginx, and Android app started working like a charm! Thanks @Sander :smiley: Seriously you saved my day.

2 Likes

@Sander Wow, your suggestion literally solved another issue which I have posted: After setting secure domain -> "CONFERENCE FAILED: conference.videobridgeNotAvailable"

It took me two days in a row trying to find the solution, and you provided that!

I haven’t noticed how critical the certificates is chain ones or not. Actually there is no indication of that on the manual (as far as I know).

Thank you Sander, Michael OF and KEYLETAL.
We encountered the same issue and solved it with your valuable information.

I added the SSLCertificateChainFile item to the Apache configuration file example.com.conf created when Jitsi was installed and specified the intermediate certificate, which is the expected behavior.

Your information was really helpful. Thank you.

We win the Coronavirus.

1 Like

I found the same issue. In my case, I run docker compose on my machine and my Android app access server directly via http::8000.

I solved by add android:usesCleartextTraffic=“true” in my AndroidManifest.xml, to let android allow the app to use HTTP traffic. However, in Production environment, it is recommended to use HTTPS. My solution is just fine for testing on development machine.