首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当EDID不可用时,我如何使Linux表现得更好?

当EDID不可用时,我如何使Linux表现得更好?
EN

Ask Ubuntu用户
提问于 2012-10-14 19:03:12
回答 2查看 16.1K关注 0票数 7

我使用Mythbuntu12.04与电视,它只提供EDID信息时,它是打开。由于计算机将用于通过MythTV录制视频,所以我不想总是在计算机运行时打开电视。

我将EDID保存到一个文件中,将其放入/lib/固件中,并将drm_kms_helper.edid_firmware=DVI-I-1:LT26-A.VGA.EDID.bin添加到内核命令行。内核从这个文件加载EDID,X以正确的分辨率开始。但是,内核仍然尝试从设备中读取EDID,并使用如下消息发送日志:

代码语言:javascript
复制
[   31.926373] [drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 128
[   31.927144] Raw EDID:
[   31.927352]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.927882]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.928454]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.928984]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.929513]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.930042]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.930569]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.931097]          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   31.931630] radeon 0000:01:00.0: DVI-I-1: Ignoring invalid EDID block 1.
[   31.990143] i2c i2c-3: sendbytes: NAK bailout.
[   31.993215] [drm:radeon_dvi_detect] *ERROR* DVI-I-1: probed a monitor but no|invalid EDID
[   32.023802] [drm] Got external EDID base block and 0 extensions from "LT26-A.VGA.EDID.bin" for connector "DVI-I-1"
[   32.774355] i2c i2c-3: sendbytes: NAK bailout.

添加drm_kms_helper.edid_firmware选项也会在关闭或重新启动时造成很长的延迟。即使在显示器开着的时候也会发生。部分原因是对plymouth挂起一段时间的所有调用,可能是由于plymouthd挂起。这使得在关机时执行的脚本挂起一段时间。在关机时不运行plymouthd是有帮助的,但仍然存在延迟。

在拖延之后,我看到:

代码语言:javascript
复制
[drm:edid_load] *ERROR* Requesting EDID firmware "LT26-A.VGA.EDID.bin" failed (err=-2)

这会非常快地闪现,然后是启动屏幕或重新启动。我只能用相机录下来。这对我来说毫无意义,因为在延迟期间,计算机通过SSH完全可用。内核应该能够读取该文件。

我不认为这是普利茅斯问题。它可能是挂起的,因为某些视频模式改变了它所要求的挂。然而,我希望能够告诉普利茅斯总是保持在普通的VGA文本模式。

我还尝试了drm_kms_helper.poll=0drm_kms_helper.poll=N内核选项。他们可以根据/sys设置选项,但我看不出有什么变化。

添加nomodeset内核参数可以消除这些问题。但是,X服务器中当前版本的radeon驱动程序不能正常工作,新版本拒绝运行。

更新:将--tty=/dev/console添加到/etc/init/plymouth.conf关闭时对plymouthd的调用中已经修复了关机挂起,即使在关闭电视时也是如此。

EN

回答 2

Ask Ubuntu用户

发布于 2013-10-03 03:12:49

我没有完全相同的问题,但当我在打开的会话之间切换用户时,我发现了xorg的一些问题:

问题:我有与1600x1050的会话,并切换到以前使用相同1600x1050分辨率设置的另一个用户的会话。但是当我切换到这个会话时,屏幕会得到1280x1024,并且由于某种原因,会话的大小是非常错误的(它比屏幕分辨率还要大,我无法移动或单击大多数东西,因此我必须重新启动所有Xorg)。

解决办法:幸运的是,我找到了一些方法来以一种棘手的方式解决它:用您的解析文件更改分辨率文件名。

  1. 安装get-edid命令: sudo apt Install read-edid
  2. 创建一个包含edid信息的bin文件: sudo > 1600x1050.bin
  3. 创建一个存储此文件的文件夹: sudo mkdir /lib/固件/edid
  4. 复制文件: sudo cp 1600x1050.bin /lib/固件/edid
  5. 编辑grub编辑linux命令以kms: sudoedit /etc/ GRUB_CMDLINE_LINUX_DEFAULT="drm_kms_helper.edid_firmware=edid/1600x1050.bin /grub编辑行: name.bin静默“更改您的name.bin文件并运行sudoedit grub
  6. 重新启动和测试。

出于某种原因,它对我很管用。我有这张卡和司机:

弗格利克斯

显示:0屏幕:0

OpenGL供应商字符串:高级微设备公司。

OpenGL渲染器字符串: 6450

OpenGL版本字符串: 4.2.12002兼容性配置文件上下文9.012

运行命令后显示的下面的edid信息

# parse-edid < 1600x1050.bin

代码语言:javascript
复制
parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.

        # EDID version 1 revision 3
Section "Monitor"
        # Block type: 2:0 3:fc
        Identifier "22T41-H-AN"
        VendorName "KTC"
        ModelName "22T41-H-AN"
        # Block type: 2:0 3:fc
        # Block type: 2:0 3:fd
        HorizSync 15-68
        VertRefresh 49-61
        # Max dot clock (video bandwidth) 150 MHz
        # DPMS capabilities: Active off:no  Suspend:no  Standby:no

        Mode    "1280x720"      # vfreq 60.000Hz, hfreq 45.000kHz
                DotClock        74.250000
                HTimings        1280 1390 1430 1650
                VTimings        720 725 730 750
                Flags   "+HSync" "+VSync"
        EndMode
        Mode    "1680x1050"     # vfreq 59.883Hz, hfreq 64.674kHz
                DotClock        119.000000
                HTimings        1680 1728 1760 1840
                VTimings        1050 1053 1059 1080
                Flags   "-HSync" "+VSync"
        EndMode
        # Block type: 2:0 3:fc
        # Block type: 2:0 3:fd
EndSection

kernel.log:

代码语言:javascript
复制
2139 Oct  2 21:45:06 dans679-computer kernel: [    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.8.0-30-generic root=UUID=939b3111-4906-46ae-9ad7-7faa783d490d ro drm_kms_helper.edid_firmware=edid/1600x1050.bin quiet

我在寻找其他类似的错误报告,但仍在寻找正确的一个。我认为这个问题会影响到KMS (内核模式切换)中的许多东西,而不仅仅是用户会话之间的切换,还会影响到具有不同分辨率的全屏游戏和其他东西。

很难找到正确的方法来报告这个问题,我想让一些Xorg/Kernel团队提供一些帮助。

我认为可以在一些较低的级别上解决这个问题,但也可以以一些更简单的方式对用户进行修复:例如添加一些脚本来测试edid是否被检测到,询问用户是否希望让脚本获取edid信息并将其传递给内核命令,然后询问它是否正常工作,以及用户是否希望保留这些设置。

我在Arch wiki内核模式设置页面中找到了大部分这些信息

我把它贴在:

https://askubuntu.com/posts/352978

https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-ati/+bug/579292

票数 2
EN

Ask Ubuntu用户

发布于 2013-09-06 22:00:57

Edid必须从

代码语言:javascript
复制
00 FF FF FF FF FF FF 00

但不是128倍的FF。

您没有EDID,也许是因为它是擦除的,它不是带有EDID的芯片,或者是很有可能的,它在监视器或视频卡之间的EDID接口上断开了一些物理联系。甚至在你的显示器里。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/201081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档