HDMI Fuzzer.

Onder bepaalde omstandigheden kan het handig zijn om een PC zonder toetsenbord en beeldscherm te hebben draaien.
Je maakt dan contact met deze PC via "remote desktop" of VNC.

Als de PC dan opstart wordt er door het Operating System messatl een VGA-scherm ingesteld met een erg lage resolutie.
Als je dan vervolgens met VNC contact maakt, dan is het niet meer mogelijk om de schermresolutie naar wens aan te passen.

Bij mij trad dat probleem op bij een mini-PC met HDMI uitgang.  Om dit probleem op te lossen is een "HDMI fuzzer" gemaakt (zie afbeelding).  Dit apparaatje simuleert een LG-televisie met HDMI input.

Bij het opstarten van een PC wordt via de HDMI-kabel data verkregen van de aangesloten monitor.  De data bestaat uit 2 blokken van 128 bytes.  De datauitwisseling gaat via het I2C-protocol.  De Fuzzer bestaat uit een "Arduino Pro Mini" (zie afbeelding) die luistert naar dit protocol en informatie terugstuurt die overeenkomt met de gegevens van een LG-televisie.
De voeding voor de Arduino wordt verzorgd door de in de HDMI-aansluiting aanwezige 5 Volt.

Voor de software in de Arduino wordt geen gebruik gemaakt van de standaard "wire"-bibliotheek.  Bij testen bleek dat deze het I2C-protocol niet goed volgde: "repeated start" werd niet ondersteund.  Daarom is gekozen voor een programma in assember, zonder gebruik van libraries.

De sourcecode is hier beschikbaar.  De source is voorzien van veel commentaar om de werking te verduidelijken.

Later bleek dat ook het ontbreken van een muis nadelige gevolgen heeft bij het gebruik van VNC: de cursor wordt dan niet weergegeven.  Dit was eenvoudig op te lossen door een "nano ontvanger" van een draadloze muis in een vrije USB-poort te steken.

fuzzerbox      promini