No audio/video on vanilla Debian installation

I just set up jitsi-meet on my own Debian 10.2 server following the quick install instructions.

Website and chat do work, conferences start and participants are displayed, but there is no video nor audio.

Tried Firefox on MS Win and Linux, Chromium on Linux, and the Android app.

Provider firewall is configured to pass everything through.

Where do I start to debug this?

I’m kind of a newbie so probabily this answer is very dumb, but have you made sure that automatic playback is activated on your machine?

Have you followed the advance section from quick install? Firewall, port forwarding and public and private address in jvb and restart jvb of course.

I had the same issue and following these instructions fixed it. In short, /etc/hostname and /etc/hosts must both refer to the FQDN.

Hi there. I’ve just installed Jitsi on a freshly installed plain vanilla Debian 10 64bit VM using the Jitsi Debian repos. The VM is running behind a firewall. Ports TCP 4443 and UDP 10000 are forwarded by the firewall to the VM running Jitsi and I have configured the IP addresses in sip-communicator.properties. Everything else is default. The (nginx) proxy on the firewall is configured exactly the same as the nginx config that is created by the installer. I am using Let’s Encrypt certificates (for other nodes on the same domain as well) and that is all working fine. I have also updated /etc/hosts and /etc/hostname as suggested in this post.

However :slight_smile:

When I browse to the site, I can create a meeting and then I see the Jitsi screen. The video and audio buttons have a cross through them. Clicking on those buttons or the Leave button for that matter doesn’t seem to do anything. The browser has access to a webcam and microphone.

I’m also trying connecting to the site with the app on an iPad (as the 2nd participant) but that doesn’t seem to be able to connect at all (iPad is on same local network as laptop running Firefox).

I see some errors in the log, such as:

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: javax/xml/bind/Unmarshaller

Jicofo 2020-03-23 11:09:26.079 INFO: [12] org.eclipse.jetty.server.handler.ContextHandler.doStart() Started o.e.j.s.ServletContextHandler@2e3f3284{/,null,AVAILABLE}
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.ice4j.socket.jdk8.DelegatingServerSocketChannel (file:/usr/share/jicofo/lib/ice4j-3.0-1-ge854e4e.jar) to method sun.nio.ch.SelChImpl.translateInterestOps(int)
WARNING: Please consider reporting this to the maintainers of org.ice4j.socket.jdk8.DelegatingServerSocketChannel
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

I am not able to upload the full log (new users are apparently not (yet?) allowed to do that).

Any suggestions how I can further diagnose this?

thanks in advance for your help!
Jan

You need to run it with java8.

1 Like

Really? The quick-installer, apparently, pulled in the following:

java --version

openjdk 11.0.6 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Debian-1deb10u1, mixed mode, sharing)

I don’t see openjdk 8 packages in the repositories…

There should be some backport …

There is no backport for buster. Well, not on backports.debian.org anyway. And often there is a reason why a package is dropped from the repo’s… if I’m not mistaken openjdk-8 was dropped due to some security issues?

Installing openjdk-8 from the sid repository has some issues:

dpkg -i openjdk-8-jre-headless_8u242-b08-1_amd64.deb
Selecting previously unselected package openjdk-8-jre-headless:amd64.
(Reading database … 34721 files and directories currently installed.)
Preparing to unpack openjdk-8-jre-headless_8u242-b08-1_amd64.deb …
Unpacking openjdk-8-jre-headless:amd64 (8u242-b08-1) …
dpkg: dependency problems prevent configuration of openjdk-8-jre-headless:amd64:
openjdk-8-jre-headless:amd64 depends on libc6 (>= 2.29); however:
Version of libc6:amd64 on system is 2.28-10.
openjdk-8-jre-headless:amd64 depends on libgcc-s1 (>= 3.0); however:
Package libgcc-s1 is not installed.

Forcefully Installing a later libc6 may break more than I’d like.

dpkg -i libc6_2.30-2_amd64.deb
dpkg: regarding libc6_2.30-2_amd64.deb containing libc6:amd64:
libc6:amd64 breaks locales (<< 2.30)
locales (version 2.28-10) is present and installed.

