問題起因
Raspberry Pi 4 在不接螢幕(headless)的狀態下開機,有時會出現以下症狀:
- 開機後 SSH 連不進去,等很久才通
- 某些服務啟動異常或啟動順序錯亂
- CPU 使用率異常偏高
- 接上螢幕後一切正常,拔掉又出問題
根本原因在於 Raspberry Pi 的韌體預設會偵測 HDMI 熱插拔訊號。沒接螢幕時,韌體偵測不到顯示器,可能導致顯示輸出初始化卡住,進而拖累整個開機流程。
解法:修改 /boot/firmware/config.txt
只需要在設定檔加一行,強制韌體忽略 HDMI 偵測結果:
[all]
hdmi_force_hotplug=1這一行的意思是:不管有沒有偵測到螢幕,都當作有接螢幕處理。開機流程不再等待 HDMI 回應,SSH 也就能正常在預期時間內就緒。
如果需要指定解析度
某些情境下(例如 VNC 遠端桌面),你會希望系統以固定解析度輸出,而不是隨便給一個預設值。這時候加上 hdmi_group 和 hdmi_mode:
[all]
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=82hdmi_group=2 代表使用 DMT(電腦螢幕標準),hdmi_mode=82 對應 1920×1080 60Hz。如果不需要 VNC 或桌面環境,單獨一行 hdmi_force_hotplug=1 就夠了。
[pi4] 還是 [all]?
config.txt 支援條件區塊,可以針對不同機型套用不同設定:
[pi4]:只對 Raspberry Pi 4 生效[all]:所有機型通用
如果你只跑 Raspberry Pi 4,兩個寫法效果相同。放在 [all] 是最簡單的選擇,日後換機型也不用重新確認。
完整設定範例
# /boot/firmware/config.txt
[all]
hdmi_force_hotplug=1
# 若需要固定解析度(VNC 或桌面環境):
# hdmi_group=2
# hdmi_mode=82修改後重開機
存檔後執行:
sudo reboot重開後拔掉螢幕,SSH 應該能在正常時間內連上,不再有莫名卡頓。
補充:常用的 hdmi_mode 對照
| hdmi_mode | 解析度 | 更新率 |
|---|---|---|
| 35 | 1280×1024 | 60Hz |
| 51 | 1600×1200 | 60Hz |
| 82 | 1920×1080 | 60Hz |
| 85 | 1280×720 | 60Hz |
hdmi_group=2(DMT)適用於一般電腦螢幕;如果接的是電視,改用 hdmi_group=1(CEA)。
發佈留言