Video conferences in Qubes

I’m new to Qubes and excited to try it out soon, but I’m curious about how videoconferences (Jitsi, Zoom, Teams, Meet, etc.) work in Qubes.

Based on some of the other posts I’ve read on here, it seems as simple as attaching a webcam and mic (which I assume normally live in sys-usb) to an AppVM or DispVM set up with the software I want to use. I have two questions:

  1. How would screen-sharing work? Zoom and others let you share a single application’s window; could I screen-share other applications if they’re in the same AppVM/DispVM? What if they’re running in a separate AppVM? What about screen-sharing the whole desktop? (I know it’s a risk to show the world what your desktop looks like, but I’m just wondering.)

  2. Suppose I trust a laptop’s built-in webcam and mic, but I don’t trust proprietary video conferencing apps not to compromise those devices, keep them activated after I quit the app, etc. Could that still happen after I’ve detached them from the qube? Could a compromised mic/webcam attack sys-usb or other qubes later on? Are there any best practices here? (I could always cover the webcam, so the mic is my bigger concern here.)

2 Likes

Audio other’s video

This is pretty fine, from my experience.

Webcam

:white_check_mark: Works normally.

But some webcams may have issues under Qubes and in other cases it fails after a bit. In this second case you should try the solution from Unable to connect my Webcam to any AppVM; connects and then fails - #7 by deeplow

Screen Sharing (same AppVM)

Software Works? Explanation
web videoconf :white_check_mark: On web-based videoconferencing it works great for sharing an application or whole full screen.
zoom client :x: If you share the screen, the green rectangle that shows what’s the area being shared is what breaks it all. Basically whatever is inside that rectangle you can’t interact with or even see.

For non-web zoom the only solution I know about is to have two screens and do a presentation where you see the presentation notes on one when you have the presentation in full screen. And you share this second one. But keep in mind you will only see the slides changing in the presenter view.

Screen Sharing (full screen)

If you want to share the full Qubes desktop it is not trivial. The best solution I’ve seen is to use an HDMI capture card and send the HDMI output of the Qubes laptop onto another computer and share it from there. But this is quite complex.

Audio

The audio bit may have some issues. If running Qubes on a low-powered computer (2-core laptop, for example) you may hear the audio stuttering. If this is the case try pausing / killing any unneeded VMs.

2 Likes

Zoom on a DispVM

If you’d like to avoid having a persistent zoom identity (assuming they don’t do machine fingerpriting), you can follow you can watch this talk or the transcript I made (specifically the part about zoom)

1 Like

Hi,
e-learning forced me to go through it :wink:
I’m on PC with 2 monitors.

  1. I don’t trust proprietary conferencing too, so I created separated Debian template for it. (but let’s be honest it doesn’t guarantee privacy at all, as said above, better use dispVM).
  2. For Microphone I just attach it using Qubes GUI and it works well. (however on some notebooks/laptops might occur problem with external microphone when PCI device crashes. Some laptops are built with couple internal PCBs, not everything is included on motherboard) But this is the worst case. generally it works
  3. Webcam. I don’t have, so I used my old android device with “IP webcam” app on template I installed v4l2loopback-dkms ffmpeg webcamoid adb, created dummy device with this script: GitHub - agarciadom/ipwebcam-gst: Simple shell script for using IP Webcam as a V4L2 webcam / sound source . Installation of course in template, run it in appVM. (To control remotely android device also through adb you can use scrcpy while sharing) So this might be an alternative if your internal webcam didn’t worked.
  4. Screen sharing. As said above zoom is broken. In MS teams it works well (know from experience), In jitsi you can share only entire screen, so when you have two screens it looks shitty. Also in every share, white bars shows when you have always-on menu bars.
    If you use two screens - to achieve single screen share I tried this script that also creates dummy video device. Unfortunately some clients that uses WiFi may have problem. Video share compresses and text becomes unreadable. (I had such problem with jitsi, I was connected to internet by cable, second person was connected through WiFi). And of course only things from conferencing appVM shares.
  • For me single app share doesn’t work (Debian, Firefox, Jitsi). Shall I move to fedora?
2 Likes

I may be misremembering, but I think on firefox it didn’t work but on chomium it did.

1 Like

Screen sharing under Zoom may be used, if the fix discussed in qubes devalopment issue #5863 is applied. At least, for me it worked with unbuntu and fedora VMs.

2 Likes

Thanks for pointing it out. That is the problem I was mentioning when I said

Correction. On fedora apparently sharing individual windows works now

2 Likes

Wouldn’t it be great if we had a “Stream Screen to AppVM” option? Then it would create a virtual camera which one could just select from their favorite videoconferencing/streaming software.

This may only be possible in Qubes R4.1 due to the slowness of Qubes RPC in R4.0.

2 Likes

@GWeck @JTeller3 Created a feature request for this:

2 Likes

And the above feature is now documented: