I brought a cheap (£10) HDMI-to-USB2 capture device based on the Macrosilicon 2109 - but I encountered a problem where it didn't appear at /dev/video*
when plugged in, despite dmesg
showing some recognition of the device.
Fortunately, Nikola_F on the Arch Linux forums had already found the problem and offered a solution: The device is wrongly being treated as a USB audio device. You can confirm this by checking four new symlinks appear in ls -l /sys/bus/usb/drivers/snd-usb-audio/
when you insert the device.
To fix it, I created new udev rules (in a file like /etc/udev/rules.d/91-hdmi-to-usb-ms2109.rules
) to apply Nikola_F's fix automatically:
Give it a sudo udevadm control --reload-rules
then unplug and replug, and it should start working.
This disables the audio function of the HDMI-to-USB converter, but I wasn't using it anyway. More careful rule-writing could probably solve that problem.
Other hints for using the MS2109
I was able to stream video from the device at 1080p with ffplay -f video4linux2 -framerate 50 -video_size 1920x1080 -input_format mjpeg /dev/video0
The device seemed to struggle if mjpeg wasn't used - presumably a lack of USB bandwidth. If you want to use it with software you can't convince to ask for mjpeg, you can create a loopback camera and use ffmpeg to read mjpeg from the capture card and output regular video to the loopback camera, like so: