Skip to content

Instantly share code, notes, and snippets.

@chaeya
Created September 3, 2025 04:17
Show Gist options
  • Save chaeya/2ab405c2837dbc0e017d6557aa347a60 to your computer and use it in GitHub Desktop.
Save chaeya/2ab405c2837dbc0e017d6557aa347a60 to your computer and use it in GitHub Desktop.
NVIDIA RTX 5060 Ti + LG ULTRAWIDE 모니터 디스플레이 문제 해결 가이드

NVIDIA RTX 5060 Ti + LG ULTRAWIDE 디스플레이 문제 해결 가이드

문제 상황

환경

  • 그래픽카드: NVIDIA RTX 5060 Ti (GB206-A)
  • 모니터: LG ULTRAWIDE 3440x1440
  • 연결: HDMI 분배기/스플리터 사용
  • 운영체제: HamoniKR (Ubuntu 24.04 기반)
  • 데스크톱: XFCE, Cinnamon

발생한 문제들

  1. lightdm 로그인 화면은 보이지만 데스크톱 환경 로그인 후 화면이 검은색으로 표시
  2. 해상도 자동 변경: 시스템이 지속적으로 해상도를 59.97Hz, 60Hz로 변경 시도
  3. 분배기 EDID 제한: 분배기/스플리터로 인한 EDID 정보 제한으로 불안정한 해상도
  4. Cinnamon compositor 충돌: ForceCompositionPipeline 등 NVIDIA 옵션과 Mutter 충돌

근본 원인 분석

1. NVIDIA 드라이버 인식 방식

  • NVIDIA 드라이버: 모니터를 DFP-0로 인식
  • xrandr: 동일 모니터를 HDMI-0으로 표시
  • 설정 파일에서 잘못된 출력 장치 지정시 화면 출력 불가

2. EDID 정보 제한

  • 분배기/스플리터 사용으로 모니터 EDID 정보 손상
  • 시스템이 지원하지 않는 60Hz 해상도로 자동 변경 시도
  • 30Hz로 제한하면 안정적 동작

3. 자동 해상도 조정 메커니즘

lightdm 시작 → 데스크톱 환경 로딩 → EDID 재감지 → 해상도 자동 변경 시도
  • 각 단계에서 "최적" 해상도로 변경하려는 자동 조정 발생
  • 결과적으로 불안정한 30Hz → 60Hz → 30Hz 반복

해결 방법

1. NVIDIA Xorg 설정 고정

파일: /etc/X11/xorg.conf.d/10-nvidia.conf

Section "Device"
    Identifier "NvidiaCard"
    Driver "nvidia"
    BusID "PCI:1:0:0"
    Option "PrimaryGPU" "yes"
    Option "AllowEmptyInitialConfiguration" "true"
    Option "UseDisplayDevice" "DFP-0"
    Option "TripleBuffer" "true"
    Option "RenderAccel" "true"
    Option "MetaModes" "DFP-0: 3440x1440_30 +0+0"
    Option "ModeValidation" "NoMaxPClkCheck"
    Option "ExactModeTimingsDVI" "true"
    Option "Coolbits" "28"
    Option "AllowIndirectGLXProtocol" "off"
EndSection

Section "Monitor"
    Identifier "Monitor0"
    HorizSync 30.0 - 90.0
    VertRefresh 25.0 - 35.0
    Option "PreferredMode" "3440x1440_30"
    Option "DPMS" "true"
    Modeline "3440x1440_30" 174.50 3440 3488 3520 3600 1440 1443 1453 1474 -hsync +vsync
EndSection

Section "Screen"
    Identifier "Screen0"
    Device "NvidiaCard"
    Monitor "Monitor0"
    DefaultDepth 24
    Option "TwinView" "0"
    Option "metamodes" "DFP-0: 3440x1440_30 +0+0"
    Option "ConnectedMonitor" "DFP-0"
    SubSection "Display"
        Depth 24
        Modes "3440x1440_30"
    EndSubSection
EndSection

Section "ServerLayout"
    Identifier "Layout0"
    Screen 0 "Screen0"
    Option "BlankTime" "0"
    Option "StandbyTime" "0"
    Option "SuspendTime" "0"
    Option "OffTime" "0"
EndSection

2. lightdm 시작 스크립트 설정

파일: /etc/lightdm/lightdm.conf

[Seat:*]
xserver-command=X -core
minimum-vt=7
display-setup-script=/home/사용자명/nvidia-issue/setup-display.sh

스크립트 파일: /home/사용자명/nvidia-issue/setup-display.sh

#!/bin/bash
export DISPLAY=:0