dpkg: error processing archive libc6_2.30-2_amd64.deb (–install):
installing libc6:amd64 would break locales, and
deconfiguration is not permitted (–auto-deconfigure might help)
Errors were encountered while processing:
libc6_2.30-2_amd64.deb

If you are able to run Jitsi on Debian 10 can you please share how you’ve done that?

Ok, I decided to give it a go with sid packages see where it breaks. I installed/replaced:

gcc-10-base_10-20200321-1_amd64.deb
libc6_2.30-2_amd64.deb
libc-bin_2.30-2_amd64.deb
libcrypt1_4.4.15-1_amd64.deb
libgcc-s1_10-20200321-1_amd64.deb
locales_2.30-2_all.deb
openjdk-8-jdk-headless_8u242-b08-1_amd64.deb
openjdk-8-jre-headless_8u242-b08-1_amd64.deb

dpkg --list | grep openjdk
ii openjdk-8-jdk-headless:amd64 8u242-b08-1 amd64 OpenJDK Development Kit (JDK) (headless)
ii openjdk-8-jre-headless:amd64 8u242-b08-1 amd64 OpenJDK Java runtime, using Hotspot JIT (headless)

I removed openjdk-11 and rebooted the server (just to be sure).

The logs no longer show any errors. The behaviour I observe in the web browser and on the iPad however is the same: iPad doesn’t seem to be able to connect, the web browser does show the rooms I created before. Clicking on one of them brings up the Jitsi screen. Buttons are not responsive and nothing seems to happen.

I can type something in the chat but anything typed just disappears (ie. does not show up in the chat as you would expect).

Any suggestions how I can further debug this?

What does the js console says?

The logs have a few warnings after all:

JVB 2020-03-24 19:51:55.300 WARNING: [13] org.jitsi.videobridge.EndpointMessageTransport.log() SCTP connection with 1f688f2803052ec6 not ready yet.
JVB 2020-03-24 19:51:55.300 WARNING: [13] org.jitsi.videobridge.EndpointMessageTransport.log() No available transport channel, can’t send a message
JVB 2020-03-24 19:51:55.300 WARNING: [13] org.jitsi.videobridge.EndpointMessageTransport.log() SCTP connection with 335651d44dcf3549 not ready yet.
JVB 2020-03-24 19:51:55.300 WARNING: [13] org.jitsi.videobridge.EndpointMessageTransport.log() No available transport channel, can’t send a message

Jicofo 2020-03-24 19:52:24.766 SEVERE: [30] org.jitsi.jicofo.discovery.DiscoveryUtil.discoverVersion().200 Failed to discover version, req: , response:
Jicofo 2020-03-24 19:52:24.766 INFO: [30] org.jitsi.jicofo.ComponentsDiscovery.log() New component discovered: jitsi-videobridge., null
Jicofo 2020-03-24 19:52:24.766 INFO: [30] org.jitsi.jicofo.BridgeSelector.log() Added videobridge: jitsi-videobridge. v: null
Jicofo 2020-03-24 19:52:24.766 WARNING: [30] org.jitsi.jicofo.BridgeSelector.log() No pub-sub node mapped for jitsi-videobridge.

JS console:
2020-03-24T06:56:29.723Z [modules/UI/videolayout/VideoLayout.js] : Missed avatar update - no small video yet for undefined Logger.js:154:22

