The issue was that due to a bug the UVCVideo module wasnt loading. The fix was to force the module to be loaded.
This was acheived in the following way:
sudo echo "uvcvideo" | sudo tee /etc/modules-load.d/uvc.conf
I have to give credit to reddit user u/steev182 for providing the fix which has worked for me.
]]>I just bought this device and was hit with this issue.
usb 3-1: new high-speed USB device number 10 using xhci_hcd usb 3-1: New USB device found, idVendor=534d, idProduct=2109, bcdDevice=21.00 usb 3-1: New USB device strings: Mfr=1, Product=0, SerialNumber=0 usb 3-1: Manufacturer: MACROSILICON
It looks like a bug in snd-usb-audio, it binds to the first 4 interfaces of the device, despite the fact that only numbers 2 and 3 are of audio class:
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=534d ProdID=2109 Rev=21.00 S: Manufacturer=MACROSILICON C: #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA I: If#=0x0 Alt= 0 #EPs= 0 Cls=0e(video) Sub=01 Prot=00 Driver=snd-usb-audio I: If#=0x1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=snd-usb-audio I: If#=0x2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio I: If#=0x3 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio I: If#=0x4 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid $ ls -l /sys/bus/usb/drivers/snd-usb-audio/ | grep 3-1 lrwxrwxrwx 1 root root 0 8. srp 19.08 3-1:1.0 -> ../../../../devices/pci0000:00/0000:00:07.1/0000:0f:00.3/usb3/3-1/3-1:1.0 lrwxrwxrwx 1 root root 0 8. srp 19.08 3-1:1.1 -> ../../../../devices/pci0000:00/0000:00:07.1/0000:0f:00.3/usb3/3-1/3-1:1.1 lrwxrwxrwx 1 root root 0 8. srp 19.08 3-1:1.2 -> ../../../../devices/pci0000:00/0000:00:07.1/0000:0f:00.3/usb3/3-1/3-1:1.2 lrwxrwxrwx 1 root root 0 8. srp 19.08 3-1:1.3 -> ../../../../devices/pci0000:00/0000:00:07.1/0000:0f:00.3/usb3/3-1/3-1:1.3
Knowing this, the workaround is simple, just unbind the interfaces from the driver:
echo "3-1:1.0" > /sys/bus/usb/drivers/snd-usb-audio/unbind echo "3-1:1.1" > /sys/bus/usb/drivers/snd-usb-audio/unbind echo "3-1:1.2" > /sys/bus/usb/drivers/snd-usb-audio/unbind echo "3-1:1.3" > /sys/bus/usb/drivers/snd-usb-audio/unbind
and bind them again to uvcvideo and snd-usb-audio, respectively:
echo -n "3-1:1.0" > /sys/bus/usb/drivers/uvcvideo/bind echo -n "3-1:1.2" > /sys/bus/usb/drivers/snd-usb-audio/bind
And, voilà, it works:
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=534d ProdID=2109 Rev=21.00 S: Manufacturer=MACROSILICON C: #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA I: If#=0x0 Alt= 0 #EPs= 0 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo I: If#=0x1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo I: If#=0x2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio I: If#=0x3 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio I: If#=0x4 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
uvcvideo: Found UVC 1.00 device <unnamed> (534d:2109) uvcvideo 3-1:1.0: Entity type for entity Processing 2 was not initialized! uvcvideo 3-1:1.0: Entity type for entity Camera 1 was not initialized!
$ v4l2-ctl --list-devices UVC Camera (534d:2109): USB Vid (usb-0000:0f:00.3-1): /dev/video0 /dev/video1 $ arecord -l **** List of CAPTURE Hardware Devices **** card 1: MS2109 [MS2109], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
usb 3-1: new high-speed USB device number 10 using xhci_hcd
usb 3-1: New USB device found, idVendor=534d, idProduct=2109, bcdDevice=21.00
usb 3-1: New USB device strings: Mfr=1, Product=0, SerialNumber=0
usb 3-1: Manufacturer: MACROSILICON
It looks like a bug in snd-usb-audio, it binds to the first 4 interfaces of the device, despite the fact that only numbers 2 and 3 are of audio class:
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=534d ProdID=2109 Rev=21.00
S: Manufacturer=MACROSILICON
C: #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 0 Cls=0e(video) Sub=01 Prot=00 Driver=snd-usb-audio
I: If#=0x1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=snd-usb-audio
I: If#=0x2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
I: If#=0x3 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I: If#=0x4 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
$ ls -l /sys/bus/usb/drivers/snd-usb-audio/ | grep 3-1
lrwxrwxrwx 1 root root 0 8. srp 19.08 3-1:1.0 -> ../../../../devices/pci0000:00/0000:00:07.1/0000:0f:00.3/usb3/3-1/3-1:1.0
lrwxrwxrwx 1 root root 0 8. srp 19.08 3-1:1.1 -> ../../../../devices/pci0000:00/0000:00:07.1/0000:0f:00.3/usb3/3-1/3-1:1.1
lrwxrwxrwx 1 root root 0 8. srp 19.08 3-1:1.2 -> ../../../../devices/pci0000:00/0000:00:07.1/0000:0f:00.3/usb3/3-1/3-1:1.2
lrwxrwxrwx 1 root root 0 8. srp 19.08 3-1:1.3 -> ../../../../devices/pci0000:00/0000:00:07.1/0000:0f:00.3/usb3/3-1/3-1:1.3
Knowing this, the workaround is simple, just unbind the interfaces from the driver:
echo "3-1:1.0" > /sys/bus/usb/drivers/snd-usb-audio/unbind
echo "3-1:1.1" > /sys/bus/usb/drivers/snd-usb-audio/unbind
echo "3-1:1.2" > /sys/bus/usb/drivers/snd-usb-audio/unbind
echo "3-1:1.3" > /sys/bus/usb/drivers/snd-usb-audio/unbind
and bind them again to uvcvideo and snd-usb-audio, respectively:
echo -n "3-1:1.0" > /sys/bus/usb/drivers/uvcvideo/bind
echo -n "3-1:1.2" > /sys/bus/usb/drivers/snd-usb-audio/bind
And, voilà, it works:
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=534d ProdID=2109 Rev=21.00
S: Manufacturer=MACROSILICON
C: #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 0 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
I: If#=0x1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
I: If#=0x2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
I: If#=0x3 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I: If#=0x4 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
uvcvideo: Found UVC 1.00 device <unnamed> (534d:2109)
uvcvideo 3-1:1.0: Entity type for entity Processing 2 was not initialized!
uvcvideo 3-1:1.0: Entity type for entity Camera 1 was not initialized!
$ v4l2-ctl --list-devices
UVC Camera (534d:2109): USB Vid (usb-0000:0f:00.3-1):
/dev/video0
/dev/video1
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: MS2109 [MS2109], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
I tested a different device and found the cheap USB Video Adapters worked as expected, but my main desktop was having issues. This person was also having issues and found it was due to a Sound Capture Device. https://bugs.archlinux.org/task/67460 . I just added a USB Roland Quad-Capture UA-22 to the mix recently and probably haven't used those cards recently.
If I unplugged all the capture cards and the Roland Quad-Capture, rebooted, then plugged them back in with the USB Video adapters first. I found they were detected properly and worked as expected.
I haven't diagnosed this any further to the root cause. Do you have any USB Audio devices?
]]>dmesg | tail
command after plugging it in I get the following output:
[ 961.763622] usb 1-2: new high-speed USB device number 5 using xhci_hcd
[ 962.193173] usb 1-2: unable to read config index 0 descriptor/all
[ 962.193176] usb 1-2: can't read configurations, error -71
[ 965.306955] usb 1-2: new high-speed USB device number 7 using xhci_hcd
[ 965.549541] usb 1-2: New USB device found, idVendor=534d, idProduct=2109, bcdDevice=21.00
[ 965.549544] usb 1-2: New USB device strings: Mfr=1, Product=0, SerialNumber=0
[ 965.549546] usb 1-2: Manufacturer: MACROSILICON
I have confirmed that the UVC/UAC modules are compiled with `modprobe`
Any help would be appreciated.