# NVIDIA 설정 재적용
nvidia-settings --load-config-only

# DFP-0으로 NVIDIA가 인식하므로 nvidia-settings으로 설정
nvidia-settings -a "[gpu:0]/GPUScaling=0"
nvidia-settings -a "[DPY:DFP-0]/Dithering=0"

# 로그 기록
echo "$(date): Display set to 3440x1440@30Hz" >> /tmp/display-setup.log

3. 자동 시작 프로그램 설정

파일: /home/사용자명/.config/autostart/display-fix.desktop

[Desktop Entry]
Name=Display Resolution Fix
Comment=Force 3440x1440@30Hz resolution
Exec=/home/사용자명/nvidia-issue/maintain-display.sh setup
Icon=preferences-desktop-display
Type=Application
X-GNOME-Autostart-enabled=true
NoDisplay=true

4. 유지보수 스크립트

파일: /home/사용자명/nvidia-issue/maintain-display.sh

#!/bin/bash
# NVIDIA RTX 5060 Ti + LG ULTRAWIDE 3440x1440@30Hz 유지 스크립트

export DISPLAY=:0

# 함수: 현재 해상도 확인
check_resolution() {
    local current_mode=$(xrandr | grep "HDMI-0 connected" | grep -o "[0-9]*x[0-9]*")
    local current_rate=$(xrandr | grep "HDMI-0 connected" -A1 | grep "\*" | grep -o "[0-9]*\.[0-9]*")
    
    echo "현재 해상도: $current_mode @ ${current_rate}Hz"
    
    if [[ "$current_mode" == "3440x1440" ]] && [[ "${current_rate%.*}" == "29" ]]; then
        return 0  # 정상
    else
        return 1  # 비정상
    fi
}

# 함수: 30Hz 해상도 설정
set_30hz_resolution() {
    echo "$(date): 3440x1440@30Hz 해상도 설정 중..."
    xrandr --output HDMI-0 --mode 3440x1440 --rate 29.99
    sleep 1
    
    if check_resolution; then
        echo "$(date): 해상도 설정 완료"
        return 0
    else
        echo "$(date): 해상도 설정 실패"
        return 1
    fi
}

# 메인 실행부
case "${1:-setup}" in
    "setup")
        echo "=== NVIDIA 디스플레이 설정 초기화 ==="
        set_30hz_resolution
        ;;
    "check")
        echo "=== 현재 디스플레이 상태 확인 ==="
        check_resolution
        xrandr | head -5
        ;;
    "force")
        echo "=== 강제 해상도 복원 ==="
        set_30hz_resolution
        ;;
    *)
        echo "사용법: $0 {setup|check|force}"
        echo "  setup  : 초기 해상도 설정"
        echo "  check  : 현재 상태 확인"
        echo "  force  : 강제 해상도 복원"
        ;;
esac

문제 해결시 사용할 명령어

화면이 안 보일 때 (SSH 접속 후)

# 강제 해상도 복원
/home/사용자명/nvidia-issue/maintain-display.sh force

# lightdm 재시작
sudo systemctl restart lightdm

정상 작동 확인

# 현재 상태 확인
/home/사용자명/nvidia-issue/maintain-display.sh check

# 간단한 해상도 확인
xrandr | head -3

기술적 세부사항

NVIDIA vs xrandr 인식 차이

  • NVIDIA 드라이버: DFP-0 (Digital Flat Panel-0)
  • xrandr: HDMI-0 (HDMI 포트 인식)
  • 실제로는 같은 물리적 연결이지만 서로 다른 식별자 사용

30Hz vs 60Hz 선택 이유

  • 60Hz: 이론적으로 더 부드러운 화면, 하지만 분배기 환경에서 불안정
  • 30Hz: 분배기 대역폭 제한에 안정적으로 동작, GPU 연산 작업에는 충분

자동 해상도 변경 패턴

lightdm 시작(30Hz) → 로그인(60Hz 시도) → 스크립트 복원(30Hz) → 
데스크톱 로딩(60Hz 시도) → 자동시작 복원(30Hz) → 안정화

적용 결과

  • ✅ lightdm 로그인 화면 정상 표시
  • ✅ XFCE 데스크톱 환경 정상 작동
  • ✅ Cinnamon 데스크톱 환경 정상 작동
  • ✅ 3440x1440@30Hz 해상도 안정적 유지
  • ✅ 자동 해상도 변경 방지

이 설정은 NVIDIA RTX 5060 Ti와 HDMI 분배기/스플리터 환경에서 LG ULTRAWIDE 모니터를 사용하는 경우에 특히 효과적입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment