Exibir problema de resolução usando o divisor VGA

3

Hardware

Eu tenho a seguinte configuração de hardware:

  • PC em execução Ubuntu 10.04
  • Placa de vídeo onboard com uma saída VGA (Intel P4M800 - Via Unichrome)
  • Divisor VGA: 1 entrada, 4 saídas. Até 2048x1536 (de acordo com as especificações)
  • Um televisor / monitor de 42 '' ligado ao divisor através da sua entrada VGA
  • Dois televisores / monitores de 32 '' conectados ao divisor através de sua entrada VGA

Problema

Com essa configuração, o Ubuntu só mostra 640x480 e 800x800 como possíveis resoluções. No entanto, se eu conectar qualquer um dos TV / Monitor diretamente para o PC (via VGA), o Ubuntu mostra uma longa lista de possíveis resoluções (eu tentei vários deles e eles funcionaram bem).

Parece que a configuração automática do X Window System não está funcionando corretamente. Como faço para configurá-lo manualmente? Que informação deve saber dos diferentes dispositivos envolvidos de antemão?

Contexto: Os monitores são instalados em espaços públicos em um prédio para exibir informações dinâmicas processadas no PC (uma apresentação em Flash sendo executada no Firefox no modo de tela inteira).

Atualizar :

Eu tentei o seguinte, como o link fornecido nas respostas dizia:

  1. Obtenha a modelagem para a resolução usando cvt

  2. Criado o novo modo usando xrandr --newmode

  3. Adicionado o modo à exibição de saída usando xrandr --addmode

  4. Tentou alterar a resolução usando xrandr --output ... --mode ...

Mas eu recebo isto: xrandr screen cannot be larger than 800x600 (desired size ...)

    
por Toto 06.10.2010 / 17:05

2 respostas

3

Veja como a autodetecção do monitor funciona: O firmware de cada monitor contém um fragmento de dados chamado EDID, que codifica as resoluções e as taxas de atualização do monitor, e assim por diante. O driver de vídeo faz uma chamada de hardware para recuperar esses dados, por meio da conexão da placa de vídeo / monitor.

Os divisores (como os KVMs) manipulam o caminho do cartão para o monitor. Alguns KVMs passam o EDID corretamente, outros não. Meu palpite é que seu divisor não está permitindo que o EDID seja passado de volta.

Na verdade, eu diria que a chamada do sistema tem uma suposição embutida de que apenas um pedaço do EDID está presente em um determinado conector, então, mesmo que estivesse retornando algo, provavelmente não seria o que você queria.

Além disso, enquanto todos os monitores retornam EDID, algumas TVs não, ou retornam um EDID corrompido. Mas como você testou sem o splitter e funcionou corretamente, não acho que esse problema afete você.

Diferentes monitores suportam diferentes conjuntos de resoluções e freqüências, mas todos os monitores são exigidos pelo Padrão VESA para suportar pelo menos dois: 640x480 e 800x600. Então, quando X não sabe nada sobre o monitor conectado a ele, ele volta para essas duas resoluções. É por isso que esses são os únicos que você vê disponíveis.

De qualquer forma, acho que neste caso você não pode confiar no EDID para fazer com que seus monitores sejam configurados de forma mágica. Em vez disso, você precisará especificar manualmente os dados por conta própria.

Se você tivesse especificado seu driver de vídeo ou vinculado ao seu Xorg.0.log, eu poderia fornecer informações mais específicas. O procedimento varia dependendo de qual driver de vídeo você está usando. Se for um driver habilitado para KMS, como -intel ou -ati, você deverá especificá-lo através do kernel. Se você tiver o KMS desativado ou estiver usando um driver não KMS, mas o driver suportar RANDR (por exemplo, -fglrx), você poderá adicionar uma modeline usando a ferramenta de linha de comando xrandr, como documentado na parte inferior de link . Se você estiver usando um driver não-KMS, não-RANDR, como -nvidia, ele é controlado inteiramente em seu /etc/X11/xorg.conf; Neste último caso, você precisará procurar as taxas de atualização vertical e horizontal para todos os monitores (esperamos que estejam todos próximos dos mesmos intervalos, caso contrário você está ferrado) e, em seguida, especifique-os através das opções HorizSync e VertRefresh. no xorg.conf. Você também precisará adicionar a resolução no xorg.conf. Possivelmente você pode precisar construir um ModeLine também, mas eu aposto que apenas o HorizSync e o VertRefresh serão suficientes.

Boa sorte, e se você ficar preso não se esqueça de postar seu /var/log/Xorg.0.log.

    
por Bryce 06.10.2010 / 21:48
1

Parece que o X não consegue detectar corretamente a resolução do divisor.

Você pode forçá-lo a usar resoluções arbitrárias usando o xrand. Há alguma documentação , verifique a seção Adicionando seções não detectadas e > Definindo Xrand change persistent .

    
por Javier Rivera 06.10.2010 / 18:38