2025年12月30日 星期二

如何調整樹莓派 VNC Connect 遠端桌面螢幕為滿版

上週高雄家的樹莓派 Pi 3B 灌 Bulleye OS 滿血復活後, 將其移回鋼琴後面的原位置, 但用 VNC Cloud 連線遠端桌面時卻發現與之前測試時有接 HDMI 螢幕不同, 左右兩邊出現黑框而不是滿版 :




我詢問 ChatGPT 為什麼不接 HDMI 時螢幕沒有滿版, 原因如下 : 
  1. EDID 機制缺失 :
    樹莓派啟動時會讀取 HDMI 螢幕的 EDID (Extended Display Identification Data), EDID 告訴 Pi 支援的解析度和刷新率. 沒接螢幕 → Pi 讀不到 EDID → 無法決定解析度.
  2. Framebuffer fallback :
    沒有 EDID 時, X11 / Linux 會自動選擇安全的低解析度 (例如 640×480、1152×864), VNC Server 只是轉播 framebuffer, 畫面就自然變小.
  3. X11 與 Wayland 行為不同 :
    X11 legacy framebuffer 依賴 HDMI EDID → 沒螢幕解析度低, Wayland / KMS 可以自動建立虛擬顯示器 → 無 HDMI 也能滿版, 關掉 Wayland 後 Pi 就只能依靠 framebuffer → 問題更明顯.
  4. 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 螢幕都會呈現滿版螢幕. 

沒有留言 :