2020-03-24T06:57:46.239Z [features/analytics] <ee/</<>: Error creating analytics handler: Error: Failed to initialize Amplitude handler, no APP key Logger.js:154:22
2020-03-24T06:57:46.241Z [features/analytics] <ee/</<>: Loaded 0 analytics handlers Logger.js:154:22
2020-03-24T06:57:46.326Z [modules/RTC/RTCUtils.js] <value/<>: Available devices:
Array(7) [ MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo ]
Logger.js:154:22
2020-03-24T06:57:46.380Z [features/base/storage] : redux state persisted. 6b98ac00226a3afd3dd4a07bfa62ce2e -> 3deb53df0d120eb52413ee5659ca5f97 Logger.js:154:22
(TIME) index.html loaded: 264 Staff:19:17
2020-03-24T06:57:46.549Z [modules/browser/BrowserCapabilities.js] This appears to be firefox, ver: 74.0 Logger.js:154:22
2020-03-24T06:57:46.889Z [index.web] (TIME) document ready: 654 Logger.js:154:22
2020-03-24T06:57:46.979Z [features/base/lastn] There is no active conference, not updating last N Logger.js:154:22
2020-03-24T06:57:46.980Z [modules/UI/videolayout/VideoLayout.js] : Missed avatar update - no small video yet for undefined Logger.js:154:22
2020-03-24T06:57:46.995Z [features/base/media] Start muted: Logger.js:154:22
2020-03-24T06:57:46.999Z [features/base/media] Start audio only set to false Logger.js:154:22
2020-03-24T06:57:47.002Z [features/analytics] <ee/</<>: Error creating analytics handler: Error: Failed to initialize Amplitude handler, no APP key Logger.js:154:22
2020-03-24T06:57:47.003Z [features/analytics] <ee/</<>: Loaded 0 analytics handlers Logger.js:154:22
2020-03-24T06:57:47.081Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:47.093Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:47.115Z [features/base/devices] <k/</</<>: Failed to set audio output device.
Default audio output device will be used instead Error: Audio output device change is not supported Logger.js:154:22
2020-03-24T06:57:47.436Z [modules/RTC/RTCUtils.js] <value/<>: Available devices:
Array(7) [ MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo ]
Logger.js:154:22
2020-03-24T06:57:47.450Z [conference.js] : Microphone button enabled: true local audio: null audio devices: [object MediaDeviceInfo],[object MediaDeviceInfo],[object MediaDeviceInfo],[object MediaDeviceInfo],[object MediaDeviceInfo] device count: 5 Logger.js:154:22
2020-03-24T06:57:47.464Z [conference.js] : Camera button enabled: true local video: null video devices: [object MediaDeviceInfo],[object MediaDeviceInfo] device count: 2 Logger.js:154:22
2020-03-24T06:57:47.470Z [modules/xmpp/xmpp.js] : P2P STUN servers:
Array(3) [ {…}, {…}, {…} ]
Logger.js:154:22
2020-03-24T06:57:47.478Z [modules/xmpp/xmpp.js] : (TIME) Strophe connecting: 1243 Logger.js:154:22
2020-03-24T06:57:47.482Z [modules/RTC/RTCUtils.js] : Using the new gUM flow Logger.js:154:22
2020-03-24T06:57:47.483Z [modules/RTC/RTCUtils.js] <value/i<>: Got media constraints:
Object { video: {…}, audio: {…} }
Logger.js:154:22
2020-03-24T06:57:47.559Z [modules/xmpp/strophe.util.js] <t.a/i.Strophe.log>: Strophe: Server did not yet offer a supported authentication mechanism. Sending a blank poll request. Logger.js:154:22
2020-03-24T06:57:48.927Z [features/base/storage] : redux state persisted. 3deb53df0d120eb52413ee5659ca5f97 -> 417b301e2bea39a480e7c5fcab1fce63 Logger.js:154:22
2020-03-24T06:57:51.969Z [modules/RTC/RTCUtils.js] <value/</<>: onUserMediaSuccess Logger.js:154:22
2020-03-24T06:57:51.976Z [modules/RTC/JitsiLocalTrack.js] : Setting new MSID: {260b5c38-8385-4320-90cb-6a9f09b7ed8c} {0fe1d0d2-358d-4c3b-9740-6f3de6a2d71c} on LocalTrack[undefined,audio] Logger.js:154:22
2020-03-24T06:57:51.978Z [modules/RTC/JitsiLocalTrack.js] : Setting new MSID: {bca0c77e-bad1-44b5-b62d-b24f16de39ef} {c24a40b1-1d34-4764-9675-fba0319fc5af} on LocalTrack[undefined,video] Logger.js:154:22
2020-03-24T06:57:53.091Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.111Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.207Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.293Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.343Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.557Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.581Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.657Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.744Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22
2020-03-24T06:57:53.774Z [modules/UI/videolayout/SmallVideo.js] <w.prototype.updateView>: Unable to init avatar - no id
Object { videoSpanId: “localVideoContainer”, streamEndedCallback: _updateLargeVideoIfDisplayed(), container: span#localVideoContainer.videocontainer
, “$container”: {…}, localVideoId: null, isLocal: true, emitter: {…}, statsPopoverLocation: “left top”, _isModerator: false, isAudioMuted: false, … }
Logger.js:154:22

