At some point, [mitxela] bought bored and determined to construct his personal HDMI monitor – the unconventional method. HDMI has a number of high-speed differential pairs, but it surely additionally has an I2C interface used for detecting the monitor’s decision and issuing instructions like brightness management. The truth is, I2C is the spine for lots of aspect channels like these – it’s additionally one among our most well-liked interfaces for connecting to chill sensors, and on this case, an OLED show!
[mitxela] describes his journey from begin to finish, with all of the pitfalls and detours. Going by the pinout with a damaged therefore sacrificial HDMI cable in hand, he discovered how one can probe the I2C traces with Linux command-line instruments and used these to confirm that the show was acknowledged on the HDMI-exposed I2C bus. Then, he turned to Python and wrote a brief library for the show utilizing the
smbus bindings – and, after stumbling upon an FPS limitation attributable to SMBus normal restrictions, rewrote his code to straight speak to the I2C machine node, elevating FPS from 2 to 5-10.
From there, query arose – what’s the perfect software program path to take? He tried making a customized X modeline on the HDMI port the show was technically connected to, however that didn’t work out. In the long run, he efficiently employed the Linux functionality referred to as “digital screens”, and discovered about an attention-grabbing peculiarity – there was no mouse cursor to be seen. Seems, they’re usually hardware-accelerated and overlaid by our GPUs, however in [mitxela]’s case, the GPU was not concerned, so he added cursor assist to the image forwarding code, too.
With partial refresh, the show might be redrawn even sooner, however that’s the place [mitxela] determined he’s reached a passable conclusion to this journey. The write-up is a superb learn, and if movies are extra your forte, he additionally made a video about all of it – embedded under.
We first lined the power to get I2C from show ports 14 years in the past, and every so often, this enjoyable under-explored alternative has been popping up in hackers’ tasks. We’ve even seen ready-to-go breakouts for getting I2C out of VGA ports shortly. And in case you go a bit additional, along with your I2C hacking expertise, you may even strip HDCP!
We thank [sellicott] and [leo60228] for sharing this with us!