- Présentation d’une méthode simple pour modifier l’EDID d’un plug factice HDMI à l’aide d’un Raspberry Pi
- Un plug factice sert à faire croire à un appareil qu’un moniteur est connecté, même sans périphérique d’affichage réel
- En copiant les informations EDID de celles d’un périphérique de capture 1080p, il est possible de configurer le plug pour qu’il ne soit pas détecté comme un moniteur 4K
- Le contenu de l’EEPROM du plug peut être lu et écrit avec le contrôleur I2C du Raspberry Pi et les outils Linux standard
- Tout au long du processus, il est indispensable de choisir le bon bus I2C et d’effectuer une sauvegarde afin d’éviter d’endommager le matériel
Vue d’ensemble des plugs factices et de l’EDID
- Un plug factice est un petit dongle que l’on branche sur un port HDMI ou DVI ; il n’effectue aucun traitement vidéo réel, mais grâce à un circuit minimal, il permet à l’appareil de détecter la connexion d’un moniteur
- Il contient notamment une puce EEPROM qui imite l’EDID (Extended Display Identification Data) d’un moniteur, ainsi que des résistances de pull-up reliées au +5V
- C’est utile sur des serveurs headless, des appareils sans supervision et d’autres systèmes où il faut que le système d’exploitation (OS) considère qu’un écran est présent
Objectif et approche
- Retour d’expérience sur le souhait de modifier l’EDID d’un plug factice HDMI compatible 4K existant afin qu’il soit reconnu comme un simple périphérique 1080p
- L’objectif était de remplacer l’EDID interne du plug factice par les informations EDID d’un périphérique de capture HDMI prenant en charge le 1080p
- Il n’était pas certain au départ que l’EEPROM du plug factice autorise l’écriture, mais cela valait la peine d’essayer
- Le port HDMI d’un Raspberry Pi Zero étant relié au contrôleur I2C, l’accès est simple
Précautions de sécurité et début de la procédure
- Si l’on effectue ce type de manipulation avec un vrai moniteur connecté, un écran dépourvu de protection EDID risque d’être endommagé
- Il faut impérativement n’intervenir que sur un appareil acceptable à sacrifier, comme un plug factice
- Il est également essentiel d’utiliser le bon bus I2C et, avant toute écriture, de lire et vérifier l’EDID au préalable
Configuration de l’environnement et préparation
- Installation de Raspberry Pi OS Lite, puis ajustement de la configuration avec
sudo raspi-config
- Installation des outils I2C avec
sudo apt install i2c-tools (sur un Pi Zero, un accès réseau est nécessaire ; on peut le contourner avec un adaptateur USB-Ethernet ou un chroot sur la carte SD)
- Utilisation nécessaire d’un adaptateur HDMI vers Mini-HDMI
Détection et sauvegarde de l’EEPROM EDID
- Sur un Raspberry Pi Zero, utilisation du bus I2C 2 (le numéro diffère selon les autres modèles de Pi)
- Vérification avec la commande
i2cdetect que le périphérique répond à l’adresse 0x50, l’adresse standard d’une EEPROM EDID
- Fait notable : les adresses 0x51 à 0x57 répondent également, ce qui correspond à une forme de stockage multiple de l’EDID
- Sauvegarde de l’EDID d’origine du plug factice avec
get-edid, puis double lecture pour comparer et vérifier la cohérence
- Affichage de l’EDID en hexadécimal avec
od -v -An -txC, puis validation avec edidreader.com
Extraction de l’EDID du périphérique de capture et écriture dans le plug
- Débrancher le plug factice, puis connecter le périphérique de capture HDMI au Pi
- Extraire l’EDID du périphérique de capture de la même manière, puis revérifier sa validité
- Reconnecter ensuite le plug factice et écrire l’EDID du périphérique de capture dans l’EEPROM
- L’écriture se fait octet par octet via la commande
i2cset, ce qui est possible uniquement avec les outils Linux standard et bash
Vérification finale et résultat
- Une fois l’opération terminée, réextraire l’EDID du plug factice et le comparer au fichier d’origine avec diff pour confirmer que le contenu correspond
- Une fois branché sur l’ordinateur de test, le système l’identifie non plus comme le moniteur 4K d’origine, mais comme le périphérique de capture HDMI
- Le remplacement de l’EDID du plug factice a donc été mené à bien
Conclusion et conseils d’usage
- La même procédure permettrait aussi de transformer un ancien plug factice 1080p en périphérique compatible 4K
- Il est recommandé d’effectuer les écritures I2C uniquement depuis un Raspberry Pi ; les faire directement depuis un PC classique présente un risque de dommage matériel
- Si vous avez besoin de cette fonctionnalité, cette procédure peut s’avérer utile
1 commentaires
Avis Hacker News