I have been using the camera and mic successfully for a few weeks on Qubes 4.3 on NitroPad V54, auto-attaching both to a “work” standalone qube. Firefox in that qube successfully used them.
As of yesterday (not sure if it was updates or what), attaching and detaching is flaky, meaning sometimes the camera or mic will attach and be visible to Firefox and sometimes not. Sometimes the camera seems to automatically detach from the qube and then fails to attach when trying manually (both in GUI and with qvm-usb commands).
For example:
$ qvm-usb --verbose attach work sys-usb:4-7
Error: Device attach failed:
$ echo $?
1
Meanwhile, the camera light is on, indicating that something somewhere has activated the camera.
Restarting the sys-usb qube doesn’t seem to fix it, nor does picking a different kernel on the sys-usb qube (6.18 vs 6.19). I tried to remove all USB assignment rules in the GUI (there were previously some errors showing up in that GUI that I seem to have fixed following the advice here) and only manually attach using the GUI. That doesn’t seem to resolve it.
At first, I thought it was the introduction of a USB mouse that caused the flakiness, but the issue seems to happen regardless of whether that mouse is plugged in or not.
Here are some lists of installed packages in dom0 and sys-usb I guess may be helpful
dom0 kernel and usb packages
$ uname -a
Linux dom0 6.19.5-1.qubes.fc41.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Mar 2 13:25:40 UTC 2026 x86_64 GNU/Linux
$ rpm -qa | grep usb | sort
libgusb-0.4.9-2.fc41.x86_64
libusb1-1.0.29-1.fc41.x86_64
libusbmuxd-2.0.2^20230620git8d30a55-6.fc41.x86_64
qubes-usb-proxy-dom0-4.3.5-1.fc41.noarch
usbguard-1.1.3-2.fc41.x86_64
usbguard-selinux-1.1.3-2.fc41.noarch
usb_modeswitch-2.6.2-4.fc41.x86_64
usb_modeswitch-data-20191128-12.fc41.noarch
usbmuxd-1.1.1^20230720git61b99ab-3.fc41.x86_64
usbutils-017-3.fc41.x86_64
sys-usb kernel and usb packages
$ uname -a
Linux sys-usb 6.19.5-1.qubes.fc41.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Mar 2 13:25:40 UTC 2026 x86_64 GNU/Linux
$ dpkg -l | grep usb | sort
ii ipp-usb 0.9.23-2+b7 amd64 Daemon for IPP over USB printer support
ii libgusb2:amd64 0.4.9-1+b1 amd64 GLib wrapper around libusb1
ii libusb-1.0-0:amd64 2:1.0.28-1 amd64 userspace USB programming library
ii libusbmuxd-2.0-7:amd64 2.1.0-1+b1 amd64 Client library to handle usbmux connections with iOS devices (library)
ii qubes-usb-proxy 4.3.5+deb13u1 amd64 USBIP wrapper to run it over Qubes RPC connection
ii usb.ids 2025.07.26-1 all USB ID Repository
ii usb-modeswitch 2.6.1-4+b2 amd64 mode switching tool for controlling “flip flop” USB devices
ii usb-modeswitch-data 20191128-7 all mode switching data for usb-modeswitch
ii usbmuxd 1.1.1-6+deb13u1 amd64 USB multiplexor daemon for iPhone and iPod Touch devices
ii usbutils 1:018-2 amd64 Linux USB utilities
work kernel and usb packages
$ uname -a
Linux work 6.19.5-1.qubes.fc41.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Mar 2 13:25:40 UTC 2026 x86_64 GNU/Linux
$ dpkg -l | grep usb | sort
ii ipp-usb 0.9.23-2+b7 amd64 Daemon for IPP over USB printer support
ii libgusb2:amd64 0.4.9-1+b1 amd64 GLib wrapper around libusb1
ii libusb-1.0-0:amd64 2:1.0.28-1 amd64 userspace USB programming library
ii libusbmuxd-2.0-7:amd64 2.1.0-1+b1 amd64 Client library to handle usbmux connections with iOS devices (library)
ii qubes-usb-proxy 4.3.5+deb13u1 amd64 USBIP wrapper to run it over Qubes RPC connection
ii usb.ids 2025.07.26-1 all USB ID Repository
ii usb-modeswitch 2.6.1-4+b2 amd64 mode switching tool for controlling “flip flop” USB devices
ii usb-modeswitch-data 20191128-7 all mode switching data for usb-modeswitch
ii usbmuxd 1.1.1-6+deb13u1 amd64 USB multiplexor daemon for iPhone and iPod Touch devices
ii usbutils 1:018-2 amd64 Linux USB utilities
I had also tried a reboot and the problem survives reboot.
What other info would help me figure this out?
P.S. I now notice that the mic is not a USB device, but still the problem remains for both the USB camera and the mic. If I plug in a USB microphone that seems to show up, attach, and work successfully every time. Likewise, a USB mouse shows up and works fine. So the issue appears limited to the built-in hardware, not external hardware.