Em uma máquina Arch Linux com gráficos integrados Intel e placa-mãe com dois conectores (HDMI e VGA), notei que depois que o sistema acorda, o xrandr mostra ambas as saídas como desconectadas, mesmo que os monitores pareçam funcionar como pretendido com as resoluções corretas. Foi somente ao usar um software que, presumo, pega informações de tela do xrandr, como lightdm
ou mpv
, que descobri o problema.
Após a inicialização, xrandr -q
fornece a saída esperada (neste caso, um único monitor conectado via VGA):
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 16384 x 16384
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 410mm x 230mm
1366x768 59.79*+
1280x1024 75.02 60.02
...
...
...
Após suspender e despertar, ambas as saídas são desconectadas:
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 16384 x 16384
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected primary 1366x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1366x768 (0x44) 85.500MHz +HSync +VSync
h: width 1366 start 1436 end 1579 total 1792 skew 0 clock 47.71KHz
v: height 768 start 771 end 774 total 798 clock 59.79Hz
Se eu tentar mudar o modo neste ponto, a tela fica preta. Se eu escrever cegamente a saída de xrandr -q
para um arquivo, ele retorna:
Screen 0: minimum 320 x 200, current 320 x 200, maximum 16384 x 16384
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected primary (normal left inverted right x axis y axis)
Qual pode ser a raiz do problema? Alguém pode explicar o que está acontecendo com a segunda saída do xrandr acima? Já tentei telas e cabos diferentes e o problema persiste. Onde continuo a solução de problemas?
Depois de solucionar esse problema por algumas semanas, encontrei uma solução.
Sempre que o sistema entrava em sono profundo ( estado S3 ), as saídas eram desconectadas e falhavam em se reconectar novamente ao acordar. Não consegui descobrir o motivo pelo qual isso acontecia nessa máquina em particular, mas uma maneira de evitar isso era forçar o kernel a manter a saída habilitada, ou seja, especificando um modo de vídeo para o subsistema de buffer de quadros.
Da documentação do kernel Linux :
Então, para a saída HDMI, eu apenas tive que adicionar o seguinte aos parâmetros do kernel :
video=HDMI-A-1:D