3.6 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 open driver 590.48.01 (beta)
- Kernel: 6.18.8
- Compositor: Hyprland
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 (17-27 seconds after boot start):
[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
- NVIDIA open driver MST bugs - The open-source driver (
hardware.nvidia.open = true) has historically had more MST issues than the proprietary one - Power sequencing - The monitors may need more time to negotiate the MST link during cold boot
Potential Solutions
-
Switch to proprietary driver - Change
hardware.nvidia.open = falseinhosts/gunter/configuration.nix -
Add boot delay for nvidia-drm - Add kernel parameter
nvidia-drm.load_on_init=0to defer initialization -
Try different nvidia module options - Add to
boot.extraModprobeConfig:options nvidia-drm modeset=1 fbdev=1 options nvidia NVreg_PreserveVideoMemoryAllocations=1 -
Check monitor firmware - Samsung LS27A600U monitors have had MST firmware updates
-
Reduce link rate during boot - Lower refresh rate to 60Hz initially to reduce bandwidth requirements
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
Date Investigated
2025-02-06