Ubuntu 显示器分辨率问题修复:手动加载 EDID 固件
问题描述 在使用 Ubuntu(特别是 AMD GPU + 多显示器环境)时,可能遇到显示器无法识别正确分辨率的问题: 显示器只能使用低分辨率(如 1024x768) xrandr 显示物理尺寸为 0mm x 0mm 内核日志出现 EDID block 0 is all zeroes 错误 休眠恢复后显示器被错误识别 TL;DR 快速解决 # 1. 创建 EDID 固件目录 sudo mkdir -p /lib/firmware/edid # 2. 生成 EDID 文件(以 1920x1200 显示器为例) # 见下文 Python 脚本,生成后复制到 /lib/firmware/edid/ # 3. 配置 GRUB(替换 DP-X 为实际接口) sudo vim /etc/default/grub # 添加:drm.edid_firmware=DP-9:edid/dell_u2412m.bin # 4. 更新并重启 sudo update-grub && sudo reboot 诊断问题 检查显示器状态 # 查看当前显示器配置 xrandr # 查看物理尺寸(有问题的显示器会显示 0mm x 0mm) xrandr | grep -E "connected|mm" 检查内核日志 # 查看显卡信息 lspci | grep -i vga lspci -k | grep -A 3 -i vga # 检查内核日志中的 EDID 错误 sudo dmesg | grep -i "drm\|amdgpu\|edid" | tail -30 如果看到以下错误,说明 EDID 读取失败: ...