Ubuntu Nvidia Hölle

Es gibt eine ganz spezielle Art von Hölle, die für Techies reserviert ist: Einen voll funktionsfähigen 1920×1080 Monitor zu haben, der im unscharfen 1024×768 Fallback-Modus feststeckt. In den letzten Monaten war mein Haupt-PC im Grunde ein Briefbeschwerer. Ich habe drei separate NVIDIA-Treiber-Updates miterlebt, in der Hoffnung, dass jedes das „Handshake“-Problem beheben würde. Keines tat es.

Wenn du Ubuntu mit Wayland auf einer NVIDIA GeForce GTX 960 (Maxwell-Generation) nutzt und dein Monitor als „Unbekannt“ erkannt wird, erfährst du hier, wie ich meinen Desktop schließlich zurückerobert habe.

Der Übeltäter: Maxwell, neue Kernel und fehlerhafte Firmware

Die Ursache des Problems war eine Verkettung unglücklicher Umstände: Eine NVIDIA GTX 960 (Maxwell-Architektur) gepaart mit einem neueren Linux-Kernel und fehlerhafter Firmware. Diese Kombination führte zu einem völligen Zusammenbruch des EDID-Handshakes (Extended Display Identification Data).

Die Systemprotokolle (dmesg) beglückten mich mit dieser Fehlermeldung:
nvidia-modeset: WARNING: GPU:0: Unable to read EDID for display device HDMI-0

Da die Firmware die Identität des Monitors nicht auslesen konnte, ging das System auf Nummer sicher und versetzte mich in einen 1024×768 „Safe Mode“ anstatt des nativen 1080p.

Was ich versucht habe (und warum ich X11 ignoriert habe)

Ich wollte keine provisorische Lösung. Ich habe explizit alle X11-exklusiven Lösungen wie xrandr vermieden, da ich zukunftssicher mit Wayland bleiben wollte. Hier ist, was alles fehlgeschlagen ist:

  • Der Nouveau-Treiber: Ich habe mehrfach versucht, auf die Open-Source-Nouveau-Treiber umzusteigen. Es war ein totaler Reinfall – das System bootete überhaupt nicht mehr in eine grafische Benutzeroberfläche (GUI).
  • Warten auf offizielle Fixes: Ich habe monatelang auf drei Treiber-Updates gewartet. Es wurde klar, dass die Software einen Kommunikationsfehler auf Firmware-Ebene zwischen der GTX 960 und dem Kernel nicht beheben würde.
  • Manuelle Bearbeitung der monitors.xml: Ich habe versucht, GNOME die korrekte Auflösung über die Konfigurationsdatei „aufzuzwingen“, aber da der Kernel nicht glaubte, dass die Hardware 1080p unterstützt, ignorierte Wayland die Datei vollständig.

Der Lebensretter: SSH zur Rettung

Experimentelles Herumschrauben am Display ist gefährlich. Mehrere meiner Versuche endeten in einem schwarzen Bildschirm – kein Cursor, kein Terminal, keine Hoffnung.

Glücklicherweise lief auf dem Rechner ein SSH-Server. Dies erlaubte mir, mich von meinem Laptop aus remote einzuloggen, meine fehlerhaften Änderungen rückgängig zu machen und wieder einen funktionierenden (wenn auch niedrig aufgelösten) Bildschirm zu erhalten, ohne zu drastischeren Mitteln greifen zu müssen.

Die Lösung: Die „Fake“-EDID-Injektion

Da die Hardware nicht miteinander kommunizieren konnte, beschloss ich, dem System einen funktionierenden Monitor zu „halluzinieren“. Wir können ein generisches 1080p-Profil bereitstellen und dem Kernel sagen, dass er es so verwenden soll, als käme es vom Monitor selbst.

1. Die Fake-Identität erstellen

Ich habe eine generische 1080p-EDID-Binärdatei verwendet, die einen perfekten Monitor beschreibt.

sudo mkdir -p /lib/firmware/edid
sudo wget [https://github.com/akatrevorjay/edid-generator/raw/master/1920x1080.bin](https://github.com/akatrevorjay/edid-generator/raw/master/1920x1080.bin) -O /lib/firmware/edid/1920x1080.bin

2. GRUB konfigurieren (Die Kernel-Ebene)

Hier umgehen wir die Verwirrung des Treibers. Beachte, dass NVIDIA den Port zwar HDMI-0 nennt (im obigen Fehlerprotokoll), der Kernel (DRM) ihn jedoch als HDMI-A-1 bezeichnet. Du musst den Kernel-Namen verwenden.

  1. Öffnen Sie die Konfiguration: sudo vim /etc/default/grub
  2. Aktualisieren Sie die Boot-Zeile, um das Modesetting zu erzwingen und auf unsere „Fake“-Firmware zu verweisen:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1 drm.edid_firmware=HDMI-A-1:edid/1920x1080.bin video=HDMI-A-1:1920x1080@60e"

3. Bestätigen und Neustarten

Du musst die EDID in die initiale RAM-Disk einbetten, damit der Treiber sie sofort beim Booten sieht.

sudo update-grub
sudo update-initramfs -u
sudo reboot

Das Ergebnis

Nach monatelangem Warten auf ein Firmware-Update, das nie kam, bootete meine GTX 960 schließlich im erwarteten, nativem 1920×1080 unter Wayland. Indem wir den EDID-Handshake selbst in die Hand genommen haben, konnten wir den Maxwell/Kernel-Bug vollständig umgehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert