The open nvidia driver had significant issues with DP MST displays, including flip event timeouts and kernel warnings. The proprietary driver handles MST failures more gracefully. Loading nvidia modules in initrd eliminates the ~22 second black screen during boot. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.1 KiB
Gunter Monitor Boot Issues
Problem Description
Two of the four monitors on gunter (desktop) intermittently fail to work on startup. The affected monitors are always the two Samsung LS27A600U displays, which are connected via DisplayPort daisy-chaining (MST - Multi-Stream Transport). Power cycling the monitors typically resolves the issue until the next reboot.
System Configuration
- GPU: NVIDIA GeForce RTX 3080 Ti
- Driver: NVIDIA proprietary driver 590.48.01 (beta)
- Kernel: 6.18.12
- Compositor: Hyprland
- Open driver:
false(switched from open to proprietary 2026-02-21) - Initrd nvidia modules:
nvidia,nvidia_modeset,nvidia_uvm,nvidia_drm
Monitor Setup
| Port | Monitor | Resolution | Connection |
|---|---|---|---|
| DP-1 | Acer XB271HU (center) | 2560x1440@120Hz | Direct |
| DP-3 | BenQ G2420HDBL (top) | 1920x1080@60Hz | Direct |
| DP-4 | Samsung LS27A600U (right) | 2560x1440@75Hz | Daisy-chained |
| DP-5 | Samsung LS27A600U (left) | 2560x1440@75Hz | Daisy-chained |
The GPU only has 3 DisplayPort outputs, so one Samsung monitor is connected to the other via DP daisy-chaining (MST).
Diagnostic Findings
Kernel Errors
The following errors appear in the kernel log during boot:
[drm:nv_drm_dev_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to add connector for NvKmsKapiDisplay 0x00000800
[drm:nv_drm_dev_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to get dynamic displays
"Dynamic displays" in NVIDIA terminology refers to MST-connected monitors. These errors indicate the driver is failing to enumerate the daisy-chained displays during initialization.
Root Cause Analysis
- MST timing issues - The downstream Samsung monitor isn't ready when the driver tries to enumerate the daisy chain during boot. The MST topology hasn't been negotiated yet when the driver first probes, regardless of how early or late it loads.
- Power sequencing - The monitors may need more time to negotiate the MST link during cold boot
Changes Made
2026-02-21: Switch to proprietary driver + initrd loading
Change 1: hardware.nvidia.open = false (previously true)
With the open driver, boot produced 7 errors including flip event timeouts and kernel WARNING stack traces:
Failed to add connector for NvKmsKapiDisplay 0x00000800
Failed to get dynamic displays
Flip event timeout on head 0
Flip event timeout on head 1
Failed to add encoder for NvKmsKapiDisplay 0x00000001
WARNING: CPU: 5 PID: 1169 at nvidia-drm/nvidia-drm-crtc.h:328 __nv_drm_handle_flip_event (x2)
With the proprietary driver, only the 2 MST enumeration errors remain. The flip timeouts and kernel warnings are gone. The driver handles the MST failure much more gracefully.
Change 2: Load nvidia modules in initrd (boot.initrd.kernelModules)
Without initrd loading, the nvidia driver took ~22 seconds to initialize (11s to first error, 10 more to give up on dynamic displays). During this time monitors lost signal and went to sleep.
With initrd loading, the driver loads and initializes in under 1 second. However, the same two MST errors still occur - the MST topology simply isn't ready yet regardless of timing.
Result: Subjectively improved - monitors now typically recover after a single power cycle instead of requiring multiple attempts. The boot process is also faster with no 20+ second black screen hang.
Remaining Solutions to Try
-
Display rescan service - Create a systemd service that triggers the nvidia driver to re-enumerate displays a few seconds after boot. This could auto-detect MST monitors without manual power cycling.
-
Remove
quiet splashfrom kernel params - Keeps console output active during boot, which maintains an active DP signal through the UEFI-to-kernel transition and may help keep the MST link alive. -
Check monitor firmware - Samsung LS27A600U monitors have had MST firmware updates. Updating could improve MST link negotiation reliability.
-
Reduce initial link rate - Lower refresh rate to 60Hz initially to reduce DP bandwidth requirements during MST negotiation, potentially making link training more reliable.
Useful Diagnostic Commands
Kernel logs for display/nvidia issues
journalctl -k --no-pager | grep -iE '(nvidia|drm|display|edid|dp|hdmi|monitor)'
Kernel errors and warnings
journalctl -k --no-pager | grep -iE '(error|fail|warn)'
Current monitor state (Hyprland)
hyprctl monitors all
DRM connector status
cat /sys/class/drm/*/status
ls -la /sys/class/drm/
GPU and driver info
nvidia-smi --query-gpu=name,driver_version --format=csv,noheader
Check EDID data for each connector
for f in /sys/class/drm/card1-DP-*/; do
echo "=== $(basename $f) ===";
cat "$f/enabled" 2>/dev/null;
cat "$f/edid" 2>/dev/null | xxd | head -5;
done
Related Configuration Files
hosts/gunter/configuration.nix- NVIDIA driver settingshome/hosts/gunter/default.nix- Hyprland monitor configuration