docs: add gunter monitor boot issue investigation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
104
docs/gunter-monitor-issues.md
Normal file
104
docs/gunter-monitor-issues.md
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
# 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`:
|
||||||
|
```nix
|
||||||
|
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
|
||||||
|
```bash
|
||||||
|
journalctl -k --no-pager | grep -iE '(nvidia|drm|display|edid|dp|hdmi|monitor)'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Kernel errors and warnings
|
||||||
|
```bash
|
||||||
|
journalctl -k --no-pager | grep -iE '(error|fail|warn)'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Current monitor state (Hyprland)
|
||||||
|
```bash
|
||||||
|
hyprctl monitors all
|
||||||
|
```
|
||||||
|
|
||||||
|
### DRM connector status
|
||||||
|
```bash
|
||||||
|
cat /sys/class/drm/*/status
|
||||||
|
ls -la /sys/class/drm/
|
||||||
|
```
|
||||||
|
|
||||||
|
### GPU and driver info
|
||||||
|
```bash
|
||||||
|
nvidia-smi --query-gpu=name,driver_version --format=csv,noheader
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check EDID data for each connector
|
||||||
|
```bash
|
||||||
|
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 settings
|
||||||
|
- `home/hosts/gunter/default.nix` - Hyprland monitor configuration
|
||||||
|
|
||||||
|
## Date Investigated
|
||||||
|
|
||||||
|
2025-02-06
|
||||||
Reference in New Issue
Block a user