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: