上週高雄家的樹莓派 Pi 3B 灌 Bulleye OS 滿血復活後, 將其移回鋼琴後面的原位置, 但用 VNC Cloud 連線遠端桌面時卻發現與之前測試時有接 HDMI 螢幕不同, 左右兩邊出現黑框而不是滿版 :
我詢問 ChatGPT 為什麼不接 HDMI 時螢幕沒有滿版, 原因如下 :
- EDID 機制缺失 :
樹莓派啟動時會讀取 HDMI 螢幕的 EDID (Extended Display Identification Data), EDID 告訴 Pi 支援的解析度和刷新率. 沒接螢幕 → Pi 讀不到 EDID → 無法決定解析度. - Framebuffer fallback :
沒有 EDID 時, X11 / Linux 會自動選擇安全的低解析度 (例如 640×480、1152×864), VNC Server 只是轉播 framebuffer, 畫面就自然變小. - X11 與 Wayland 行為不同 :
X11 legacy framebuffer 依賴 HDMI EDID → 沒螢幕解析度低, Wayland / KMS 可以自動建立虛擬顯示器 → 無 HDMI 也能滿版, 關掉 Wayland 後 Pi 就只能依靠 framebuffer → 問題更明顯. - VNC 不是解析度生成器 :
VNC 只傳播 Pi 當前 framebuffer, 解析度小 VNC 畫面也小, 無法靠 VNC 自行放大或補償
總之, 原因是不接 HDMI → 沒 EDID → framebuffer fallback → VNC 畫面變窄. 解決辦法是用 Xorg dummy driver 強制固定解析度.
首先編輯 /boot/config.txt 開機設定檔 :
pi@kaopi3:~ $ sudo nano /boot/config.txt
在尾端輸入如下設定 :
# ==== Force HDMI resolution for VNC (no monitor) ====
hdmi_force_hotplug=1
按 Ctrl+O 存檔後按 Ctrl+X 跳出 nano.
接下來建立 /etc/X11/xorg.conf.d y 資料夾 :
pi@kaopi3:~ $ sudo mkdir -p /etc/X11/xorg.conf.d
用 nano 在此資料夾下編輯一個 10-dummy-monitor.conf 設定檔 :
pi@kaopi3:~ $ sudo nano /etc/X11/xorg.conf.d/10-dummy-monitor.conf
輸入如下設定 :
Section "Device"
Identifier "DummyDevice"
Driver "dummy"
EndSection
Section "Monitor"
Identifier "DummyMonitor"
HorizSync 28.0-80.0
VertRefresh 50.0-75.0
Modeline "1920x1080_60.00" 173.00 1920 2040 2248 2576 1080 1083 1088 1120 -hsync +vsync
EndSection
Section "Screen"
Identifier "DummyScreen"
Device "DummyDevice"
Monitor "DummyMonitor"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080_60.00"
EndSubSection
EndSection
按 Ctrl+O 存檔後按 Ctrl+X 跳出 nano.
然後是安裝 xserver-xorg-video-dummy 套件, 先更新套件清單 :
pi@kaopi3:~ $ sudo apt update
已有:1 http://archive.raspberrypi.org/debian bullseye InRelease
已有:2 http://raspbian.raspberrypi.org/raspbian bullseye InRelease
正在讀取套件清單... 完成
正在重建相依關係... 完成
正在讀取狀態資料... 完成
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
安裝 xserver-xorg-video-dummy 套件 :
pi@kaopi3:~ $ sudo apt install xserver-xorg-video-dummy
正在讀取套件清單... 完成
正在重建相依關係... 完成
正在讀取狀態資料... 完成
下列【新】套件將會被安裝:
xserver-xorg-video-dummy
升級 0 個,新安裝 1 個,移除 0 個,有 3 個未被升級。
需要下載 18.4 kB 的套件檔。
此操作完成之後,會多佔用 43.0 kB 的磁碟空間。
下載:1 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf xserver-xorg-video-dummy armhf 1:0.3.8-1+b3 [18.4 kB]
取得 18.4 kB 用了 2s (10.2 kB/s)
選取了原先未選的套件 xserver-xorg-video-dummy。
(讀取資料庫 ... 目前共安裝了 120629 個檔案和目錄。)
正在準備解包 .../xserver-xorg-video-dummy_1%3a0.3.8-1+b3_armhf.deb……
Unpacking xserver-xorg-video-dummy (1:0.3.8-1+b3) ...
設定 xserver-xorg-video-dummy (1:0.3.8-1+b3) ...
最後重開機 :
pi@kaopi3:~ $ sudo reboot
再次連線就可以看到滿版的桌面了 :
經過這樣設定, 以後不管有沒有接 HDMI 螢幕都會呈現滿版螢幕.




沒有留言 :
張貼留言