如何在启动后将修改后的 EDID 加载到 RAM 中以修复有缺陷的显示器的 EDID 报告?

如何在启动后将修改后的 EDID 加载到 RAM 中以修复有缺陷的显示器的 EDID 报告?

我购买了几台 HP L1750 显示器,它们具有 VGA 和 DVI 输入。 VGA 输入工作没有问题。但是,DVI 输入仅在发生内核模式设置 (KMS) 之前有效,之后它声明未接收信号并进入睡眠模式。我测试了两台不同的 HP L1750 显示器,使用不同的 DVI 电缆和不同的 DVI 源提供程序(即不同的视频卡),并获得相同的行为。

我还尝试通过内核启动选项手动指定适当的分辨率,例如:

video=DVI-D-0:1280x1024@60e

以及手动配置xorg.conf(依赖于 的输出hwinfo --monitor)以:

Section "Device"
    Identifier  "DefaultDevice"
EndSection

Section "Monitor"
    Identifier  "DefaultMonitor"
    HorizSync   24-83
    VertRefresh 50-77
    Option      "TargetRefreshRate" "60"
    Option      "DDC"   "off"
    Option      "DPMS"  "off"
    Option      "DefaultModes"  "on"
    Option      "PreferredMode" "1280x1024"
EndSection

Section "Screen"
    Identifier  "DefaultScreen"
    Device      "DefaultDevice"
    Monitor     "DefaultMonitor"
EndSection

问题似乎是认为该显示器的 DVI 有缺陷,没有特殊的 Windows 驱动程序来修复它

如何确定合适的 EDID?启动后如何将其加载到 RAM 中?

编辑:

有关显卡、内核驱动、X驱动等信息:

$ inxi -Gxxxxx
Graphics:  Device-1: Advanced Micro Devices [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] 
           vendor: Micro-Star MSI driver: amdgpu v: kernel bus ID: 01:00.0 chip ID: 1002:67df 
           Display: x11 server: X.Org 1.20.4 driver: amdgpu unloaded: modesetting alternate: ati,fbdev,vesa 
           compositor: kwin_x11 resolution: 1920x1080~60Hz 
           OpenGL: renderer: AMD Radeon RX 470 Graphics (POLARIS10 DRM 3.30.0 5.1.4-arch1-1-ARCH LLVM 8.0.0) 
           v: 4.5 Mesa 19.0.5 direct render: Yes 

在方面xrandr,它声称 DVI-D-0 已断开连接(即使已连接并且显示器显示通过 DVI-D-0 pre-KMS 输出);我在这里列出了它通过 VGA 列出的模式(请注意,它通过 HDMI->VGA 转换器连接到 VGA,所以显示的实际上HDMI-A-1是 VGA 连接)

HDMI-A-1 connected 1280x1024+0+696 (normal left inverted right x axis y axis) 340mm x 270mm
   1280x1024     60.02 +  75.02* 
   1920x1080     60.00    59.94  
   1280x800      60.02  
   1152x864      75.00  
   1280x720      60.00    59.94  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32  
   720x480       60.00    59.94  
   640x480       75.00    72.81    60.00    59.94  
   720x400       70.08  
DVI-D-0 disconnected (normal left inverted right x axis y axis)

尝试手动设置显示xrandr似乎不起作用:

$ xrandr --output DVI-D-0 --mode 1280x1024
xrandr: cannot find mode 1280x1024

这样做xrandr --output DVI-D-0不会导致“无法找到模式”消息,但也不会通过 DVI 打开显示器。我尝试了xrandr --output DVI-D-0 --mode [...]上面列出的 VGA 连接的所有分辨率(从 1280x1024 到 720x400),所有结果都导致“找不到模式”消息。

EDIT2:Xorg.0.log与 EDID 相关的信息:

[    45.594] (II) AMDGPU(0): EDID for output HDMI-A-1
[    45.594] (II) AMDGPU(0): Manufacturer: HWP  Model: 26e9  Serial#: 16843009
[    45.594] (II) AMDGPU(0): Year: 2008  Week: 2
[    45.594] (II) AMDGPU(0): EDID Version: 1.3
[    45.594] (II) AMDGPU(0): Digital Display Input
[    45.594] (II) AMDGPU(0): Max Image Size [cm]: horiz.: 34  vert.: 27
[    45.594] (II) AMDGPU(0): Gamma: 2.40
[    45.594] (II) AMDGPU(0): DPMS capabilities: StandBy Suspend Off
[    45.594] (II) AMDGPU(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4 
[    45.594] (II) AMDGPU(0): Default color space is primary color space
[    45.594] (II) AMDGPU(0): First detailed timing is preferred mode
[    45.594] (II) AMDGPU(0): redX: 0.640 redY: 0.349   greenX: 0.284 greenY: 0.617
[    45.594] (II) AMDGPU(0): blueX: 0.142 blueY: 0.067   whiteX: 0.313 whiteY: 0.329
[    45.594] (II) AMDGPU(0): Supported established timings:
[    45.594] (II) AMDGPU(0): 720x400@70Hz
[    45.594] (II) AMDGPU(0): 640x480@60Hz
[    45.594] (II) AMDGPU(0): 640x480@72Hz
[    45.594] (II) AMDGPU(0): 640x480@75Hz
[    45.594] (II) AMDGPU(0): 800x600@60Hz
[    45.594] (II) AMDGPU(0): 800x600@72Hz
[    45.594] (II) AMDGPU(0): 800x600@75Hz
[    45.594] (II) AMDGPU(0): 832x624@75Hz
[    45.594] (II) AMDGPU(0): 1024x768@60Hz
[    45.594] (II) AMDGPU(0): 1024x768@70Hz
[    45.594] (II) AMDGPU(0): 1024x768@75Hz
[    45.594] (II) AMDGPU(0): 1280x1024@75Hz
[    45.594] (II) AMDGPU(0): 1152x864@75Hz
[    45.594] (II) AMDGPU(0): Manufacturer's mask: 0
[    45.594] (II) AMDGPU(0): Supported standard timings:
[    45.594] (II) AMDGPU(0): #0: hsize: 1280  vsize 1024  refresh: 60  vid: 32897
[    45.594] (II) AMDGPU(0): Supported detailed timing:
[    45.594] (II) AMDGPU(0): clock: 108.0 MHz   Image Size:  340 x 270 mm
[    45.594] (II) AMDGPU(0): h_active: 1280  h_sync: 1328  h_sync_end 1440 h_blank_end 1688 h_border: 0
[    45.594] (II) AMDGPU(0): v_active: 1024  v_sync: 1025  v_sync_end 1028 v_blanking: 1066 v_border: 0
[    45.594] (II) AMDGPU(0): Ranges: V min: 50 V max: 77 Hz, H min: 24 H max: 83 kHz, PixClock max 145 MHz
[    45.594] (II) AMDGPU(0): Monitor name: HP L1750
[    45.594] (II) AMDGPU(0): Serial No: CND8020JJG
[    45.594] (II) AMDGPU(0): Supported detailed timing:
[    45.594] (II) AMDGPU(0): clock: 27.0 MHz   Image Size:  160 x 90 mm
[    45.594] (II) AMDGPU(0): h_active: 720  h_sync: 736  h_sync_end 798 h_blank_end 858 h_border: 0
[    45.594] (II) AMDGPU(0): v_active: 480  v_sync: 489  v_sync_end 495 v_blanking: 525 v_border: 0
[    45.594] (II) AMDGPU(0): Number of EDID sections to follow: 1
[    45.594] (II) AMDGPU(0): EDID (in hex):
[    45.594] (II) AMDGPU(0):    00ffffffffffff0022f0e92601010101
[    45.594] (II) AMDGPU(0):    0212010380221b8ceedc55a359489e24
[    45.594] (II) AMDGPU(0):    115054adef8081800101010101010101
[    45.594] (II) AMDGPU(0):    010101010101302a009851002a403070
[    45.594] (II) AMDGPU(0):    1300540e1100001e000000fd00324d18
[    45.594] (II) AMDGPU(0):    530e000a202020202020000000fc0048
[    45.594] (II) AMDGPU(0):    50204c313735300a20202020000000ff
[    45.594] (II) AMDGPU(0):    00434e44383032304a4a470a202001b0
[    45.594] (II) AMDGPU(0):    02031b61230907078301000067030c00
[    45.594] (II) AMDGPU(0):    2000802d43908402e2000f8c0ad08a20
[    45.594] (II) AMDGPU(0):    e02d10103e9600a05a00000000000000
[    45.594] (II) AMDGPU(0):    00000000000000000000000000000000
[    45.594] (II) AMDGPU(0):    00000000000000000000000000000000
[    45.594] (II) AMDGPU(0):    00000000000000000000000000000000
[    45.594] (II) AMDGPU(0):    00000000000000000000000000000000
[    45.594] (II) AMDGPU(0):    00000000000000000000000000000029
[    45.594] (--) AMDGPU(0): HDMI max TMDS frequency 225000KHz
[    45.594] (II) AMDGPU(0): Printing probed modes for output HDMI-A-1
[    45.594] (II) AMDGPU(0): Modeline "1280x1024"x60.0  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz eP)
[    45.594] (II) AMDGPU(0): Modeline "1920x1080"x60.0  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (67.5 kHz e)
[    45.594] (II) AMDGPU(0): Modeline "1920x1080"x59.9  148.35  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (67.4 kHz e)
[    45.594] (II) AMDGPU(0): Modeline "1280x1024"x75.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz e)
[    45.594] (II) AMDGPU(0): Modeline "1280x800"x60.0  108.00  1280 1328 1440 1688  800 1025 1028 1066 +hsync +vsync (64.0 kHz e)
[    45.594] (II) AMDGPU(0): Modeline "1152x864"x75.0  108.00  1152 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz e)
[    45.594] (II) AMDGPU(0): Modeline "1280x720"x60.0   74.25  1280 1390 1430 1650  720 725 730 750 +hsync +vsync (45.0 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "1280x720"x59.9   74.18  1280 1390 1430 1650  720 725 730 750 +hsync +vsync (45.0 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "1024x768"x75.0   78.75  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.0 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "1024x768"x70.1   75.00  1024 1048 1184 1328  768 771 777 806 -hsync -vsync (56.5 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "1024x768"x60.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "832x624"x74.6   57.28  832 864 928 1152  624 625 628 667 -hsync -vsync (49.7 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "800x600"x72.2   50.00  800 856 976 1040  600 637 643 666 +hsync +vsync (48.1 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "800x600"x75.0   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "720x480"x60.0   27.03  720 736 798 858  480 489 495 525 -hsync -vsync (31.5 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "720x480"x59.9   27.00  720 736 798 858  480 489 495 525 -hsync -vsync (31.5 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "640x480"x75.0   31.50  640 656 720 840  480 481 484 500 -hsync -vsync (37.5 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "640x480"x72.8   31.50  640 664 704 832  480 489 492 520 -hsync -vsync (37.9 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "640x480"x60.0   25.20  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "640x480"x59.9   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e)
[    45.595] (II) AMDGPU(0): Modeline "720x400"x70.1   28.32  720 738 846 900  400 412 414 449 -hsync +vsync (31.5 kHz e)
[    45.595] (II) AMDGPU(0): EDID for output DVI-D-0
[    45.595] (II) AMDGPU(0): Output DisplayPort-0 connected
[    45.595] (II) AMDGPU(0): Output DisplayPort-1 disconnected
[    45.595] (II) AMDGPU(0): Output HDMI-A-0 connected
[    45.595] (II) AMDGPU(0): Output HDMI-A-1 connected
[    45.595] (II) AMDGPU(0): Output DVI-D-0 disconnected
[    45.595] (II) AMDGPU(0): Using user preference for initial modes
[    45.595] (II) AMDGPU(0): Output DisplayPort-0 using initial mode 1280x1024 +0+0
[    45.595] (II) AMDGPU(0): Output HDMI-A-0 using initial mode 1280x1024 +0+0
[    45.595] (II) AMDGPU(0): Output HDMI-A-1 using initial mode 1280x1024 +0+0
[    45.595] (II) AMDGPU(0): mem size init: gart size :ff973000 vram size: s:ff2e8000 visible:f2e8000
[    45.595] (==) AMDGPU(0): DPI set to (96, 96)
[    45.595] (==) AMDGPU(0): Using gamma correction (1.0, 1.0, 1.0)

答案1

初步回答:

1) 查看/var/log/Xorg.0.log接收到的解码后的 EDID。如果显示屏空白,请使用ssh虚拟控制台获取信息,或者连接具有 VGA 和 DVI 输出的显示器,甚至连接具有 VGA 和 DVI 的同一显示器。

同时,还可以编辑问题,其中包含它是什么显卡、它使用什么内核驱动程序以及它使用什么 X 驱动程序的信息。

还有一些替代方法也可以为您提供原始 EDID,例如read-edidDebian 软件包,或者/sys/devices/.../drm/card*/card*-*/edid在带有内核驱动程序的显卡上提供此信息。

2) 一旦您知道支持哪些模式,请在启动时或以其他方式尝试所有模式xrandrDISPLAY如果从ssh虚拟控制台执行此操作,则进行设置)。从最小模式开始。如果至少某些模式不起作用,我会感到惊讶。

3) 根据您的 X 驱动程序,有多种选项可以忽略 EDID(因为您可以直接指定所有信息xorg.conf),或提供您自己的 EDID。请阅读手册页中的内容,例如IgnoreEDIDCustomEDID

4) 如果您在 KMS 中需要正确的 EDID,则需要了解原始 EDID 格式,使用适合您的任何模式修复 EDID,然后您可以将原始 EDID 作为二进制文件放入 initramfs,/usr/lib/firmware/edid沿的行

drm_kms_helper.edid_firmware=edid/your_edid.bin
drm_kms_helper.edid_firmware=VGA-1:edid/your_edid.bin

祈祷它能成功,因为调试是很乏味的。

相关内容