Ubuntu 10.10: obtendo resolução de monitor apropriada para lcd hdtv

3

Estou executando a versão Ubuntu 10.10 x86_64, com a Nvidia 9800 GT, instalada 270.41.06 drivers Nvidia seguindo este guia . Eu tenho uma TV LCD LG42LH30FR conectado com o link dvi - > Entrada RGB PC

Consigo obter uma resolução de 1024x768 sem overscan (posso obter 1080i = 1366x768 mas existe muito espaço de ecrã oculto à direita e não sei o que fazer). Eu quero ficar full HD

Consigo obter HD total (1080p = 1920x1080) no Windows XP de 64 bits com resolução personalizada criada com o Nvidia Control Panel, ao ler as configurações do xorg.conf, parece que preciso adicionar uma certa modelagem na configuração do monitor, mas Eu não sei onde conseguir as opções apropriadas para esta tarefa

alguma sugestão?

    
por lurscher 08.05.2011 / 06:49

3 respostas

5

Consegui fazer isso usando um EDID personalizado na tela, adicionando isso à seção da tela xorg.conf :

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

Ou gerando uma configuração:

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

Agora, a grande questão, Como produzir um EDB .bin aceitável?

No Windows XP, eu tive que instalar dois aplicativos: PowerStrip (que é mencionado em Artigo da Wikipédia sobre o EDID

O outro aplicativo que precisaremos será Phoenix EDID Designer .

Com o PowerStrip, obteremos informações detalhadas sobre o tempo a partir do modo de exibição atual; Basicamente, as informações necessárias são mostradas em este artigo e resumem-se ao seguinte:

1) No WinXP, os tempos estão em algum lugar em uma guia de configurações avançadas. Você precisa de:

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) Em seu /etc/X11/xorg.conf existe um lugar para modeline que se parece com

Código:

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

Apenas um exemplo. Não use este.

A modeline está em um formato de

Código:

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] 

Fórmulas simples, mas levei semanas pesquisando para descobrir como converter os timings do Windows em uma modeline do Linux.

Para minha TV LCD LG42LH30FR específica, a modelinha resultante é:

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

Adicionei isso à minha seção de monitor, mas não funcionou, por isso fui adicionar um EDID personalizado.

Agora, para criar o EDID

Abra o Phoenix EDID Designer, basicamente eu importei um EDID do Registro do Windows, e usei isso como uma base para modificar, porque eu não sabia como preencher a seção "Cor / intervalos estabelecidos", então O pré-preenchimento me deu valores esperançosamente sensatos (bem, está funcionando para mim, talvez tenha sorte ), de qualquer forma, clique no botão read-only/modify que permite edição, as coisas importantes para modificar

Geral:

Adicione o que você quiser aqui

Parâmetros básicos de exibição:

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

Tempos padrão: (desativei tudo, exceto o número de tempo # 1)

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

Horários detalhados:

  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

Concluído. Agora salve o arquivo resultante em algum lugar, você pode abri-lo, é um arquivo de texto.

Você precisa de uma etapa adicional para convertê-lo em um arquivo EDID de 128 bits. Basicamente, vou apontar para o artigo principal descrevendo a transformação , mas resumindo você ' vai ter que

  1. strip tudo do arquivo, exceto a matriz hexadecimal de dígitos
  2. Compile isso:
#include <stdio.h>

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

    return 0;
}

E corra:

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

Feito! Reinicie o seu Ubuntu (depois de adicionar a opção de configuração personalizada edid explicada no início do post) e agora no Nvidia X Server Settings, você deve ser capaz de definir a sua resolução personalizada.

    
por 08.05.2011 / 23:44
0

Você deve ser capaz de simplesmente usar o aplicativo de driver da Nvidia para definir a resolução apropriada e exibir a saída para sua HDTV.

Abra uma janela de terminal e digite

sudo nvidia-settings

Depois que o Configurações do Nvidia X Server for aberto, clique na guia Configuração do Monitor do Servidor X e configure seu monitor HDTV a partir dali.

    
por 08.05.2011 / 08:08
0

É provavelmente um problema de soma de verificação EDID. Se sim, basta adicionar isso no seu /etc/X11/xorg.conf:

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

Na seção "Dispositivo".

    
por 24.06.2012 / 04:02