This repository has been archived on 2026-03-10. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
nixos/docs/gunter-monitor-issues.md
Torjus Håkestad 605029fba7
All checks were successful
Run nix flake check / flake-check (push) Successful in 2m15s
Periodic flake update / flake-update (push) Successful in 1m17s
docs: add gunter monitor boot issue investigation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 20:54:12 +01:00

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

  1. MST timing issues - The downstream Samsung monitor isn't ready when the driver tries to enumerate the daisy chain during boot
  2. NVIDIA open driver MST bugs - The open-source driver (hardware.nvidia.open = true) has historically had more MST issues than the proprietary one
  3. Power sequencing - The monitors may need more time to negotiate the MST link during cold boot

Potential Solutions

  1. Switch to proprietary driver - Change hardware.nvidia.open = false in hosts/gunter/configuration.nix

  2. Add boot delay for nvidia-drm - Add kernel parameter nvidia-drm.load_on_init=0 to defer initialization

  3. Try different nvidia module options - Add to boot.extraModprobeConfig:

    options nvidia-drm modeset=1 fbdev=1
    options nvidia NVreg_PreserveVideoMemoryAllocations=1
    
  4. Check monitor firmware - Samsung LS27A600U monitors have had MST firmware updates

  5. 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
  • hosts/gunter/configuration.nix - NVIDIA driver settings
  • home/hosts/gunter/default.nix - Hyprland monitor configuration

Date Investigated

2025-02-06