咸来无事俺买了一块屏幕打算diy个显示器,又买了显示器壳子和驱动板,装好之后使用vga接口,分辨率无论如何都是一个奇怪的数值和比例,但是使用hdmi接口就没有问题。
起初我还以为是vga接口带宽上限的问题,但是1080P60Hz是没有问题的,之后我又怀疑是vga线的问题,问了店家之后也确定了线没有问题,于是开始大量的上网冲浪,终于找到了问题所在以及解决办法。
写下这篇文章只是为了记录一下,万一下次会用到(毕竟换系统以后要重新做一次,而我的上一个系统盘悲壮地裂开了,做好的文件都找不到了,还得重新再冲浪一次,555555,而且上次冲浪看到的好多文章都找不到了,我还是靠着一丢丢的记忆来弄的,究极折磨
答:EDID
详见:EDID的简介和解析
总之就是读取显示器内的EDID数据,视频输出端再依据EDID内提供的各种信息来决定如何输出,数据中就包括了分辨率,因此只需要对EDID动一些手脚就可以了
EDID大概了解一下就可以了,不用完全深入,借助一些优秀的软件就可以完成可视化修改了。
在N卡的控制面板里面可以自己添加分辨率,但是我多次尝试之后,修改的也只是显示分辨率,而非显示器的输出分辨率。在某些情况下这个功能还是勉强可用的,先记下来。
为了继续定位问题,当然是要把EDID数据读出来看一下是不是问题所在。在Windows系统中,edid数据会从显示器中读取后最终被加载到注册表,edid相关的软件几乎都可以从注册表中读取,推荐软件是:
Monitor Asset Manager(写入必备,可以查看edid的总体报告)
AW EDID Editor(可视化很强,win10系统兼容性很好)
至于其他软件就暂时不考虑了,有的软件证书过期,完全打不开,有的软件在win10下窗口显示不全,有的只能编辑HEX,并不友好。
安装好Monitor Asset Manager之后,查看对应显示器的信息,例如我的:
可以看到,native/preferred 竟然是1280x1024,下面支持的列表中也没有1080P,那么问题就是出自这里了。
如果你不确定哪个文件对应哪个显示器的话,带有[Real-time]的是正在使用的,[Registry-Active]是当前使用的对应的注册表项,[Registry]是曾经插过的,[Sample]不用管。
或者打开设备管理器(Win+X M对应项),找到监视器类,展开以后打开对应项的属性,在事件面板中可以看到显示器名称
如果使用AW EDID Editor来打开的话,这个名称可以帮你很好地定位。
确定了问题所在,那么就可以开始修改了,在AW EDID Editor中打开需要修改的条目,如果不确定的话可以从Monitor Asset Manager中读取导出.bin文件,再在AW EDID Editor中打开修改,具体修改思路可以参考EDID总结,但还是请按需修改,必要时请回看EDID的简介和解析。
我的这个情况我可以把相同显示器hdmi口下的数据导出来做为参考来修改,但还请实际问题实际分析。
将修改好的数据导出为.bin文件,在Monitor Asset Manager中打开查看修改后的数据是否正确,如果没问题,就可以进入下一步。
在Monitor Asset Manager中导出为inf文件,然后依次进入:
设备管理器——监视器——打开对应的显示器的属性——驱动程序选项卡 更新驱动程序——浏览我的电脑以查找——让我从计算机上的可用驱动程序列表中选取——从磁盘安装——浏览——选择对应inf文件——安装(如果因为驱动未签名而不能安装,请参考INF不包含数字签名问题)——重启电脑 即可
这个方法在换了系统之后会失效,所以最好是保留做好的inf文件,以便在新系统中安装。
另外,我试过直接修改注册表(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\显示器名称\xxxx\Device Parameters下的EDID的值)(因为当时没能找到能生成inf文件的程序,自己又懒得按教程手写inf),并没有生效,猜测是因为没有把所有要修改的条目都改了。
edid可以直接写入回显示器中,但是由于我没有设备,请懂硬件的自行测试。
巨硬这边也有官方文档,关于自制inf文件的,有需要的自行操作。
zh-CN:Monitor Edid 的制造商替代
en-US:Manufacturer override of monitor EDIDs
n卡的专业卡的控制面板中自带edid写入功能,参考:
直通RTX8000显卡,vnc连接双屏画面
mac也会遇到需要修改edid的情况,参考我找不到了