​

Clicking on a few buttons shows an error in the JS console:

TypeError: e is undefined

Also:

2020-03-24T07:01:47.698Z [modules/xmpp/strophe.util.js] <t.a/i.Strophe.log>: Strophe: Server did not yet offer a supported authentication mechanism. Sending a blank poll request.

if it can help
on my fresh install debian 10
quick install doesnt complain about java11
but in fact it need java8
debian 10 doesnt support/distribute java8 anymore
so you need to follow a “how to” force it , easy to find on the web “java8 install debian 10”
then all works

I got jitsi-meet (and the new jvb 2) working on Debian 10 by using OpenJDK 8 from AdoptOpenJDK

  1. First i downloaded OpenJDK 8 from https://adoptopenjdk.net/

  2. unpacked it in /usr/lib/jvm

  3. altered the adoptopenjdk installations jre/lib/security to use the ssl certificates from debian

  4. then i changed the start script for jvb and jicofo to use the java command from adopt openjdk

  5. restarted jicofo and jvb

    #1
    cd /usr/lib/jvm/
    sudo wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u242-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u242b08.tar.gz

    #2
    sudo tar zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u242b08.tar.gz

    #3
    cd jdk8u242-b08/jre/lib/security
    sudo mv cacerts cacers.old
    sudo ln -s /etc/ssl/certs/java/cacerts cacerts

    #4

    edit /usr/share/jicofo/jicofo.sh

    and change the last line to

    exec /usr/lib/jvm/jdk8u242-b08/bin/java -Xmx3072m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp $LOGGING_CONFIG_PARAM $JAVA_SYS_PROPS -cp $cp mainClass @

    #edit /usr/share/jitsi-videobridge/jvb.sh
    exec /usr/lib/jvm/jdk8u242-b08/bin/java -Xmx$VIDEOBRIDGE_MAX_MEMORY $VIDEOBRIDGE_DEBUG_OPTIONS -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp $LOGGING_CONFIG_PARAM $JAVA_SYS_PROPS -cp $cp mainClass @

    #5
    sudo service jitsi-videobridge2 start
    sudo service jicofo start

Thanks ledahu, that is what I’ve done.

I’ve installed openjdk-8 from the sid repositories and removed openjdk-11 that was pulled in automatically by the Jitsi quick installer.

There are plenty of different ways to do this… can you please send me a link to the specific “how to” that you followed resulting in a working system?

THANK YOU !

I’ve search dozen of posts for the audio/video problem i’ve been having on jitsi / deb10 for the last 2 days.

It justs works.

1 Like

Hi Romain_Alberich,

Can you please share how you’ve managed to get it to work on Debian 10?

thanks,
Jan

Happy to hear that you got jitsi-meet on Debian 10 using OpenJDK 8 from AdoptOpenJDK working. This is how I also have jitsi-meet working on Debian 10.

I will now go into details what would be the long term solution:
To make future jitsi-meet debian packages of video bridge and jicofo java 11 compatible:

The Problem: When using java 11 JAXB is no longer part of the jdk.
Motivation why it was removed: http://openjdk.java.net/jeps/320
This is the root cause why jvb and jicofo do not work with java 11 and is why this exception is shown in the jvb log:

The solution is to include the official jaxb jars from javaee twhen jitsi-videobridge and jicofo are compiled!
https://javaee.github.io/jaxb-v2/doc/user-guide/ch03.html#deployment-maven-coordinates
This is the dependency from maven central that needs to be added to the video bridge and jicofo build:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

I have filed an issue to solve this:

Hi xranby,

While I can install and run Jitsi I yet have to get it working. Something that appears to be straight forward and simple has turned out not to be so, at least not for me. See here for my post.

Any suggestions are much appreciated.

kind regards,
Jan