M4 Mini 外置显示器重启后 分辨率重置问题
已经查清楚了。结论先给你:这次分辨率变成 800×600,不是某个软件或脚本“主动设置”的,而是屏幕重新上电时发生了一次热插拔抖动,系统没能读到显示器的 EDID(模式列表),于是触发了 macOS 自带的“安全模式回退”,最后落到了 800×600。
下面是我从系统日志里还原出的完整时间线(今天 09:34:50 附近,正好是你说的最近一次关屏再开屏):
09:34:50.731 屏幕重新上电,系统报
Display 1 hot plug in。这次 EDID 读取是成功的,显示器被正确识别为 Kuycon G27P,模式是 5120×2880,也就是你平时看到的 2560×1440(HiDPI)。09:34:51.109 显示器又立刻掉线了一次,日志报
Display 1 hot plug 0。这就是“上电瞬间热插拔抖动”。紧接着系统报出关键错误:
Preferred mode missing: display 0x1 pref=0x0No valid CA modes found for display 1
意思是:系统已经拿不到这个显示器的任何有效模式了。
09:34:51.723 前后,一个 1920×1080 的虚拟屏短暂顶了上来(这个是 BetterDisplay 创建的虚拟显示器)。
09:34:57.343 物理屏再次接入,但这次 EDID 没读全,被系统当成了 “Generic Display”(无 EDID 的通用显示器)。
系统开始按安全模式枚举低分辨率:
- 09:34:57.806 先设成 640×480
- 09:34:58.275 最终设成 800×600 @60Hz(RGB 8bit) ← 就是你看到的 800×600。
关于“是什么软件触发”:
- 我检查了安装的软件和后台项,没有发现 displayplacer、SwitchResX 这类专门改分辨率的工具,也没有任何脚本/定时任务去设置分辨率。
- 当时在跑的
Wine(wineloader/winedevice.exe)只是 Windows 运行环境里的设备守护进程,日志显示它们只是在重新枚举鼠标键盘,并没有调用改分辨率。 - 机器上确实装了 BetterDisplay,而且它当时在运行,还创建了虚拟屏;它也把这个“Generic Display(800×600)”记录成了一个新显示器。但真正把物理屏设成 800×600 的,是 macOS 在“读不到 EDID、没有可用模式”时的安全回退,不是 BetterDisplay 主动设置的分辨率。
一个很有力的佐证是,系统保存的显示配置里同时存在这两条:
- 真实屏
Kuycon G27P的配置是 2560×1440(HiDPI,Scale 2)——这是你的“原来分辨率”; - 另有一个新身份
Generic Display(UUID 是 CADA3176…)被存成了 800×600——这就是这次降级后的身份。
所以本质原因是连接层面的 EDID 握手失败,最可能是:显示器彻底断电后立刻开机造成的上电时序抖动,或者线材、接口、转接器/扩展坞接触不稳定。
建议你这样处理:
- 再正常开关一次显示器,或者把视频线(HDMI/DP)拔掉重插一下,让系统重新读到 EDID,通常会自动回到 2560×1440。
- 如果经常在“彻底关屏再开屏”后变成 800×600,重点检查视频线、接口和转接器;有条件换一条线或换一个口试试。
- 如果你在用 BetterDisplay 的虚拟屏功能,可以顺便检查它“断开物理屏时自动连接虚拟屏”的选项,避免物理屏掉线瞬间它把虚拟屏变成主屏、让画面看起来被替换。另外这台机器上的 BetterDisplay 目前程序文件不完整(缺少框架文件,命令行工具无法加载),如果你并不用它,建议修复或卸载,减少干扰因素。