Não é possível adicionar novo modo no xrandr para monitor externo


16

Hoje eu estava tentando conectar meu segundo monitor ao meu notebook. Eu tenho:

  • placa gráfica nvidia
  • 304.43 drivers [suporte xrandr 1.2]
  • archlinux [atualizado]
  • ui impressionante
  • xrandr 1.3

Meu problema é com uma resolução maior que 640x480 para meu monitor externo (VGA). xrandr -q:

Screen 0: minimum 8 x 8, current 1920 x 800, maximum 8192 x 8192
VGA-0 connected 640x480+1280+0 (normal left inverted right x axis y axis) 0mm
   640x480        59.9*+
   320x240       120.1  
LVDS-0 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331m
   1280x800       59.9*+
HDMI-0 disconnected (normal left inverted right x axis y axis)

Como podemos ver, a VGA não tem resolução maior, então adiciono um novo modo:

xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')

Eu verifiquei a resolução disponível e a taxa de atualização no Windows: uma delas era 1024x768x70 (o OSD do meu monitor dizia que é 70.4HZ). Depois de criar um novo modo, eu queria adicioná-lo:

xrandr --addmode VGA-0 1280x1024_70.40

E ... Falhou:

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  153 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  29
  Current serial number in output stream:  30

No google, eu aprendi que nos drivers xrandr / nvidia mais antigos havia um problema com a lista de modos disponíveis, mas agora com o suporte do xrandr 1.2 pelos drivers da nvidia, deveria ser melhor. Também tento com menor resolução e taxa de atualização (por exemplo, 1024x768x50), mas tenho o mesmo erro. Estou sem ideias do que fazer com esse problema ...

Respostas:


11

Não tenho certeza se você criou a sequência a seguir xrandr --newmodepor si mesmo ou a copiou de outro lugar, mas ela não funcionará na sua forma atual.

Eu recomendo fazê-lo passo a passo.

Primeiro, você precisa gerar o novo modo. Eu recomendo usar 60Hz com LCD ou 85Hz com monitor CRT

gtf 1280 1024 60

Você receberá algo como:

 # 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz 
 Modeline "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync Vsync

Em seguida, apresente esse modo para xrandrusar --newmode(copie e cole a linha que começa com 'Modeline'.

 xrandr --newmode "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync Vsync

Em seguida, adicione este modo ao VGA-0:

xrandr --addmode VGA-0 "1280x1024_60.00"

E, finalmente, você pode usar este novo modo:

 xrandr --output VGA-0 --mode 1280x1024_60.00

Você está certo, eu não crio isso: xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')sozinho, mas coloquei isso em pequenos pedaços primeiro para ver como ele funciona, primeiro gtf 1280 1024 70.4, depois com grep e finalmente com sed e tr. Dá a mesma saída que você tem no seu xrandr --newmodecom um diff - você tem "1280x1024_60.00", I have 1280x1024_60.00` - no final, estou usando tr -d '"'para excluir '"'. Infelizmente, ainda tenho o mesmo erro.
Borgo

Por que taxa de atualização tão estranha? 70,4? Use 60Hz se for um LCD ou 85Hz no caso de CRT. E faça isso passo a passo, exatamente como eu escrevi.
Paweł Rumian 13/09/12

Agora tentei fazê-lo passo a passo, usando 60Hz, e ainda tenho o mesmo erro.
Borgo

1
Minha resolução é 1280x1024 e estou tentando criar (newmode) / adicionar (addmode) este modo:"1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
Borgo

1
Ainda o mesmo erro: X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 153 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 29 Current serial number in output stream: 30 apenas dois últimos números foram alterados.
Borgo

4

Eu tive esse problema com o Erro BadMatch até excluir um "1280x1024_60.00" adicionado anteriormente, porque ele nunca poderia usar o modo de aspas duplas com êxito. Eventualmente, percebi que um nome melhor para o modo ajudou.

Então, excluí "1280x1024_60.00" executando o seguinte como um usuário normal:

$ xrandr --version 
reports 1.4.0 and 1.4
$ xrandr | grep 1280 #Do you see any 1280x1024 anywhere?  Does it have double quotes?
$ xrandr --verbose --delmode VGA1 '"1280x1024_60.00"'
$ xrandr --verbose --rmmode '"1280x1024_60.00"' 

Excluir e remover o lixo eletrônico no sistema geralmente não funcionava ou voltava mesmo que eu o excluísse da minha conta e raiz. Geralmente, ele voltava com a saída denominada VIRTUAL1, em vez de VGA1.

Achei muito mais fácil deixar o lixo eletrônico e anexar uma carta no final do meu modo recém-criado, e até soltei o .00, então 1280x1024_60B . Observe com cuidado abaixo que há aspas duplas em torno do parâmetro --newmode, mas NÃO --addmode nem --mode

$ xrandr --verbose --newmode "1280x1024_60B" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
$ xrandr --verbose --addmode VGA1 1280x1024_60B
$ xrandr --verbose --output VGA1 --mode 1280x1024_60B

Uma pequena tela pisca e meu monitor quadrado externo de 19 "está rodando a 1280x1024.


Esta foi a única solução após horas de pesquisa que funcionou, muito obrigado, você salvou meu dia. Cheers
Shanil Soni

No entanto, a configuração perde após uma sessão, alguma solução para torná-la permanente?
Shanil Soni

0

Se você estiver executando o Linux em uma VM (especificamente, VirtualBox), verifique se a VM possui memória de vídeo suficiente.

Pouca memória de vídeo causa esse erro ao tentar executar o xrandr.


0

Passo 2 horas para resolver um problema semelhante e o problema estava no cabo vga. Substitua o cabo VGA. Posso alterar a resolução para 1920x1080 sem usar xrandr ou xorg, é muito estranho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.