Ubuntu 10.10:获取适合液晶高清电视的显示器分辨率

Ubuntu 10.10:获取适合液晶高清电视的显示器分辨率

我正在运行 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 配置来看,我似乎需要在显示器配置中添加某种建模,但我不知道在哪里可以找到适合此任务的选项

有什么建议么?

答案1

我能够使用屏幕中的自定义 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 上,我必须安装两个应用程序:电源板(引用自有关 EDID 的维基百科文章

我们需要的另一个应用程序是菲尼克斯 EDID 设计器

使用 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 的位置,如下所示

代码:

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 LCD 电视,生成的模式行是:

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

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


现在创建 EDID

打开 Phoenix EDID Designer,基本上我从 Windows 注册表导入了一个 EDID,我用它作为修改的基础,这是因为我不知道如何填充“颜色/已建立的时间”部分,所以预填充给了我希望的合理值(嗯,它对我来说是有效的,也许是运气),无论如何,点击read-only/modify允许编辑的按钮,重要的事情要修改

一般的:

在这里添加任何你想要的

基本显示参数:

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

标准时间安排:(我禁用了除时间安排 ID #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 服务器设置中,你应该能够设置你的自定义分辨率。

答案2

您应该能够简单地使用 Nvidia 的驱动程序应用程序为您的高清电视设置适当的分辨率和显示输出。

打开终端窗口,然后输入

sudo nvidia-settings

之后Nvidia X 服务器设置已打开,点击X 服务器显示配置选项卡并从那里设置您的高清电视显示。

答案3

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

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

在“设备”部分。

相关内容