dre*_*ers 7 plymouth kernel graphics radeon drivers
我将 Mythbuntu 12.04 与电视一起使用,该电视仅在打开时提供EDID信息。由于计算机将用于通过 MythTV 录制视频,因此我不想在计算机运行时始终打开电视。
我将 EDID 保存到一个文件中,将它放在 /lib/firmware 中,然后添加drm_kms_helper.edid_firmware=DVI-I-1:LT26-A.VGA.EDID.bin到内核命令行中。内核从此文件加载 EDID,X 以正确的分辨率启动。但是,内核仍然尝试从设备读取 EDID 并使用以下消息向我的日志发送垃圾邮件:
[ 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.
Run Code Online (Sandbox Code Playgroud)
添加 drm_kms_helper.edid_firmware 选项也会在关闭或重新启动时导致长时间延迟。即使显示器打开,它也会发生。部分原因是由于所有调用plymouth挂起一段时间,可能是由于plymouthd挂起。这会使在关机时执行的脚本挂起一段时间。不在plymouthd关机时运行会有所帮助,但仍有延迟。
延迟后,我看到:
[drm:edid_load] *ERROR* Requesting EDID firmware "LT26-A.VGA.EDID.bin" failed (err=-2)
Run Code Online (Sandbox Code Playgroud)
这会非常快速地闪烁,然后是启动画面或重新启动。我只能用相机记录下来。这对我来说毫无意义,因为在延迟期间,计算机可以通过 SSH 完全使用。内核应该能够读取该文件。
我不认为这是普利茅斯的问题。它可能正在挂起,因为它请求的某些视频模式更改正在挂起。但是,我希望能够告诉 Plymouth 始终保持普通的 VGA 文本模式。
我也试过drm_kms_helper.poll=0和drm_kms_helper.poll=N内核选项。他们可以根据 /sys 设置选项,但我没有看到任何变化。
添加nomodeset内核参数可以解决这些问题。但是,X 服务器中当前版本的 radeon 驱动程序无法正常工作,并且较新的版本拒绝运行。
更新:添加--tty=/dev/console到关机时调用 plymouthd/etc/init/plymouth.conf已修复关机挂起,即使在电视关闭时也是如此。
小智 2
我没有完全相同的问题,但是当我在打开的会话之间切换用户时,我发现 xorg 存在一些问题:
问题:我的会话分辨率为 1600x1050,然后切换到之前设置为相同 1600x1050 分辨率的另一个用户会话。但是当我切换到此会话时,屏幕变为 1280x1024,并且由于某种原因,会话的大小非常错误(它大于屏幕分辨率,我无法移动或单击大部分内容,因此我必须重新启动所有 Xorg)。
解决方法:幸运的是,我找到了一些方法以一种棘手的方式解决它:用您的分辨率文件更改分辨率文件名。
安装 get-edid 命令:
sudo apt-get install read-edid
Run Code Online (Sandbox Code Playgroud)创建一个包含edid信息的bin文件:
sudo get-edid > 1600x1050.bin
Run Code Online (Sandbox Code Playgroud)创建一个文件夹来存储该文件:
sudo mkdir /lib/firmware/edid
Run Code Online (Sandbox Code Playgroud)复制文件:
sudo cp 1600x1050.bin /lib/firmware/edid
Run Code Online (Sandbox Code Playgroud)编辑 grub 编辑 linux 命令以在 kms 中加载此文件:
sudoedit /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
编辑行:
GRUB_CMDLINE_LINUX_DEFAULT="drm_kms_helper.edid_firmware=edid/1600x1050.bin quiet"
Run Code Online (Sandbox Code Playgroud)
更改您的 name.bin 文件并运行
sudo update-grub
Run Code Online (Sandbox Code Playgroud)出于某种原因,它对我来说非常有效。我有这张卡和驱动程序:
fglrxinfo
显示::0 屏幕:0
OpenGL 供应商字符串:Advanced Micro Devices, Inc.
OpenGL 渲染器字符串:AMD Radeon HD 6450
OpenGL 版本字符串:4.2.12002 兼容性配置文件上下文 9.012
我的 edid 信息如下,运行命令后显示
# parse-edid < 1600x1050.bin:
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
Run Code Online (Sandbox Code Playgroud)
内核日志:
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
Run Code Online (Sandbox Code Playgroud)
我一直在寻找启动板中类似的其他错误报告,但仍在寻找正确的报告。我认为这个问题会影响KMS(内核模式切换)中的很多事情,不仅仅是用户会话之间的切换,还有不同分辨率的全屏游戏和其他事情。
很难找到报告此问题的正确方法,我希望得到一些 Xorg/Kernel 团队的帮助。
我认为这可以在某个低级别上修复,但也可以通过这种解决方法以对用户来说更简单的方式修复:例如添加一些脚本来测试是否检测到 edid,并询问用户是否想要让脚本获取 edid 信息并将其传递给内核命令,然后询问它是否工作正常以及用户是否想要保留这些设置。
我在Arch wiki 内核模式设置页面中找到了大部分信息
我将其发布在:
https://askubuntu.com/posts/352978
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-ati/+bug/579292
小智 1
艾迪德必须开始于
00 FF FF FF FF FF FF 00
Run Code Online (Sandbox Code Playgroud)
但不是 FF 的 128 倍。
您没有 EDID 可能是因为它被擦除损坏,它不是带有 EDID 的芯片,或者很可能是显示器或视频卡之间的 EDID 接口上的某些物理接触损坏。或者甚至在您的显示器内。
| 归档时间: |
|
| 查看次数: |
13645 次 |
| 最近记录: |