Een Raspberry Pi 400 starten zonder monitor

Ik heb recentelijk een RPI400 aangeschaft. Dat is een Raspberry PI (4), maar dan in een keyboard gebouwd.

Raspberry Pi 400, BCM2711, Quad-Core, 64bit, ARM, Cortex-A72, Spanish

Dat is een heel leuk computertje, voor weinig geld, en ik wilde er eens mee spelen. Ik heb een monitor die ik voor mijn laptop gebruik via HDMI. Om te voorkomen dat ik telkens achter de monitor met kabeltjes moet prutsen heb ik een HDMI switch gekocht, zodat ik met een druk op de knop kan schakelen tussen de twee computers.

Nu blijkt er standaard een probleempje te zijn: als je de RPI opstart terwijl de switch nog in een andere stand staat heeft hij geen verbinding met de monitor, en zal hij de monitor niet detecteren. Dus laat hij de HDMI poort uit. Schakel je dan over, dan kijk je tegen een zwart scherm aan. Het enige nette dat je dan nog kunt doen, is via een andere computer een SSH verbinding opstarten en via het commando ‘sudo reboot’ een herstart geven, waarna het scherm wel wordt gedetecteerd. Dan gaat het verder goed. Dat moet natuurlijk beter kunnen, vond ik.

En dat kan ook.

De oorzaak van het probleem is dat de RPI alleen tijdens het booten de data van de monitor uitleest (EDID). Deze worden gebruikt om de beste instellingen te maken om de monitor aan te sturen. Je kunt deze data echter ook uitlezen met een commando, en naar een bestand schrijven. Dit bestand kun je vervolgens gebruiken om de HDMI poort te initialiseren, ook als er geen monitor aan hangt.

Je doet dit als volgt:

  1. Start een terminal sessie. Type het volgende commando:
    /opt/vc/bin/tvservice -d port0.edid
    DIt commando leest de EDID data uit, en schrijft het naar het bestand port0.edid. Dit staat in /home/pi
  2. Kopieer het bestand naar de /boot/ directory :
    sudo cp port0.edid /boot/
  3. Open het bestand /boot/config.txt met je favoriete editor (bijv. nano). Let op: je moet dit met root privileges doen, dus sudo nano /boot/config.txt.
  4. Zet hierin de volgende text regels:
    hdmi_edid_file=1
    hdmi_edid_filename:0=port0.edid

    Sla het bestand op en exit
  5. Reboot de RPI. Als het goed is, krijg je een scherm met dezelfde kenmerken als eerder.
  6. Reboot opnieuw, en trek nu de HDMI kabel los. Wacht een tijdje totdat de RPI is opgestart. (meestal binnen een minuut), en plug de HDMI kabel opnieuw in. Als het goed is. krijg je nu weer een beeld op je scherm.

Let op: dit werkt voor hdmi poort 0. Dat is de poort die naast het CF card slot zit. Voor poort 1 zal het ook wel werken, maar dan moet je de :0 na het command hdmi_edid_filename vervangen door :1. Dit heb ik verder echter niet meer geprobeerd.

De opties in het config.txt voor video staan hier beschreven:

https://www.raspberrypi.org/documentation/configuration/config-txt/video.md