- Vorstellung einer einfachen Methode, die EDID eines HDMI-Dummy-Steckers mithilfe eines Raspberry Pi zu ändern
- Ein Dummy-Stecker dient dazu, dass ein Gerät erkennt, als wäre ein Monitor angeschlossen, obwohl kein echtes Ausgabegerät vorhanden ist
- Durch das Kopieren der EDID-Informationen eines 1080p-Capture-Geräts lässt sich einstellen, dass der Stecker nicht als 4K-Monitor angezeigt wird
- Mit dem I2C-Controller des Raspberry Pi und Standard-Linux-Tools kann das EEPROM des Steckers gelesen und beschrieben werden
- Während des gesamten Vorgangs sind die Wahl des richtigen I2C-Busses und ein Backup unerlässlich, um Geräteschäden zu vermeiden
Überblick über Dummy-Stecker und EDID
- Ein Dummy-Stecker ist ein kleines Dongle-artiges Gerät, das an einen HDMI- oder DVI-Port angeschlossen wird und ohne echte Bildverarbeitung mit einer Minimalbeschaltung dafür sorgt, dass ein Gerät eine Monitorverbindung erkennt
- Vorhanden sind ein EEPROM-Chip, der die EDID (Extended Display Identification Data) eines Monitors nachbildet, sowie Schaltungen wie Pull-up-Widerstände an +5V
- Das ist nützlich, damit das Betriebssystem (OS) erkennt, dass ein Display vorhanden ist, etwa bei Headless-Servern oder unbeaufsichtigten Geräten
Ziel und Vorgehensweise
- Geschildert wird die Erfahrung, die EDID eines vorhandenen HDMI-Dummy-Steckers mit 4K-Unterstützung so zu ändern, dass er nur noch als einfaches 1080p-Gerät erkannt wird
- Ziel war es, die interne EDID des Dummy-Steckers durch die EDID-Informationen eines HDMI-Capture-Geräts mit 1080p-Unterstützung zu ersetzen
- Es war nicht sicher, ob sich das EEPROM des Dummy-Steckers beschreiben lässt, aber ein Versuch erschien lohnenswert
- Da der HDMI-Port des Raspberry Pi Zero mit einem I2C-Controller verbunden ist, ist der Zugriff einfach
Sicherheitshinweise und Beginn des Verfahrens
- Wird ein solcher Vorgang bei angeschlossenem echten Monitor durchgeführt, besteht bei Monitoren ohne EDID-Schutz das Risiko von Schäden
- Deshalb sollte nur an Geräten gearbeitet werden, bei denen ein Defekt akzeptabel ist, etwa an einem Dummy-Stecker
- Außerdem sind die Verwendung des richtigen I2C-Busses sowie das vorherige Auslesen und Prüfen der EDID vor jedem Schreibvorgang zwingend erforderlich
Einrichtung und Vorbereitung
- Nach der Installation von Raspberry Pi OS Lite werden die Einstellungen mit
sudo raspi-config angepasst
- Installation der I2C-Tools mit
sudo apt install i2c-tools (beim Pi Zero ist dafür Netzwerk nötig; alternativ per USB-Ethernet-Adapter oder per chroot auf der SD-Karte)
- Ein HDMI-auf-Mini-HDMI-Adapter wird benötigt
Erkennung und Backup des EDID-EEPROMs
- Beim Raspberry Pi Zero wird I2C-Bus 2 verwendet (bei anderen Pi-Modellen ist die Nummer anders)
- Mit dem Befehl
i2cdetect wird geprüft, ob ein Gerät an Adresse 0x50 erkannt wird; das ist die Standardadresse für ein EDID-EEPROM
- Auffällig ist, dass auch die Adressen 0x51 bis 0x57 antworten, was auf mehrere gespeicherte EDID-Blöcke hinweist
- Mit
get-edid wird ein Backup der ursprünglichen EDID des Dummy-Steckers erstellt; zum Prüfen der Konsistenz wird zweimal gelesen und verglichen
- Mit
od -v -An -txC wird die EDID hexadezimal ausgegeben und anschließend auf edidreader.com validiert
EDID des Capture-Geräts auslesen und auf den Stecker schreiben
- Nach dem Abziehen des Dummy-Steckers wird das HDMI-Capture-Gerät an den Pi angeschlossen
- Die EDID des Capture-Geräts wird auf dieselbe Weise ausgelesen und erneut auf Gültigkeit geprüft
- Danach wird der Dummy-Stecker wieder angeschlossen und die EDID des Capture-Geräts in das EEPROM geschrieben
- Das Schreiben erfolgt Byte für Byte mit dem Befehl
i2cset, vollständig mit Standard-Linux-Tools und bash
Abschließende Prüfung und Ergebnis
- Nach Abschluss wird die EDID des Dummy-Steckers erneut ausgelesen und per diff mit der Quelldatei verglichen, um die Übereinstimmung zu bestätigen
- Beim Anschluss an den Testrechner wird das Gerät nicht mehr als ursprünglicher 4K-Monitor, sondern als HDMI-Capture-Gerät erkannt
- Der Austausch der EDID des Dummy-Steckers war damit erfolgreich
Fazit und praktische Hinweise
- Mit demselben Verfahren lässt sich auch ein älterer 1080p-Dummy-Stecker in ein 4K-fähiges Gerät umwandeln
- I2C-Schreibvorgänge sollten ausschließlich auf einem Raspberry Pi durchgeführt werden; ein direkter Versuch an einem normalen PC birgt das Risiko von Hardwareschäden
- Falls eine solche Funktion benötigt wird, kann dieses Verfahren sehr nützlich sein
1 Kommentare
Hacker-News-Kommentar
edid-Wert des PCs so zu manipulieren, dass die Soundbar ihn als eArc-Gerät erkennt. Es scheint dafür noch keine strengen Richtlinien zu gebenedid-Informationen lassen sich mit dieser Methode ändern. Verschiedene Einstellungen des TCON können ebenfalls durch Schreiben auf anderei2c-Adressen geändert werden. Ein Raspberry Pi ist dafür auch nicht nötig, jeder Computer reicht aus