Hello,
I am running Bluefin-DX and therefore using Virt-Manager as installed/configured by DX. My laptop has an integrated webcam, but I also have an Anker PowerConf C300.
When I try to attach that camera to the VM I get the below error:
All I see in the kernel logs of the host is:
Apr 21 20:06:39 myhost gsd-media-keys[93180]: Unable to get default source
Apr 21 20:06:40 myhost kernel: usb 3-9: USB disconnect, device number 28
...[short pause]
Apr 21 20:06:41 myhost kernel: usb 3-9: new high-speed USB device number 29 using xhci_hcd
Apr 21 20:06:41 myhost kernel: usb 3-9: New USB device found, idVendor=291a, idProduct=3361, bcdDevice= 3.10
Apr 21 20:06:41 myhost kernel: usb 3-9: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr 21 20:06:41 myhost kernel: usb 3-9: Product: Anker PowerConf C300
Apr 21 20:06:41 myhost kernel: usb 3-9: Manufacturer: Anker
Apr 21 20:06:41 myhost kernel: usb 3-9: SerialNumber: AR2MXP0C15100739
Apr 21 20:06:41 myhost kernel: usb 3-9: Found UVC 1.00 device Anker PowerConf C300 (291a:3361)
Apr 21 20:06:41 myhost kernel: usb 3-9: Failed to query (GET_INFO) UVC control 8 on unit 1: 0 (exp. 1).
Apr 21 20:06:41 myhost mtp-probe[141728]: checking bus 3, device 29: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-9"
Apr 21 20:06:41 myhost mtp-probe[141728]: bus: 3, device: 29 was not an MTP device
Apr 21 20:06:41 myhost (udev-worker)[141685]: controlC1: Process '/sbin/alsactl -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --initfile=/lib/alsa/init/00main restore /dev/snd/controlC1' failed with exit code 99.
Apr 21 20:06:41 myhost mtp-probe[141766]: checking bus 3, device 29: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-9"
Apr 21 20:06:41 myhost mtp-probe[141766]: bus: 3, device: 29 was not an MTP device
Apr 21 20:06:42 myhost pipewire[92984]: spa.v4l2: '/dev/video5' VIDIOC_QUERYCTRL: Broken pipe
Apr 21 20:06:42 myhost kernel: usb 3-9: Failed to query (GET_DEF) UVC control 8 on unit 1: 0 (exp. 1).
Apr 21 20:06:42 myhost pipewire[92984]: spa.v4l2: '/dev/video5' VIDIOC_QUERYCTRL: Broken pipe
Apr 21 20:06:42 myhost kernel: usb 3-9: Failed to query (GET_DEF) UVC control 8 on unit 1: 0 (exp. 1).
I think the disconnect at the top is expected: the webcam is being detached from the host in order to be used by the guest. Unfortunately something goes wrong and the rest of the logging is probably simply the host re-detecting the webcam. There doesn’t seem to be any information on what went wrong.
If I choose my integrated webcam to passthrough, there is no problem. It gets passed to the guest (Windows 11 with spice and qemu guest addons installed) and that one works fine.
I need some help in how to enable extra logging to find out why the Anker is misbehaving. I’m hoping to find a workaround and submit a bug report. If anyone can help and show me how to collect more information, I’d appreciate it.
Thanks!
P.S. Here’s my USB tree after the last attempt went wrong:
❯ lsusb -t
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 20000M/x2
|__ Port 001: Dev 003, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 002: Dev 010, If 0, Class=Hub, Driver=hub/6p, 480M
|__ Port 001: Dev 011, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 001: Dev 011, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 006: Dev 012, If 0, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 005: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 008: Dev 005, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 008: Dev 005, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 008: Dev 005, If 2, Class=Video, Driver=uvcvideo, 480M
|__ Port 008: Dev 005, If 3, Class=Video, Driver=uvcvideo, 480M
|__ Port 008: Dev 005, If 4, Class=Application Specific Interface, Driver=[none], 480M
|__ Port 009: Dev 029, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 009: Dev 029, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 009: Dev 029, If 2, Class=Video, Driver=uvcvideo, 480M
|__ Port 009: Dev 029, If 3, Class=Video, Driver=uvcvideo, 480M
|__ Port 010: Dev 007, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 010: Dev 007, If 1, Class=Wireless, Driver=btusb, 12M
/: Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 20000M/x2
The camera is now Dev 029 on Port 009, as per these 4 lines:
|__ Port 009: Dev 029, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 009: Dev 029, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 009: Dev 029, If 2, Class=Video, Driver=uvcvideo, 480M
|__ Port 009: Dev 029, If 3, Class=Video, Driver=uvcvideo, 480M
The camera that works fine is this one:
|__ Port 008: Dev 005, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 008: Dev 005, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 008: Dev 005, If 2, Class=Video, Driver=uvcvideo, 480M
|__ Port 008: Dev 005, If 3, Class=Video, Driver=uvcvideo, 480M