Ubuntu 10.10:为lcd hdtv获取适当的监视器分辨率


3

我正在运行Ubuntu 10.10 x86_64版本,使用Nvidia 9800 GT,按照本指南安装了270.41.06个Nvidia驱动程序。我有一个LG42LH30FR液晶电视连接dvi链接 - > RGB PC输入

我能够在没有过扫描的情况下获得1024x768分辨率(我可以获得1080i = 1366x768,但右边有很多隐藏的屏幕空间,我不知道该怎么做)。我想获得全高清

我可以在Windows XP 64位上使用Nvidia控制面板创建自定义分辨率获得全高清(1080p = 1920x1080),通过阅读xorg.conf配置,我似乎需要为显示器配置添加一定的建模,但我不知道知道在哪里获得此任务的适当选项

有什么建议?

Answers:


5

我可以在屏幕上使用自定义EDID执行此操作,方法是将其添加到xorg.conf屏幕部分:

Option "CustomEDID" "DFP-0:/path/to/file/custom_edid.bin"

或者通过生成配置:

sudo nvidia-xconfig --custom-edit="CRT-0:/my/monitor.bin"

现在最大的问题是,如何生成一个可接受的EDID .bin?

在Windows XP上,我不得不安装两个应用程序:PowerStrip(在维基百科关于EDID的文章中引用)

我们需要的另一个应用是Phoenix EDID Designer

使用PowerStrip,我们将从当前显示模式获取详细的时序信息; 基本上所需的信息显示在本文中,它总结如下:

1)在WinXP中,时间安排在高级设置选项卡中。你需要:

Horiz Front Porch, Vert Front Porch,
Horiz Back Porch, Vert Back Porch, 
Horiz Front Active, Vert Front Active, 
Horiz Scan (or Sync) Width, Vert Scan Width, 
Horiz Sync Polarity, Vert Sync Polarity, 
and Pixel Clock. 

2)在/etc/X11/xorg.conf中,有一个类似于模式行的地方

码:

Modeline "1768x992" 74.48 1768 1336 1472 1664 992 721 724 746 -hsync +vsync

只是一个例子。不要使用这个。

模式行的格式为

码:

Modeline "somenamehere" <dotclock> <H1> <H2> <H3> <H4> <V1> <V2> <V3> <V4> <HP> <VP>

where dotclock = Pixel Clock 
H1=Horiz Front Active 
H2=H1+Horiz Front Porch 
H3=H2+Horiz Sync Width 
H4=H3+Horiz Back Porch 
V1=Vert Front Active
V2=V1+Vert Front Porch 
V3=V2+Vert Sync Width 
V4=V3+Vert Back Porch 
HP=Horiz Sync Polarity [-hsync/+hsync] 
VP=Vert Sync Polarity [-vsync/+vsync] 

简单的公式,但我花了几周时间寻找如何将Windows时序转换为Linux模式。

对于我特定的LG42LH30FR液晶电视,最终的模式是:

Modeline "1080p" 172.8 1920 2040 2248 2576 1080 1081 1084 1118 -hsync +vsync

我将其添加到我的显示器部分,但它不起作用,这就是我去添加自定义EDID的原因。


现在来创建EDID

打开凤凰EDID设计器,基本上我从Windows注册表导入了一个EDID,我用它作为修改的基础,这是因为我不知道如何填充“颜色/已建立的时间”部分,所以预填充给了我希望明智的价值观(以及它为我工作,也许是运气),无论如何,点击read-only/modify允许编辑的按钮,重要的事情要修改

一般:

在这里添加你想要的任何东

基本显示参数:

  Video Input Definition -> Digital
  Display Type -> RBG color
  sRGB -> check
  gamma value: somewhere over 250 would be ok

标准时间:(除了时间标识#1,我禁用了所有内容)

  H. Active Pixels (use the value obtained from PowerStrip, for full hd it should be 1920)
  refresh rate (for me its 60Hz)

详细时间:

  set all blocks to "unused" except block #1:
    Pixel Clock: (use from PS obtained info)
    H/V Active Pixel : from PS info
    H/V Blank : from PS info. this is actually **Front Porch**
    H/V Sync Offset: from PS info. this is actually **Back Porch**
    H/V Sync width: from PS info

完成。现在将生成的文件保存在某处,您可以打开它,它是一个文本文件。

您需要一个额外的步骤将其转换为所需的128字节.bin EDID文件; 基本上我会指出描述转换主要文章,但总结一下你必须要做的

  1. strip 除了十六进制数字矩阵之外的所有文件
  2. 编译:

#include <stdio.h>

int main()
{
    while (!feof(stdin))
    {
        unsigned char i;
        scanf("%02X ", &i);
        printf("%c", i);
    }

    return 0;
}

并运行:

# gcc comp.c -o comp
# ./comp < custom_edid.dat > custom_edid.bin

完成!重新启动您的Ubuntu(添加在帖子开头解释的自定义edid配置选项后),现在在Nvidia X Server Settings上,您应该可以设置为自定义分辨率。


相当“直截了当”的东西吧?
lurscher 2011年

顺便说一句@lurscher我曾在博客上写过
Sathyajith Bhat

感谢@Sathya的编辑..我读了你的博客,非常有趣。事实上我的一次失败尝试是在Windows中以无缝模式运行的虚拟盒图像上运行get-edid并获取EDID信息,但似乎即使是virtualbox guest添加驱动程序也懒得提供有效的实现EDID信息,这就是为什么我必须从头开始制作一个自定义的...也,nvidia控制面板没有给我能够获得一个EDID
lurscher 2011年

获得自定义EDID是一种痛苦。特别是如果你不知道你在做什么。但我过去也遇到过类似的问题,这确实是解决问题的唯一方法。
Cestarian 2016年

0

您应该能够简单地使用Nvidia的驱动程序应用程序来设置适当的分辨率并向HDTV显示输出。

打开终端窗口,然后输入

sudo nvidia-settings

在之后的Nvidia X Server设置已开通,点击上X服务器显示配置选项卡,并从那里设置您的HDTV显示器。


不,在可用的分辨率有自动和低于1366x768,1024x768,800x600和所有较低的。无法添加自定义分辨率
2011年

0

这可能是EDID校验和问题。如果是这样,那么只需在/etc/X11/xorg.conf中添加:

Option     "UseEDID" "true"
Option     "IgnoreEDIDChecksum" "CRT,DFP,TV"   

在“设备”部分。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.