Skip to content

Dynamically allocate video device#32

Merged
marmarek merged 4 commits into
QubesOS:masterfrom
marmarek:dynamic-dev
Nov 15, 2025
Merged

Dynamically allocate video device#32
marmarek merged 4 commits into
QubesOS:masterfrom
marmarek:dynamic-dev

Conversation

@marmarek

Copy link
Copy Markdown
Member

Register /dev/video device dynamically (instead of hardcoding
/dev/video0), and unregister it when no longer in use (instead of unloading
the whole module). This allows using webcam and screen share
simultaneously.

This requires a simple ioctl to /dev/v4l2loopback device, do it from python
to avoid pulling in extra dependencies (v4l2-utils).

The structure is a bit messy: qubes-video-companion bash script calls
setup.py (now written in python), and then qrexec-client-vm (in C) that
calls back receiver.py (which then execs gst-launch). And finally
qubes-video-companion calls destroy.py to clean things up. This could be
improved by rewriting qubes-video-companion in python, and including
setup.py/destroy.py as functions, but on the other hand, bash script
(running during the whole connection).

Fixes QubesOS/qubes-issues#9625

Register /dev/video device dynamically (instead of hardcoding
/dev/video0), and unregister it when no longer in use (instead of
unloading the whole module). This allows using webcam and screen share
simultaneously.

This requires a simple ioctl to /dev/v4l2loopback device, do it from
python to avoid pulling in extra dependencies (v4l2-utils).

The structure is a bit messy: qubes-video-companion bash script calls
setup.py (now written in python), and then qrexec-client-vm (in C) that
calls back receiver.py (which then execs gst-launch). And finally
qubes-video-companion calls destroy.py to clean things up. This could be
improved by rewriting qubes-video-companion in python, and including
setup.py/destroy.py as functions, but on the other hand, bash script
(running during the whole connection).

Fixes QubesOS/qubes-issues#9625
@qubesos-bot

qubesos-bot commented Nov 13, 2025

Copy link
Copy Markdown

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025111414-4.3&flavor=pull-requests

