Como posso obter o driver da Nvidia para acionar meu projetor em 1280x720?

2

Comprei recentemente um projetor BenQ W600 + que gostaria de usar com meu ThinkPad T410 com gráficos Nvidia executando o Ubuntu 12.10. A resolução nativa do projetor é 1280x720 (ou seja, 720p), mas não consegui configurar o driver da Nvidia para realmente usar essa resolução. O projetor está conectado à porta VGA. O driver é nvidia-current (eu acho).

Aqui estão as resoluções oferecidas pelas configurações do sistema "Displays". Note que 1280x720 não está listado:

Eu segui as instruções em " Adicionando resoluções não detectadas " em wiki.ubuntu.com, mas eles levar a um erro:

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

Esta é a mensagem de erro do segundo comando 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

Eu também vejo essa mensagem de erro em /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.)

Eu tenho outra máquina, um ThinkPad T510, com gráficos Intel e rodando uma versão anterior do Ubuntu. Nessa máquina, o projetor funciona bem, e o seguinte aparece no arquivo de log do 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)

O programa nvidia-settings é semelhantemente inútil. A opção "Adquirir EDID" está esmaecida:

E também não oferece a resolução de 1280x720:

Eu não tenho nenhum arquivo /etc/X11/xorg.conf . Eu tentei executar o nvidia-xconfig para criar um arquivo xorg.conf, mas isso pareceu tornar tudo muito pior: o projetor apareceu apenas em 640x480, e o cursor do mouse ficava "preso" em uma das telas. Quando o X inicia com este arquivo xorg.conf, eu também recebo essa caixa de mensagem de erro:

Como posso fazer o projetor trabalhar a 1280x720 no meu T410?

    
por nibot 16.05.2013 / 20:34

3 respostas

0

Era o cabo VGA!

Substitui o cabo BELKIN de 3 metros por um mais curto e provavelmente de maior qualidade, e agora os drivers da Nvidia detectam automaticamente o projetor BenQ e tudo funciona.

De acordo com um revisor da Amazon, o cabo BELKIN é defeituoso por design :

  

É um cabo bem construído, mas falta o pino 9 e não passa   os dados EDID dos monitores plug and play / tvs, portanto, não recomendariam   é compra.

     

Eu testei usando um Dell Dimension 8250 (ATI 9700) e um Dell Vostro 1500   (NVIDIA 8600) e uma TV Samsung LE40B652 de 40 "que foi detectada como   Monitor "Non-Plug and Play" e resoluções corretamente exibidas até   1440 x 900 a 60 Hz com este cabo VGA.

     

A qualidade da imagem é boa o suficiente, mas é um requisito básico que   O cabo VGA suporta os recursos plug and play do XP / Vista atualmente.

    
por nibot 17.05.2013 / 17:52
3

Sucesso!

Depois de muitas horas cegamente brincando com xorg.conf e xrandr , encontrei uma solução que funciona.

O problema parece ser:

  1. O driver da Nvidia insiste em usar dados EDID da tela, em vez de algo definido pelo xrandr ou no xorg.conf.
  2. Por alguma razão, o driver da Nvidia não pôde ler os dados EDID do meu projetor.

Assim, a solução é fornecer um override de EDID. Eu não consegui encontrar um para minha exibição em particular, mas consegui encontrar um para outro projetor 720p. Funciona!

Após obter o arquivo EDID e colocá-lo em algum lugar, ele é instalado no arquivo xorg.conf , adicionando uma linha como essa na seção " Screen " do xorg.conf:

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

Aqui " CRT-0 " é onde o projetor está conectado: à porta VGA.

Mais uma complicação adicional é que eu não consegui encontrar um arquivo EDID binário. Em vez disso, procurando por "arquivo EDI 720p", encontrei alguns arquivos .INF que contêm informações EDID extraídas por algum programa do Windows. Esses são arquivos de formato Windows .ini. Eles contêm as informações reais do EDID em um bloco semelhante a este:

[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

Para transformar isso em um arquivo binário, escrevi o seguinte script minúsculo do 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()

Observe que você deve remover os três primeiros campos da linha no arquivo .inf: "HKR, EDID_OVERRIDE," 0 ", 0x01".

Para verificar se o arquivo EDID resultante era válido, usei parse-edid (parte do pacote read-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

Então, parecia válido. De fato, depois de reiniciar o servidor X, eu consegui acessar as configurações do Ubuntu Display e clique em "Detectar Displays". Ele vê o meu falso display 'ONKYO Corporation 50' 'e, felizmente, o leva em 1280x720. Necessário mais um reset do X para fazer tudo funcionar.

... E é por isso que amamos o Linux. (-:

    
por nibot 16.05.2013 / 22:48
0

Você precisa usar o nvidia-settings para isso. Não as configurações de exibição que o Ubuntu oferece. Isso ocorre porque os drivers são proprietários e não muito amigáveis quando se trata de usar coisas como esta. Antes de ler eu sugiro que você leia Como faço para instalar os drivers da Nvidia?

Aqui está o meu caso de teste:

Eu tenho uma viga de vídeo Epson e o monitor do computador. Sem o feixe de vídeo, aparece assim:

Agora, conectar a viga de vídeo e clicar em Detectar Exibições na seção Nvidia Display Configuration mostra o seguinte:

Em seguida, arrasto as caixas de layout (as que representam o feixe de vídeo e o Monitor) para o meu gosto e resolução. Então eles se parecem com isso:

Certifique-se de selecionar aquele que deseja ver como padrão como a Exibição principal na parte inferior das opções.

Agora, se você quiser que ambos mostrem a mesma coisa, primeiro verifique se a tela suporta a mesma resolução ou pelo menos uma tela comum. No meu caso eu tenho isso:

  • A viga de vídeo suporta todas as resoluções 4: 3 até 1280x1024

  • O monitor de TV suporta todas as resoluções 16: 9 até 1920x1080

Então, o que preciso fazer é encontrar uma resolução mais alta em que ambos se encontrem. O meu era 1280x720 ou 1024x768. Para facilitar, selecione o Video Beam e selecione Clone , conforme mostrado na seguinte imagem na opção "Posição":

Verifique se o outro monitor (o monitor de TV no meu caso) é o principal. Pelo menos um deles tem que ser o Primário e o outro o Clone para funcionar.

Agora, comece a selecionar a resolução de que você precisa. Se você errar, pressione ESC e repita até encontrar o melhor para o Monitor e Video Beam.

Mais uma vez, tudo isso tem que ser feito através do Painel de Configurações da Nvidia. Nem todas as placas da Nvidia funcionarão com as configurações de exibição que o Ubuntu tem desde que os drivers proprietários ainda não são amigáveis o suficiente para permitir que as configurações de exibição funcionem corretamente.

    
por Luis Alvarado 16.05.2013 / 21:44