Proof of concept

A project log for Streamo Encodo Cheapo

Trying to make an inexpensive HDMI encoder with off the shelf stuff

wjcarpenterWJCarpenter 05/17/2024 at 22:280 Comments

Do those dongles actually work, and are they better than "marginally above crap"? Let's see what we can see.

When I plug the dongle into my Linux machine, it shows up as this USB device:

Bus 001 Device 038: ID 534d:2109 MacroSilicon

 Searching around for those ID strings leads to the MacroSilicon MS2109 chip that powers the dongle that I have. I haven't pursued the innards of this chip, but it was easy to figure out that it's supported by the Linux v4l subsystem and presents as a pair of video devices.

crw-rw----+ 1 root video 81, 2 May 17 11:36 /dev/video2
crw-rw----+ 1 root video 81, 3 May 17 11:36 /dev/video3

 At this point, I just needed any old HDMI video signal. I plugged in an Amazon Fire TV stick that was in my "send to the thrift store" box. I used vlc to open /dev/video2 as a capture device.

Hey, that worked! You can't see it, but the audio also played correctly. On my 4k monitor, that window with the FHD video doesn't look completely sharp, but it's good enough for the POC. Here's what vlc says about it:

The resolution is FHD (1920x1080), but it's only 5fps. The playing video has the choppy look that you'd expect from that frame rate. My quad-core low-powered Linux box reports about 30-50% on each core.

It didn't really prove anything that I didn't already know was OK, but I also streamed that video. My first attempt was to use mjpg-streamer, which I had used in an earlier project., but some python thing was giving me a hard time today. Instead, I used µStreamer, which is part of the PiKVM project. It doesn't include audio for this kind of setup, but I was able to view the playing video in a web browser.

Next steps: I've ordered a newer dongle that has a USB 3.0 interface, and I have some beefier Linux boxes to try. I am cautiously optimistic.