Graphical Card, do nada, pegue a configuração correta - por quê? Como?

0

Durante anos, usei meu laptop antigo com a placa gráfica SIS 771/671, com uma configuração de vídeo feia, que esticava a imagem sobre o monitor externo. Este problema faz-me fazer esta questão procurando por uma distro que possa fornecer uma maneira de configurar corretamente a placa de vídeo.

No entanto, agora, depois de 3 anos com essa configuração de vídeo incorreta, meu laptop começou a funcionar, às vezes com a configuração de vídeo correta, às vezes não. Por quê? Como? Posso determinar quais são as alterações "automáticas" que fazem com que minha placa gráfica obtenha a configuração correta?

Estou usando o Debian 8.

a saída de xrandr --verbose ao inicializar com configuração de vídeo incorreta:

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 1024 x 768, maximum 1024 x 768
default connected 1024x768+0+0 (0x148) normal (normal) 0mm x 0mm
    Identifier: 0x147
    Timestamp:  24735
    Subpixel:   no subpixels
    Clones:    
    CRTC:       0
    CRTCs:      0
    Transform:  1.000000 0.000000 0.000000
                0.000000 1.000000 0.000000
                0.000000 0.000000 1.000000
               filter: 
  1024x768 (0x148)  0.000MHz *current
        h: width  1024 start    0 end    0 total 1024 skew    0 clock   0.00KHz
        v: height  768 start    0 end    0 total  768           clock   0.00Hz
  800x600 (0x149)  0.000MHz
        h: width   800 start    0 end    0 total  800 skew    0 clock   0.00KHz
        v: height  600 start    0 end    0 total  600           clock   0.00Hz
  640x480 (0x14a)  0.000MHz
        h: width   640 start    0 end    0 total  640 skew    0 clock   0.00KHz
        v: height  480 start    0 end    0 total  480           clock   0.00Hz
  1280x768 (0x155) 79.500MHz
        h: width  1280 start 1344 end 1472 total 1664 skew    0 clock  47.78KHz
        v: height  768 start  771 end  781 total  798           clock  59.87Hz
  1280p (0x160) 79.500MHz
        h: width  1280 start 1344 end 1472 total 1664 skew    0 clock  47.78KHz
        v: height  768 start  771 end  781 total  798           clock  59.87Hz

a saída de xrandr --verbose ao inicializar com a configuração de vídeo correta :

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 1280 x 768, maximum 1280 x 768
default connected 1280x768+0+0 (0x14a) normal (normal) 0mm x 0mm
    Identifier: 0x149
    Timestamp:  29118
    Subpixel:   unknown
    Clones:    
    CRTC:       0
    CRTCs:      0
    Transform:  1.000000 0.000000 0.000000
                0.000000 1.000000 0.000000
                0.000000 0.000000 1.000000
               filter: 
  1280x768 (0x14a) 59.965MHz *current
        h: width  1280 start    0 end    0 total 1280 skew    0 clock  46.85KHz
        v: height  768 start    0 end    0 total  768           clock  61.00Hz
  1024x768 (0x14b) 47.972MHz
        h: width  1024 start    0 end    0 total 1024 skew    0 clock  46.85KHz
        v: height  768 start    0 end    0 total  768           clock  61.00Hz
  800x600 (0x14c) 29.280MHz
        h: width   800 start    0 end    0 total  800 skew    0 clock  36.60KHz
        v: height  600 start    0 end    0 total  600           clock  61.00Hz
  640x480 (0x14d) 18.432MHz
        h: width   640 start    0 end    0 total  640 skew    0 clock  28.80KHz
        v: height  480 start    0 end    0 total  480           clock  60.00Hz

Se eu tentar adicionar uma nova modeline, com os mesmos parâmetros que o meu laptop inicializou ontem (o correto para o meu monitor externo), isto é:

xrandr --newmode "1280x768"   79.50  1280 1344 1472 1664  768 771 781 798 -Hsync +Vsync

a saída que sai é:

xrandr: Failed to get size of gamma for output default
X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  16 (RRCreateMode)
  Serial number of failed request:  19
  Current serial number in output stream:  19

quando eu seleciono qualquer modo com resolução de 1280x768, recebo uma mensagem de erro:

xrandr: cannot find mode 1280x768
xrandr: cannot find mode 1280p

com os outros modos preexistentes xrandr simplesmente funciona bem.

Se eu tentar adicionar um modo preexistente, sob outro nome, com o seguinte comando:

xrandr --newmode "1024t" 63.50  1024 1072 1176 1328  768 771 775 798 -Hsync +Vsync

Recebo a seguinte mensagem de erro:

xrandr: Failed to get size of gamma for output default

O conteúdo do Xorg.0.log, quando inicializado com configuração de vídeo incorreta, é este.

O conteúdo do Xorg.0.log, quando inicializado com a configuração correta do vídeo, é este.

Última atualização: solução alternativa. Descobri que, inicializando o computador com o monitor externo desligado e ligando-o depois da inicialização da GUI, o sistema obtém a configuração de vídeo correta.

    
por Leandros López 13.07.2017 / 13:57

1 resposta

1

Como você pode ver no log, você está usando o driver VESA, e não o driver SIS . Na verdade, não tenho certeza sobre o status atual do driver SIS: Eu me lembro vagamente de que o suporte para alguns drivers foi descartado, porque ninguém os manteve, e o driver do SIS pode estar entre eles.

De qualquer forma, o driver VESA usa chamadas do BIOS para definir modos, limitados aos modos VESA pré-definidos. Isso explica por que você tem zeros nos campos de sincronização - esses valores não importam, pois o driver não os utiliza. Também explica por que você não pode usar um modeline que não esteja em conformidade com um modo VESA: A interface xrandr para adicionar modelines etc. ainda funciona, mas eles não serão usados.

O log mostra que você só tem três modos válidos, dentre os 14 que seu monitor EDID oferece:

[    27.440] (**) VESA(0):  Built-in mode "1024x768"
[    27.440] (**) VESA(0):  Built-in mode "800x600"
[    27.440] (**) VESA(0):  Built-in mode "640x480"

Portanto, com o driver VESA, você só pode escolher entre esses três e não pode ajustar o tempo de sincronização.

Quanto ao motivo pelo qual o monitor às vezes "estica" a imagem e às vezes sincroniza corretamente, ainda é a mesma suposição: o BIOS não define todos os registros necessários ou o sincronismo do modo VESA 1024x768 é ambiguo o suficiente para o monitor para, por vezes, sincronizar desta forma e, por vezes, dessa forma.

Opções: tente fazer o driver do SIS funcionar. Para isso, se o driver for realmente obsoleto, talvez seja necessário começar a examinar o código do driver e atualizá-lo. Ou encontre alguém para fazer isso.

Outras opções: nenhuma em que posso pensar.

Editar

A diferença parece ser que, no caso "correto", a leitura EDID do montitor falha, enquanto no caso "incorreto", a leitura EDID é bem-sucedida. No primeiro caso, o motorista provavelmente consulta uma tabela "padrão" interna e cria um modo adicional, que parece funcionar para você.

Você pode substituir as informações do EDID para outros drivers, mas o AFAIK não para o driver VESA.

Opções:

  • Faça isso corretamente e obtenha o driver SIS funcionando, veja acima.

  • Modifique o driver VESA para substituir o EDID, assim como para outros drivers (requer boas habilidades de programação C).

  • Solução temporária: Solde um plugue VGA personalizado que não conecte os dois pinos DDC no conector VGA , forçando todas as leituras EDID a falhar (requer habilidades de solda).

** Editar **

Solução alternativa, conforme descrito por Leandros López: Inicialize o computador com o monitor externo desligado. Isso também fará com que as leituras do EDID falhem, e os modos disponíveis serão os modos de fallback. Ativá-lo depois que o servidor X for inicializado.

    
por 18.07.2017 / 16:52