Test run included the following:

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025081011-4.3&flavor=update

  • system_tests_extra

    • TC_00_QVCTest_whonix-gateway-18: test_010_screenshare (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

    • TC_00_QVCTest_whonix-workstation-18: test_010_screenshare (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

  • system_tests_dispvm

    • TC_20_DispVM_whonix-workstation-18: test_100_open_in_dispvm (failure)
      AssertionError: './open-file test.txt' failed with ./open-file test...
  • system_tests_whonix@hw7

    • whonixcheck: fail (unknown)
      Whonixcheck for sys-whonix failed...

    • whonixcheck: Failed (test died)
      # Test died: systemcheck failed at qubesos/tests/whonixcheck.pm lin...

  • system_tests_qwt_win10@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Explorer-new-...
  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Edge-address-...
  • system_tests_qwt_win11@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Notepad' matc...
  • system_tests_dispvm_perf@hw7

    • TC_00_DispVMPerf_debian-13-xfce: test_409_dom0_dispvm_preload_gui_api (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf.py --dvm=test-ins...

    • TC_00_DispVMPerf_debian-13-xfce: test_900_reader (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf_reader.py --templ...

    • TC_00_DispVMPerf_fedora-42-xfce: test_900_reader (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf_reader.py --templ...

    • TC_00_DispVMPerf_whonix-workstation-18: test_900_reader (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf_reader.py --templ...

Failed tests

15 failures
  • system_tests_extra

    • TC_00_QVCTest_whonix-gateway-18: test_010_screenshare (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

    • TC_00_QVCTest_whonix-workstation-18: test_010_screenshare (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

  • system_tests_dispvm

    • TC_20_DispVM_whonix-workstation-18: test_100_open_in_dispvm (failure)
      AssertionError: './open-file test.txt' failed with ./open-file test...
  • system_tests_whonix@hw7

    • whonixcheck: fail (unknown)
      Whonixcheck for sys-whonix failed...

    • whonixcheck: Failed (test died)
      # Test died: systemcheck failed at qubesos/tests/whonixcheck.pm lin...

  • system_tests_qwt_win10@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Explorer-new-...
  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Edge-address-...
  • system_tests_qwt_win11@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Notepad' matc...
  • system_tests_dispvm_perf@hw7

    • TC_00_DispVMPerf_debian-13-xfce: test_409_dom0_dispvm_preload_gui_api (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf.py --dvm=test-ins...

    • TC_00_DispVMPerf_debian-13-xfce: test_900_reader (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf_reader.py --templ...

    • TC_00_DispVMPerf_fedora-42-xfce: test_900_reader (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf_reader.py --templ...

    • TC_00_DispVMPerf_whonix-workstation-18: test_900_reader (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf_reader.py --templ...

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/149225#dependencies

82 fixed
  • system_tests_extra

    • TC_00_QVCTest_whonix-workstation-17: test_010_screenshare (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...
  • system_tests_dispvm

  • system_tests_kde_gui_interactive

    • gui_keyboard_layout: wait_serial (wait serial expected)
      # wait_serial expected: "echo -e '[Layout]\nLayoutList=us,de' | sud...

    • gui_keyboard_layout: Failed (test died)
      # Test died: command 'test "$(cd ~user;ls e1*)" = "$(qvm-run -p wor...

  • system_tests_audio

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.audio failed (exit code 1), details reporte...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_223_audio_play_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_224_audio_rec_muted_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_225_audio_rec_unmuted_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_252_audio_playback_audiovm_switch_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

  • system_tests_audio@hw1

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.audio failed (exit code 1), details reporte...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_223_audio_play_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_224_audio_rec_muted_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_252_audio_playback_audiovm_switch_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

  • system_tests_dispvm_perf@hw7

  • system_tests_guivm_gpu_gui_interactive@hw13

    • guivm_startup: wait_serial (wait serial expected)
      # wait_serial expected: qr/lEcbc-\d+-/...

    • guivm_startup: Failed (test died + timed out)
      # Test died: command '! qvm-check sys-whonix || time qvm-start sys-...

  • system_tests_basic_vm_qrexec_gui_ext4

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.vm_qrexec_gui failed (exit code 1), details...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_NonAudio_whonix-gateway-17-pool: test_012_qubes_desktop_run (error + cleanup)
      raise TimeoutError from exc_val... TimeoutError

Unstable tests

Details

Performance Tests

Performance degradation:

11 performance degradations
  • dom0_root_seq1m_q8t1_write 3:write_bandwidth_kb: 187456.00 🔻 ( previous job: 265260.00, degradation: 70.67%)
  • dom0_varlibqubes_seq1m_q8t1_write 3:write_bandwidth_kb: 96153.00 🔻 ( previous job: 110817.00, degradation: 86.77%)
  • fedora-42-xfce_root_seq1m_q1t1_read 3:read_bandwidth_kb: 219459.00 🔻 ( previous job: 299764.00, degradation: 73.21%)
  • fedora-42-xfce_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 1052.00 🔻 ( previous job: 3020.00, degradation: 34.83%)
  • fedora-42-xfce_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 955.00 🔻 ( previous job: 1368.00, degradation: 69.81%)
  • fedora-42-xfce_private_rnd4k_q1t1_read 3:read_bandwidth_kb: 7552.00 🔻 ( previous job: 8992.00, degradation: 83.99%)
  • fedora-42-xfce_private_rnd4k_q1t1_write 3:write_bandwidth_kb: 260.00 🔻 ( previous job: 1251.00, degradation: 20.78%)
  • fedora-42-xfce_volatile_rnd4k_q32t1_read 3:read_bandwidth_kb: 76910.00 🔻 ( previous job: 87141.00, degradation: 88.26%)
  • fedora-42-xfce_volatile_rnd4k_q32t1_write 3:write_bandwidth_kb: 1970.00 🔻 ( previous job: 4098.00, degradation: 48.07%)
  • fedora-42-xfce_volatile_rnd4k_q1t1_read 3:read_bandwidth_kb: 7858.00 🔻 ( previous job: 8804.00, degradation: 89.25%)
  • fedora-42-xfce_volatile_rnd4k_q1t1_write 3:write_bandwidth_kb: 1576.00 🔻 ( previous job: 2384.00, degradation: 66.11%)

Remaining performance tests:

168 tests
  • debian-13-xfce_exec: 8.84 🔻 ( previous job: 8.36, degradation: 105.75%)
  • debian-13-xfce_exec-root: 26.97 🟢 ( previous job: 27.36, improvement: 98.57%)
  • debian-13-xfce_socket: 8.38 🟢 ( previous job: 8.57, improvement: 97.73%)
  • debian-13-xfce_socket-root: 8.25 🟢 ( previous job: 8.26, improvement: 99.93%)
  • debian-13-xfce_exec-data-simplex: 61.60 🟢 ( previous job: 72.43, improvement: 85.04%)
  • debian-13-xfce_exec-data-duplex: 69.06 🟢 ( previous job: 76.65, improvement: 90.10%)
  • debian-13-xfce_exec-data-duplex-root: 81.12 🟢 ( previous job: 91.79, improvement: 88.37%)
  • debian-13-xfce_socket-data-duplex: 131.58 🟢 ( previous job: 133.45, improvement: 98.60%)
  • fedora-42-xfce_exec: 9.13 🔻 ( previous job: 9.06, degradation: 100.73%)
  • fedora-42-xfce_exec-root: 59.03 🔻 ( previous job: 58.19, degradation: 101.45%)
  • fedora-42-xfce_socket: 8.05 🟢 ( previous job: 8.48, improvement: 94.98%)
  • fedora-42-xfce_socket-root: 8.21 🔻 ( previous job: 8.18, degradation: 100.28%)
  • fedora-42-xfce_exec-data-simplex: 73.57 🟢 ( previous job: 78.48, improvement: 93.74%)
  • fedora-42-xfce_exec-data-duplex: 64.59 🟢 ( previous job: 67.92, improvement: 95.10%)
  • fedora-42-xfce_exec-data-duplex-root: 101.63 🔻 ( previous job: 96.36, degradation: 105.46%)
  • fedora-42-xfce_socket-data-duplex: 133.30 🟢 ( previous job: 142.58, improvement: 93.49%)
  • whonix-gateway-18_exec: 8.48
  • whonix-gateway-18_exec-root: 129.19
  • whonix-gateway-18_socket: 8.55
  • whonix-gateway-18_socket-root: 9.04
  • whonix-gateway-18_exec-data-simplex: 70.91
  • whonix-gateway-18_exec-data-duplex: 73.69
  • whonix-gateway-18_exec-data-duplex-root: 144.72
  • whonix-gateway-18_socket-data-duplex: 138.22
  • whonix-workstation-18_exec: 8.58
  • whonix-workstation-18_exec-root: 141.81
  • whonix-workstation-18_socket: 9.53
  • whonix-workstation-18_socket-root: 9.07
  • whonix-workstation-18_exec-data-simplex: 61.02
  • whonix-workstation-18_exec-data-duplex: 69.84
  • whonix-workstation-18_exec-data-duplex-root: 152.30
  • whonix-workstation-18_socket-data-duplex: 139.46
  • debian-13-xfce_vm-dispvm (mean:6.513): 78.15
  • debian-13-xfce_vm-dispvm-gui (mean:7.481): 89.77
  • debian-13-xfce_vm-dispvm-concurrent (mean:3.123): 37.48
  • debian-13-xfce_vm-dispvm-gui-concurrent (mean:3.9): 46.80
  • debian-13-xfce_dom0-dispvm (mean:6.927): 83.13
  • debian-13-xfce_dom0-dispvm-gui (mean:8.173): 98.08
  • debian-13-xfce_dom0-dispvm-concurrent (mean:3.233): 38.80
  • debian-13-xfce_dom0-dispvm-gui-concurrent (mean:3.982): 47.79
  • debian-13-xfce_vm-dispvm-preload (mean:2.775): 33.30
  • debian-13-xfce_vm-dispvm-preload-gui (mean:3.633): 43.59
  • debian-13-xfce_vm-dispvm-preload-concurrent (mean:2.614): 31.37
  • debian-13-xfce_vm-dispvm-preload-gui-concurrent (mean:3.485): 41.81
  • debian-13-xfce_dom0-dispvm-preload (mean:3.622): 43.46
  • debian-13-xfce_dom0-dispvm-preload-gui (mean:10.919): 131.03
  • debian-13-xfce_dom0-dispvm-preload-concurrent (mean:2.725): 32.70
  • debian-13-xfce_dom0-dispvm-preload-gui-concurrent (mean:3.749): 44.99
  • debian-13-xfce_dom0-dispvm-api (mean:7.087): 85.04
  • debian-13-xfce_dom0-dispvm-gui-api (mean:8.255): 99.05
  • debian-13-xfce_dom0-dispvm-concurrent-api (mean:3.335): 40.02
  • debian-13-xfce_dom0-dispvm-gui-concurrent-api (mean:4.089): 49.07
  • debian-13-xfce_dom0-dispvm-preload-less-less-api (mean:3.772): 45.27
  • debian-13-xfce_dom0-dispvm-preload-less-api (mean:3.839): 46.07
  • debian-13-xfce_dom0-dispvm-preload-api (mean:3.652): 43.83
  • debian-13-xfce_dom0-dispvm-preload-more-api (mean:3.32): 39.84
  • debian-13-xfce_dom0-dispvm-preload-more-more-api (mean:3.511): 42.13
  • debian-13-xfce_dom0-dispvm-preload-concurrent-api (mean:2.986): 35.83
  • debian-13-xfce_dom0-dispvm-preload-gui-concurrent-api (mean:3.899): 46.79
  • debian-13-xfce_vm-vm (mean:0.027): 0.32
  • debian-13-xfce_vm-vm-gui (mean:0.042): 0.51
  • debian-13-xfce_vm-vm-concurrent (mean:0.022): 0.26
  • debian-13-xfce_vm-vm-gui-concurrent (mean:0.02): 0.24
  • debian-13-xfce_dom0-vm-api (mean:0.04): 0.48
  • debian-13-xfce_dom0-vm-gui-api (mean:0.042): 0.51
  • debian-13-xfce_dom0-vm-concurrent-api (mean:0.027): 0.32
  • debian-13-xfce_dom0-vm-gui-concurrent-api (mean:0.029): 0.34
  • fedora-42-xfce_vm-dispvm (mean:7.123): 85.47
  • fedora-42-xfce_vm-dispvm-gui (mean:8.793): 105.52
  • fedora-42-xfce_vm-dispvm-concurrent (mean:3.765): 45.18
  • fedora-42-xfce_vm-dispvm-gui-concurrent (mean:4.426): 53.11
  • fedora-42-xfce_dom0-dispvm (mean:7.798): 93.58
  • fedora-42-xfce_dom0-dispvm-gui (mean:9.034): 108.41
  • fedora-42-xfce_dom0-dispvm-concurrent (mean:3.798): 45.58
  • fedora-42-xfce_dom0-dispvm-gui-concurrent (mean:4.689): 56.27
  • fedora-42-xfce_vm-dispvm-preload (mean:3.044): 36.53
  • fedora-42-xfce_vm-dispvm-preload-gui (mean:6.988): 83.85
  • fedora-42-xfce_vm-dispvm-preload-concurrent (mean:2.918): 35.02
  • fedora-42-xfce_vm-dispvm-preload-gui-concurrent (mean:3.686): 44.23
  • fedora-42-xfce_dom0-dispvm-preload (mean:3.883): 46.60
  • fedora-42-xfce_dom0-dispvm-preload-gui (mean:5.136): 61.63
  • fedora-42-xfce_dom0-dispvm-preload-concurrent (mean:3.319): 39.83
  • fedora-42-xfce_dom0-dispvm-preload-gui-concurrent (mean:4.244): 50.93
  • fedora-42-xfce_dom0-dispvm-api (mean:7.47): 89.64
  • fedora-42-xfce_dom0-dispvm-gui-api (mean:8.793): 105.51
  • fedora-42-xfce_dom0-dispvm-concurrent-api (mean:3.686): 44.23
  • fedora-42-xfce_dom0-dispvm-gui-concurrent-api (mean:4.467): 53.61
  • fedora-42-xfce_dom0-dispvm-preload-less-less-api (mean:4.321): 51.85
  • fedora-42-xfce_dom0-dispvm-preload-less-api (mean:3.82): 45.84
  • fedora-42-xfce_dom0-dispvm-preload-api (mean:3.751): 45.01
  • fedora-42-xfce_dom0-dispvm-preload-more-api (mean:3.798): 45.58
  • fedora-42-xfce_dom0-dispvm-preload-more-more-api (mean:3.865): 46.38
  • fedora-42-xfce_dom0-dispvm-preload-gui-api (mean:5.024): 60.29
  • fedora-42-xfce_dom0-dispvm-preload-concurrent-api (mean:3.675): 44.10
  • fedora-42-xfce_dom0-dispvm-preload-gui-concurrent-api (mean:4.08): 48.96
  • fedora-42-xfce_vm-vm (mean:0.019): 0.23
  • fedora-42-xfce_vm-vm-gui (mean:0.044): 0.53
  • fedora-42-xfce_vm-vm-concurrent (mean:0.023): 0.28
  • fedora-42-xfce_vm-vm-gui-concurrent (mean:0.03): 0.36
  • fedora-42-xfce_dom0-vm-api (mean:0.038): 0.45
  • fedora-42-xfce_dom0-vm-gui-api (mean:0.044): 0.53
  • fedora-42-xfce_dom0-vm-concurrent-api (mean:0.032): 0.38
  • fedora-42-xfce_dom0-vm-gui-concurrent-api (mean:0.043): 0.52
  • whonix-workstation-18_vm-dispvm (mean:9.116): 109.39
  • whonix-workstation-18_vm-dispvm-gui (mean:10.167): 122.00
  • whonix-workstation-18_vm-dispvm-concurrent (mean:4.888): 58.66
  • whonix-workstation-18_vm-dispvm-gui-concurrent (mean:5.612): 67.34
  • whonix-workstation-18_dom0-dispvm (mean:9.767): 117.20
  • whonix-workstation-18_dom0-dispvm-gui (mean:10.83): 129.95
  • whonix-workstation-18_dom0-dispvm-concurrent (mean:5.072): 60.86
  • whonix-workstation-18_dom0-dispvm-gui-concurrent (mean:5.673): 68.08
  • whonix-workstation-18_vm-dispvm-preload (mean:4.126): 49.52
  • whonix-workstation-18_vm-dispvm-preload-gui (mean:5.222): 62.66
  • whonix-workstation-18_vm-dispvm-preload-concurrent (mean:3.919): 47.03
  • whonix-workstation-18_vm-dispvm-preload-gui-concurrent (mean:4.837): 58.05
  • whonix-workstation-18_dom0-dispvm-preload (mean:5.558): 66.70
  • whonix-workstation-18_dom0-dispvm-preload-gui (mean:6.168): 74.01
  • whonix-workstation-18_dom0-dispvm-preload-concurrent (mean:4.526): 54.31
  • whonix-workstation-18_dom0-dispvm-preload-gui-concurrent (mean:4.98): 59.76
  • whonix-workstation-18_dom0-dispvm-api (mean:9.906): 118.87
  • whonix-workstation-18_dom0-dispvm-gui-api (mean:10.721): 128.65
  • whonix-workstation-18_dom0-dispvm-concurrent-api (mean:4.987): 59.84
  • whonix-workstation-18_dom0-dispvm-gui-concurrent-api (mean:5.569): 66.83
  • whonix-workstation-18_dom0-dispvm-preload-less-less-api (mean:5.63): 67.56
  • whonix-workstation-18_dom0-dispvm-preload-less-api (mean:5.45): 65.40
  • whonix-workstation-18_dom0-dispvm-preload-api (mean:5.311): 63.73
  • whonix-workstation-18_dom0-dispvm-preload-more-api (mean:5.611): 67.33
  • whonix-workstation-18_dom0-dispvm-preload-more-more-api (mean:5.457): 65.49
  • whonix-workstation-18_dom0-dispvm-preload-gui-api (mean:6.134): 73.61
  • whonix-workstation-18_dom0-dispvm-preload-concurrent-api (mean:4.72): 56.64
  • whonix-workstation-18_dom0-dispvm-preload-gui-concurrent-api (mean:5.327): 63.92
  • whonix-workstation-18_vm-vm (mean:0.047): 0.56
  • whonix-workstation-18_vm-vm-gui (mean:0.043): 0.52
  • whonix-workstation-18_vm-vm-concurrent (mean:0.018): 0.21
  • whonix-workstation-18_vm-vm-gui-concurrent (mean:0.02): 0.24
  • whonix-workstation-18_dom0-vm-api (mean:0.037): 0.45
  • whonix-workstation-18_dom0-vm-gui-api (mean:0.041): 0.49
  • whonix-workstation-18_dom0-vm-concurrent-api (mean:0.027): 0.33
  • whonix-workstation-18_dom0-vm-gui-concurrent-api (mean:0.045): 0.54
  • dom0_root_seq1m_q8t1_read 3:read_bandwidth_kb: 449646.00 🔻 ( previous job: 497426.00, degradation: 90.39%)
  • dom0_root_seq1m_q1t1_read 3:read_bandwidth_kb: 439838.00 🟢 ( previous job: 431512.00, improvement: 101.93%)
  • dom0_root_seq1m_q1t1_write 3:write_bandwidth_kb: 198714.00 🟢 ( previous job: 196254.00, improvement: 101.25%)
  • dom0_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 98177.00 🟢 ( previous job: 23940.00, improvement: 410.10%)
  • dom0_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 3611.00 🟢 ( previous job: 2446.00, improvement: 147.63%)
  • dom0_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 7260.00 🟢 ( previous job: 5874.00, improvement: 123.60%)
  • dom0_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 750.00 🟢 ( previous job: 29.00, improvement: 2586.21%)
  • dom0_varlibqubes_seq1m_q8t1_read 3:read_bandwidth_kb: 308314.00 🟢 ( previous job: 292489.00, improvement: 105.41%)
  • dom0_varlibqubes_seq1m_q1t1_read 3:read_bandwidth_kb: 429216.00 🟢 ( previous job: 137802.00, improvement: 311.47%)
  • dom0_varlibqubes_seq1m_q1t1_write 3:write_bandwidth_kb: 188448.00 🟢 ( previous job: 121719.00, improvement: 154.82%)
  • dom0_varlibqubes_rnd4k_q32t1_read 3:read_bandwidth_kb: 107994.00 🟢 ( previous job: 103932.00, improvement: 103.91%)
  • dom0_varlibqubes_rnd4k_q32t1_write 3:write_bandwidth_kb: 7275.00 🟢 ( previous job: 6356.00, improvement: 114.46%)
  • dom0_varlibqubes_rnd4k_q1t1_read 3:read_bandwidth_kb: 7697.00 🟢 ( previous job: 7695.00, improvement: 100.03%)
  • dom0_varlibqubes_rnd4k_q1t1_write 3:write_bandwidth_kb: 3603.00 🔻 ( previous job: 3925.00, degradation: 91.80%)
  • fedora-42-xfce_root_seq1m_q8t1_read 3:read_bandwidth_kb: 375295.00 🟢 ( previous job: 366891.00, improvement: 102.29%)
  • fedora-42-xfce_root_seq1m_q8t1_write 3:write_bandwidth_kb: 139497.00 🔻 ( previous job: 140215.00, degradation: 99.49%)
  • fedora-42-xfce_root_seq1m_q1t1_write 3:write_bandwidth_kb: 50537.00 🟢 ( previous job: 47575.00, improvement: 106.23%)
  • fedora-42-xfce_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 86479.00 🟢 ( previous job: 86001.00, improvement: 100.56%)
  • fedora-42-xfce_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 8654.00 🔻 ( previous job: 9042.00, degradation: 95.71%)
  • fedora-42-xfce_private_seq1m_q8t1_read 3:read_bandwidth_kb: 375699.00 🔻 ( previous job: 387500.00, degradation: 96.95%)
  • fedora-42-xfce_private_seq1m_q8t1_write 3:write_bandwidth_kb: 142442.00 🟢 ( previous job: 136640.00, improvement: 104.25%)
  • fedora-42-xfce_private_seq1m_q1t1_read 3:read_bandwidth_kb: 333304.00 🟢 ( previous job: 325139.00, improvement: 102.51%)
  • fedora-42-xfce_private_seq1m_q1t1_write 3:write_bandwidth_kb: 76487.00 🔻 ( previous job: 79539.00, degradation: 96.16%)
  • fedora-42-xfce_private_rnd4k_q32t1_read 3:read_bandwidth_kb: 93255.00 🟢 ( previous job: 87396.00, improvement: 106.70%)
  • fedora-42-xfce_private_rnd4k_q32t1_write 3:write_bandwidth_kb: 3427.00 🔻 ( previous job: 3765.00, degradation: 91.02%)
  • fedora-42-xfce_volatile_seq1m_q8t1_read 3:read_bandwidth_kb: 365484.00 🔻 ( previous job: 383531.00, degradation: 95.29%)
  • fedora-42-xfce_volatile_seq1m_q8t1_write 3:write_bandwidth_kb: 165778.00 🟢 ( previous job: 157382.00, improvement: 105.33%)
  • fedora-42-xfce_volatile_seq1m_q1t1_read 3:read_bandwidth_kb: 322936.00 🟢 ( previous job: 293225.00, improvement: 110.13%)
  • fedora-42-xfce_volatile_seq1m_q1t1_write 3:write_bandwidth_kb: 89576.00 🟢 ( previous job: 64217.00, improvement: 139.49%)

Set /dev/v4l2loopback permission so users in `qubes` group have access.
And also prevent creating initial /dev/video0 now that it's created
dynamically.

Note that /dev/video* don't need any manual treatment, as default udev
rules already give local user access to it.

One still needs sudo to load the module.

QubesOS/qubes-issues#10163
Make it work also without password-less root enabled.
@ben-grande

ben-grande commented Nov 14, 2025

Copy link
Copy Markdown
Contributor

@marmarek

Copy link
Copy Markdown
Member Author

Allow seeing what is different.
@marmarek
marmarek merged commit a097f71 into QubesOS:master Nov 15, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants