如何让 Nvidia 驱动程序以 1280x720 分辨率驱动我的投影仪?

如何让 Nvidia 驱动程序以 1280x720 分辨率驱动我的投影仪?

我最近购买了一台 BenQ W600+ 投影仪,想将它与运行 Ubuntu 12.10 的配备 Nvidia 显卡的 ThinkPad T410 一起使用。投影仪的原始分辨率为 1280x720(即 720p),但我无法配置 Nvidia 驱动程序以实际使用此分辨率。投影仪连接到 VGA 端口。驱动程序是nvidia-current(我认为)。

以下是“显示”系统设置提供的分辨率。请注意,未列出 1280x720: 显示设置窗口

我按照“添加未检测到的分辨率“在 wiki.ubuntu.com,但它们会导致错误:

xrandr --newmode "1280x720"x0.0   74.25  1280 1390 1430 1650  720 725 730 750 -hsync -vsync 
xrandr --addmode VGA-0 1280x720x0.0

这是第二条命令的错误消息xrandr

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  39
  Current serial number in output stream:  40

我也在以下位置看到此错误消息/var/log/Xorg.0.log

[  2284.687] (WW) NVIDIA(GPU-0): Unable to read EDID for display device CRT-0
[  2284.687] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[  2284.687] (**) NVIDIA(0):     device CRT-0 (Using EDID frequencies has been enabled on
[  2284.687] (**) NVIDIA(0):     all display devices.)

我还有另一台机器,ThinkPad T510,配有英特尔显卡,运行的是较早版本的 Ubuntu。在那台机器上,投影仪工作正常,Xorg 日志文件中显示以下内容:

(II) intel(0): EDID vendor "BNQ", prod id 52737
(II) intel(0): Using hsync ranges from config file
(II) intel(0): Using vrefresh ranges from config file
(II) intel(0): Printing DDC gathered Modelines:
(II) intel(0): Modeline "1280x720"x0.0   74.25  1280 1390 1430 1650  720 725 730 750 -hsync -vsync (45.0 kHz)

nvidia-settings程序同样没有帮助。“获取 EDID”选项呈灰色:

nvidia-设置截图

而且它也不提供 1280x720 分辨率:

在此处输入图片描述

我没有任何/etc/X11/xorg.conf文件。我尝试过nvidia-xconfig创建一个 xorg.conf 文件,但这似乎让一切变得更糟:投影仪只能以 640x480 分辨率显示,并且鼠标光标会“卡”在其中一个显示器上。当 X 使用此 xorg.conf 文件启动时,我还收到此错误消息弹出框:

在此处输入图片描述

如何让投影仪在 T410 上以 1280x720 的分辨率工作?

答案1

成功!

经过几个小时的盲目摆弄xorg.conf和之后xrandr,我找到了一个可行的解决方案。

问题似乎是:

  1. Nvidia 驱动程序坚持使用来自显示器的 EDID 数据,而不是 xrandr 或 xorg.conf 中设置的任何数据。
  2. 由于某种原因,Nvidia 驱动程序无法阅读我的投影仪的 EDID 数据。

因此,解决方案是提供 EDID 覆盖。我找不到适合我的特定显示器的 EDID 覆盖,但我能找到适合其他 720p 投影仪的 EDID 覆盖。它有效!

获取 EDID 文件并将其放在某个位置后,通过在xorg.conf 的xorg.conf“ ”部分中添加如下行来将其安装在文件中:Screen

Option         "CustomEDID" "CRT-0:/path/to/edid.bin"

这里的“ CRT-0”是投影仪的连接位置:VGA 端口。

另一个额外的麻烦是,我实际上找不到二进制 EDID 文件。相反,通过搜索“720p EDID 文件”,我找到了一些 .INF 文件,其中包含由某些 Windows 程序提取的 EDID 信息。这些是 Windows .ini 格式的文件。它们包含实际的 EDID 信息,信息块如下所示:

[OVERRIDDEN-EDID_AddReg]
;Base EDID
HKR,EDID_OVERRIDE,"0",0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3D,0xCB,0x81,0x07,0x00,0x00,0x00,0x0
0,0x00,0x11,0x01,0x03,0x80,0x6E,0x3E,0x78,0x0A,0xEE,0x91,0xA3,0x54,0x4C,0x99,0x26,0x0F,0x50,0x54,0x20,0x0
0,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1D,0x00,0x7
2,0x51,0xD0,0x1E,0x20,0x6E,0x28,0x55,0x00,0x53,0x6F,0x42,0x00,0x00,0x1E,0x01,0x1D,0x80,0x18,0x71,0x1C,0x1
6,0x20,0x58,0x2C,0x25,0x00,0x53,0x6F,0x42,0x00,0x00,0x9E,0x00,0x00,0x00,0xFC,0x00,0x54,0x58,0x2D,0x53,0x5
2,0x38,0x30,0x35,0x0A,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0xFD,0x00,0x3B,0x3D,0x1E,0x2E,0x08,0x00,0x0A,0x2
0,0x20,0x20,0x20,0x20,0x20,0x01,0x5A

