HDMI with CEC

Looking at this again having learned that (unless framework did something weird) we do not have 2 USB 2 ports in, there is still a chance to get this to work reasonably:

An extra MCU (anything with 2 I2C ports; ATTiny or Cortex-M0 should do) can sit both on the I2C bus that does monitor detection, and on the CEC line. On the I2C it’d respond to a vendor specific address (distinct from the 0x50 for EDID and 0x54 for SCDC, possibly even at an address that’s configurable when unplugged as to be adjustable to other bus participants). It’d then offer a command interface to the host, which can send CEC commands through it, or configure the MCU to record seen CEC commands (I think that’ll need to be polling).

Hardware-wise, taking inspiration from the schematic at https://os.mbed.com/media/uploads/WiredHome/hdmi-cec-schematic.v.0.4.pdf, with a low-BOM MCU this should not take more than a QFN16 MCU, a DFN6 dual-BJT, 8 resistors, a diode and a small cap. With some shoving, this should fit on the existing HDMI board.

Software-wise, this will probably not work with libcec out of the box, and might need some tweaks b/c I2C is not usually user accessible, but some udev rules and/or a small dbus component can take care of that.

As for use cases, this would be great for motherboards that are used in the standalone cases used as a media PC.

3 Likes