You are not logged in.

#1 2020-08-02 23:10:05

narg2800
Member
Registered: 2019-03-24
Posts: 9

UVC/UAC audio/video drivers not loading

Recently I purchased a USB video adapter (fully UVC/UVA compatible) so I could pipe an HDMI signal from a camcorder into my computer as a webcam. I plugged everything and it is not seen by Cheese (GNOME camera app), OBS, or VLC. I have confirmed this is not a device issue by testing it with my Ubuntu based laptop and it loads just fine and can be used in any application. I am running the latest build of Arch with kernel 5.7.11. When I run the

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.

Offline

#2 2020-08-03 18:03:45

terpderp
Member
Registered: 2020-08-03
Posts: 2

Re: UVC/UAC audio/video drivers not loading

I was actually just recently having the same problem. I have two of those cheap USB capture adapter and another slighly more expensive USB video adapter (Aliexpress Specials). The more expensive (different chip card) worked fine, but the cheap USB Video Adapters (Macrosilicon) never were detected. I tried linux-lts as I thought it was a recent kernel update or something, but the same issues were happening.

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?

Offline

#3 2020-08-03 20:46:22

narg2800
Member
Registered: 2019-03-24
Posts: 9

Re: UVC/UAC audio/video drivers not loading

I have a Scarlet 2i2 which I use for all of my audio I/O. I can try rebooting without it plugged in but with the capture card in and see if this works.

Offline

#4 2020-08-03 21:11:55

narg2800
Member
Registered: 2019-03-24
Posts: 9

Re: UVC/UAC audio/video drivers not loading

I have tried disconnecting all of my USB devices and rebooting. It shows up in GNOME as an audio input, but as it stands I cannot find the video listed under any application, nor is there a /dev entry for any video device. It seems that there might be an issue with udev not handling it right?

Last edited by narg2800 (2020-08-03 21:12:20)

Offline

#5 2020-08-08 17:49:26

Nikola_F
Member
Registered: 2020-08-08
Posts: 1

Re: UVC/UAC audio/video drivers not loading

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

Offline

#6 2020-08-27 05:38:33

MindoverclockR
Member
Registered: 2020-08-27
Posts: 2

Re: UVC/UAC audio/video drivers not loading

Coming from Debian bullseye, I just bought the device (534d:2109) and am having this issue.

Offline

#7 2020-08-27 05:44:20

MindoverclockR
Member
Registered: 2020-08-27
Posts: 2

Re: UVC/UAC audio/video drivers not loading

The workaround works for me. Thanks!

Nikola_F wrote:

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

Offline

#8 2020-08-31 00:08:29

narg2800
Member
Registered: 2019-03-24
Posts: 9

Re: UVC/UAC audio/video drivers not loading

UPDATE: I have diagnosed and fixed the issue.

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.

Offline

Board footer

Powered by FluxBB