为了将其转换为二进制文件,我编写了以下小 Python 脚本:

#!/usr/bin/python

# first item was 0x01

s = "0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3D,0xCB,0x81,0x07,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x03,0x80,0x6E,0x3E,0x78,0x0A,0xEE,0x91,0xA3,0x54,0x4C,0x99,0x26,0x0F,0x50,0x54,0x20,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1D,0x00,0x72,0x51,0xD0,0x1E,0x20,0x6E,0x28,0x55,0x00,0x53,0x6F,0x42,0x00,0x00,0x1E,0x01,0x1D,0x80,0x18,0x71,0x1C,0x16,0x20,0x58,0x2C,0x25,0x00,0x53,0x6F,0x42,0x00,0x00,0x9E,0x00,0x00,0x00,0xFC,0x00,0x54,0x58,0x2D,0x53,0x52,0x38,0x30,0x35,0x0A,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0xFD,0x00,0x3B,0x3D,0x1E,0x2E,0x08,0x00,0x0A,0x20,0x20,0x20,0x20,0x20,0x20,0x01,0x5A"

s = "".join(map(lambda x : chr(int(x, 16)), s.split(",")))

f = open("edid.bin", "w")
f.write(s)
f.close()

请注意,您必须从 .inf 文件的行中删除前三个字段:“HKR,EDID_OVERRIDE,"0",0x01”。

为了验证生成的 EDID 文件是否有效,我使用了parse-edidread-edid软件包的一部分):

tobin@thinktop:~/pathname/$ parse-edid edid.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 "TX-SR805"
    VendorName "ONK"
    ModelName "TX-SR805"
    # Block type: 2:0 3:fc
    # Block type: 2:0 3:fd
    HorizSync 30-46
    VertRefresh 59-61
    # Max dot clock (video bandwidth) 80 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    "1920x540"  # vfreq 60.053Hz, hfreq 33.750kHz
        DotClock    74.250000
        HTimings    1920 2008 2052 2200
        VTimings    540 542 547 562
        Flags   "Interlace" "+HSync" "+VSync"
    EndMode
    # Block type: 2:0 3:fc
    # Block type: 2:0 3:fd
EndSection

所以它看起来是有效的。事实上,在重新启动 X 服务器后,我能够进入 Ubuntu 显示设置并单击“检测显示器”。它看到我的假“ONKYO Corporation 50”显示器,并愉快地以 1280x720 驱动它。需要再重置一次 X 才能使一切正常工作。

...这就是我们热爱 Linux 的原因。 (-:

答案2

您需要使用nvidia-设置为此。不是 Ubuntu 提供的显示设置。这是因为驱动程序是专有的,在使用这类东西时不太友好。在阅读之前,我强烈建议你阅读如何安装 Nvidia 驱动程序?

这是我的测试用例:

我有一台 Epson 视频光束和计算机显示器。没有视频光束时,显示如下:

在此处输入图片描述

现在,连接视频光束并点击检测显示器Nvidia 显示配置部分显示以下内容:

在此处输入图片描述

然后,我根据自己的喜好和分辨率拖动布局框(代表视频光束和监视器的框)。它们看起来像这样:

在此处输入图片描述

确保选择要默认显示的那个主显示器在选项的底部。

现在,如果你想让两个屏幕显示相同的内容,你需要首先确保两个屏幕支持相同的分辨率,或者至少支持一个共同的分辨率。就我而言,我有这个:

  • 视频光束支持所有4:3分辨率高达 1280x1024

  • 电视监视器支持所有16:9分辨率高达 1920x1080

因此我需要找到两者最高分辨率。我的是 1280x720 或 1024x768。为了更轻松地完成此操作,请选择 Video Beam 并选择克隆如下图“Position”选项中所示:

在此处输入图片描述

确保另一台显示器(我这里是电视显示器)是主显示器。至少其中一台必须是主显示器,另一台是克隆显示器才能正常工作。

现在开始选择您需要的分辨率。如果选错了,请按ESC并重复,直到找到最适合显示器和视频光束的分辨率。

再次强调,所有这些都必须通过 Nvidia 设置面板完成。并非所有 Nvidia 显卡都能与 Ubuntu 的显示设置兼容,因为专有驱动程序还不够友好,无法让显示设置正常工作。

答案3

这是 VGA 线!

我用一条更短但质量更高的电缆替换了 3 米长的 BELKIN 电缆,现在 Nvidia 驱动程序可以自动检测 BenQ 投影仪,一切正常。

据一位亚马逊评论员称,BELKIN 线缆设计缺陷

这是一根结构良好的电缆,但缺少第 9 针,并且无法传递即插即用显示器/电视的 EDID 数据,因此不建议购买。

我使用 Dell Dimension 8250(ATI 9700)、Dell Vostro 1500(NVIDIA 8600)和 Samsung LE40B652 40 英寸电视进行了测试,该电视被检测为“非即插即用”显示器,并使用此 VGA 电缆正确显示高达 1440 x 900 @ 60Hz 的分辨率。

图像质量足够好,但目前的基本要求是 VGA 电缆支持 XP/Vista 的即插即用功能。

相关内容