본문 바로가기
Linux/RaspberryPi Server

[RaspberryPi] Booting 時 해상도 자동 설정

by 暻煥 2025. 9. 7.

              

※ 환경: Raspberry Pi 4B + Debian GNU/Linux 12


 

Pi OS는 WayLand를 Display Protocol(Server)로 사용한다.

그러므로, 부팅시 모니터에서 지원하는 특정한 해상도 및 주사율을 설정하기 위해서는 wayland 명령어를 이용한다.

 

즉, GUI를 통한 해상도 설정은 내부적으로 WayLand 명령어를 통해서 이루어진다.

 

현재 연결된 모니터의 가능한 해상도및 주사율을 확인하기 위해서는 아래 명령어를 사용한다.

$ wlr-randr
HDMI-A-1 "Samsung Electric Company SAMSUNG 0x01000E00 (HDMI-A-1)"
  Physical size: 1420x800 mm
  Enabled: yes
  Modes:
    720x400 px, 70.082001 Hz
    640x480 px, 59.939999 Hz
    640x480 px, 60.000000 Hz
    640x480 px, 66.667000 Hz
    640x480 px, 72.808998 Hz
    640x480 px, 75.000000 Hz
    720x480 px, 59.939999 Hz
    720x480 px, 60.000000 Hz
    720x576 px, 50.000000 Hz
    800x600 px, 60.317001 Hz
    800x600 px, 72.188004 Hz
    800x600 px, 75.000000 Hz
    832x624 px, 74.551003 Hz
    1024x768 px, 60.004002 Hz
    1024x768 px, 70.069000 Hz
    1024x768 px, 75.028999 Hz
    1280x720 px, 50.000000 Hz
    1280x720 px, 59.939999 Hz
    1280x720 px, 60.000000 Hz
    1280x720 px, 60.000000 Hz
    1152x864 px, 75.000000 Hz
    1280x800 px, 59.910000 Hz
    1440x900 px, 59.901001 Hz
    1280x1024 px, 60.020000 Hz
    1280x1024 px, 75.025002 Hz
    1600x900 px, 60.000000 Hz
    1680x1050 px, 59.882999 Hz
    1920x1080 px, 23.976000 Hz
    1920x1080 px, 24.000000 Hz
    1920x1080 px, 25.000000 Hz
    1920x1080 px, 29.969999 Hz
    1920x1080 px, 30.000000 Hz
    1920x1080 px, 50.000000 Hz
    1920x1080 px, 59.939999 Hz
    1920x1080 px, 60.000000 Hz
    1920x1080 px, 60.000000 Hz (current)
    2560x1440 px, 59.951000 Hz
    3840x2160 px, 23.976000 Hz
    3840x2160 px, 24.000000 Hz
    3840x2160 px, 25.000000 Hz
    3840x2160 px, 29.969999 Hz
    3840x2160 px, 30.000000 Hz
    4096x2160 px, 23.976000 Hz
    4096x2160 px, 24.000000 Hz
    4096x2160 px, 29.969999 Hz
    4096x2160 px, 30.000000 Hz
    3840x2160 px, 30.000000 Hz (preferred)
  Position: 0,0
  Transform: normal
  Scale: 1.000000

 

연결된 모니터의 해상도 및 주사율을 변경하는 명령어는 아래와 같다.

(1920x1080 해상도 + 60Hz 주사율)

$ wlr-randr --output "HDMI-A-1" --mode "1920x1080@60"

 


 

1920x1080 해상도에서 지원하는 주사율 中,

가장 높은 주사율을 선택하는 Bash Script는 아래처럼 작성한다. (파일 이름: ~/set-best-resolution.sh)

#!/bin/bash

# 디스플레이 이름
OUTPUT="HDMI-A-1"

# 타겟 해상도
RESOLUTION="1920x1080"

# wlr-randr 출력에서 1920x1080 해상도 중 Hz 추출 → 내림차순 정렬 → 가장 높은 주사율 추출
BEST_MODE=$(wlr-randr --output "$OUTPUT" | \
  grep "$RESOLUTION px" | \
  awk '{ print $3 }' | \
  sort -nr | \
  head -n 1)

# 확인 및 적용
if [ -n "$BEST_MODE" ]; then
  echo "Applying best mode: $RESOLUTION@$BEST_MODE"
  wlr-randr --output "$OUTPUT" --mode "$RESOLUTION@$BEST_MODE"
else
  echo "No matching resolution $RESOLUTION found."
fi

 

每 부팅마다 해당 설정이 자동으로 적용되기 위해서는 service로 등록한다.

아래 명령어로 set-resolution.desktop 파일을 만들고,

mkdir -p ~/.config/autostart
vim ~/.config/autostart/set-resolution.desktop

 

set-resolution.desktop 파일은 다음과 같이 작성한다.

[Desktop Entry]
Type=Application
Exec=/home/YOUR_USERNAME/set-best-resolution.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Auto Set Resolution
Comment=Auto selects highest Hz for 1920x1080

 


 

※ 참고 및 출처

https://raspberrypi.stackexchange.com/questions/144876/forcing-hdmi-output-on-bookworm