"Xrandr --addmode" pára de funcionar ao trocar de adaptador DVI-I/VGA no Debian

Boa noite a todos!
Eu uso um monitor de tubo VGA para meu computador (LG Flatron Ez T710SH). Minha placa de vídeo não tem saídas VGA, somente tem uma DVI-I, uma DVI-D e duas HDMI, portanto eu uso meu monitor com um adaptador de DVI-I para VGA.
O adaptador que eu estava usando funcionava normalmente, porém o monitor aparecia como “desconhecido”, e sempre que o computador era desligado ou suspenso, o monitor ficava “sem sinal” ao invés de ficar em modo standby. Então troquei por um adaptador DVI-A para VGA, e este sim resolveu, o monitor é reconhecido pelo computador, e fica em standby quando o computador é desligado ou suspenso.
Porém agora surgiu um novo problema: eu utilizava resoluções customizadas com este monitor, sendo 1152x921 para uso normal (porque 1152x854 fica com bordas pretas, e 1280x1024 é somente 60Hz), e 1440x900 para jogar. Criei essas resoluções adicionando essas linhas no Xprofile:

xrandr --newmode "1440x900_75.00"  136.75  1440 1536 1688 1936  900 903 909 942 -hsync +vsync
xrandr --addmode DVI-I-0 1440x900_75.00
xrandr --newmode "921p" 103.25  1152 1224 1344 1536  921 924 934 961 -hsync +vsync
xrandr --addmode DVI-I-0 921p  

Após trocar de adaptador, esses comandos pararam de funcionar. Quando tento executá-los no terminal manualmente, exibe o seguinte erro:

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:  37
  Current serial number in output stream:  38 

É como se o Xrandr estivesse bloqueando a resolução customizada, pelo fato de ser algo fora das resoluções padrão do monitor… Alguém sabe de alguma forma de “burlar” esse bloqueio do Xrandr, sem que eu tenha que voltar a usar o adaptador antigo?

Obs: No Windows, eu ainda consigo recriar a resolução customizada normalmente, pelo painel de controle da NVIDIA, conforme a foto.

O que sai com a saída do comando?

xrandr

Com o comando “xrandr”, exibe essas informações:

Screen 0: minimum 8 x 8, current 1280 x 960, maximum 16384 x 16384
DVI-I-0 connected primary 1280x960+0+0 (normal left inverted right x axis y axis) 330mm x 240mm
   1024x768      85.00 +  75.03    70.07    60.00  
   1280x1024     60.02  
   1280x960      70.00* 
   1152x864      75.00  
   800x600       85.06    75.00    72.19    60.32    56.25  
   640x480       85.01    75.00    72.81    59.94  
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)
  1440x900_75.00 (0x227) 136.750MHz -HSync +VSync
        h: width  1440 start 1536 end 1688 total 1936 skew    0 clock  70.64KHz
        v: height  900 start  903 end  909 total  942           clock  74.98Hz
  921p (0x228) 103.250MHz -HSync +VSync
        h: width  1152 start 1224 end 1344 total 1536 skew    0 clock  67.22KHz
        v: height  921 start  924 end  934 total  961           clock  69.95Hz
  480i (0x229) 25.000MHz -HSync +VSync Interlace
        h: width   640 start  664 end  720 total  800 skew    0 clock  31.25KHz
        v: height  480 start  483 end  487 total  522           clock 119.73Hz

sudo gedit /etc/default/grub

procure por
GRUB_CMDLINE_LINUX_DEFAULT=...

e adicione, alguns exemplos
O sei é DVI-I-0

“video=LVDS-1:d video=VGA-1:e video=HDMI-1:e”

o :d é para desabilitar o monitor
e o :e é para habilitar moinitor

altere os nome de acordo com o encontrado com o comando

xrandr -q

Exemplo
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=DVI-I-0:e

salve e atualize o grub

Veja se funciona

Pelo o que entendi antes você conseguia usar resoluções customizadas com esse monitor (esse monitor pelo que pesquizei é 1280x1024 75Hz, parecido com um que eu tinha) usando o outro adaptador, que não reconhecia o monitor, já com esse novo adaptador que reconhece o monitor não é mais possivel setar essas resoluções customizadas.
Acho que seja pelo fato da resolução que você quer usar seja acima da resolução do monitor, antes dava certo porque o monitor não era reconhecido corretamente e aceitava qualquer resolução, quando eu seto um resolução acima do meu monitor ele fica sem imagem (pelo programa gráfico de configuração mesmo) acho que seja por causa disso.

Infelizmente não funcionou, continua a mesma coisa, mesmo depois de ter reiniciado o computador.

Esse modelo na verdade é 60Hz em 1280x1024. Só consigo usar a 75Hz com a resolução 1152x854, ou a customizada que eu usava de 1152x921 (que também parou de funcionar). EDIT: Eu também conseguia usar 1440x900 com 75Hz, antes da troca de adaptador.
O problema não é a resolução ser maior que a suportada, pois resoluções customizadas menores do que 1280x1024 também não são mais aceitas pelo Xrandr. (E também que o monitor suporta a resolução de 1440x900, pois se não suportasse teria ficado fora de escala quando eu conseguia adicioná-la).
Como eu também mencionei, no Windows eu ainda consigo criar a resolução customizada de 1440x900, sem problema nenhum. Acredito que esteja faltando alguma coisa para o Xrandr permitir que eu crie as resoluções customizadas novamente…

Se tiver paciência para ler

Depois de muito tempo achei uma solução para o problema.
O adaptador DVI-I para VGA antigo ele não mostrava o Edid do monitor, então era fácil criar resoluções personalizadas. Quando troquei por um adaptador que é capaz de deixar o monitor em modo suspensão ao invés de “sem sinal”, ele também conseguia ler o Edid do monitor que bloqueava resoluções diferentes das que o próprio monitor fornecia (mesmo que ele seja compatível). Para resolver foi muito simples:
No xorg.conf, na sessão “Device”, basta adicionar essas duas linhas:
Option “UseEDID” “false”
Option “ModeValidation” “NoEdidModes”

Fica mais ou menos assim:

Section "Device"
    Identifier  "AMD"
    Driver      "amdgpu"
    Option      "TearFree" "true"
    Option "UseEDID" "false"
    Option "ModeValidation" "NoEdidModes"
EndSection

No caso hoje em dia eu uso AMD e nesse caso foi adicionado no /etc/X11/xorg.conf.d/10-amdgpu.conf. Mas funciona se usar arquivo xorg.conf e funciona com NVIDIA. Que é como eu estava usando enquanto ainda usava NVIDIA.
Depois disso, basta reiniciar ou sair da sessão.

Também é possível adicionar as resoluções customizadas diretamente no arquivo de configuração na sessão “monitor”, não precisando colocar xrandr --newmode e xrandr --addmode no ~/.xprofile. Dessa forma:

Section "Monitor"
    Identifier "HDMI-A-0"
    Option "Primary" "true"
    Modeline "1640x1024_65.00"  152.25  1640 1752 1920 2200  1024 1027 1037 1066 -hsync +vsync
    Modeline "1824x1024_65.00"  169.25  1824 1944 2136 2448  1024 1027 1037 1066 -hsync +vsync
    Modeline "1280x1024_65.00"  118.50  1280 1368 1496 1712  1024 1027 1034 1066 -hsync +vsync
    Modeline "1712x960_70.00"  161.50  1712 1832 2008 2304  960 963 973 1002 -hsync +vsync
    Modeline "1536x960_70.00"  144.50  1536 1640 1800 2064  960 963 969 1002 -hsync +vsync
    Modeline "1280x960_70.00"  120.00  1280 1368 1496 1712  960 963 967 1002 -hsync +vsync
    Modeline "1600x900_75.00"  151.25  1600 1704 1872 2144  900 903 908 942 -hsync +vsync
    Modeline "1440x900_75.00"  136.75  1440 1536 1688 1936  900 903 909 942 -hsync +vsync
    Modeline "1200x900_75.00"  114.00  1200 1280 1408 1616  900 903 907 942 -hsync +vsync
    Modeline "1280x720_85.00"  110.25  1280 1368 1496 1712  720 723 728 759 -hsync +vsync
    Modeline "856x480_120.00"   69.75  856 904 992 1128  480 483 493 518 -hsync +vsync
EndSection

Lembrando que as linhas “Modeline” são obtidas com o comando cvt [resolucaoX] [resolucaoY] [taxa de atualizacao]. (Ex: cvt 1280 960 70). Lembre-se de testar antes de colocar no arquivo de configuração.

1 curtida

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.