Tenho três monitores idênticos de 1680 x 1050 e estou tentando usá-los por meio do “HP G5 USB-C dock” no meu laptop Razer Blade 15" 2018 e sua porta Thunderbolt 3. Com isso, às vezes consigo fazer com que todos os monitores funcionem simultaneamente, mas nunca xrandr
no resoluções que eu quero.
Se eu mesmo construir modelines, posso executar todos os três com 1680x1050 com 49Hz. 60Hz não é possível? Talvez seja um problema de relógio de pixel.
xrandr | egrep '^[^ ]' | grep -v 'Screen 0:' | sed -e 's/ (.*//'
imprime isso sem o dock conectado:
eDP-1 connected primary 1920x1080+0+0
DP-1 disconnected
DP-2 disconnected
HDMI-1-1 disconnected
DP-1-3 disconnected
depois de conectar o dock com hotplug, vejo:
eDP-1 connected primary 1920x1080+0+0
DP-1 disconnected
DP-2 disconnected
DP-1-1 connected
DP-1-2 connected
DP-1-3 disconnected
HDMI-1-1 disconnected
inicializar com o dock mostra:
eDP-1 connected primary 1920x1080+0+0
DP-1 disconnected
DP-2 disconnected
DP-1-1 connected
DP-1-2 connected
DP-1-3 connected
HDMI-1-1 disconnected
DP-1-6 disconnected
Com o dock conectado, não consigo configurar xrandr --output DP-1-3 --auto
. eu entendo xrandr: cannot find preferred mode
. A inicialização com ele funciona, no entanto.
Tentar habilitar o terceiro monitor com 1680x1050@60 produz xrandr: Configure crtc 0 failed
. Eu até usei um modeline gerado com cvt -r
. Acho que os monitores são muito antigos para CVT-RBv2.
[perguntando por um amigo @bain]
minhas descobertas
Essa doca HP G5 ( especificação ) faz apenas USB-C. O sinal de vídeo será transmitido com aquele famoso modo alternativo USB-C para DisplayPort; a funcionalidade Thunderbolt 3 do laptop (mesma porta, modo de operação diferente) não é usada.
A resolução tripla de 1680x1050 é um forte indício de que o laptop está limitado a DisplayPort 1.2 via USB-C e usa apenas 2 pistas. Ele permite uma largura de banda de 8,64 Gb/s, para a qual um triplo 1680x1050 é um ajuste perfeito, mas 60 Hz são possíveis. O que te dá tanta certeza de que os timings CVT-RBv2 não funcionariam? O erro
xrandr: Configure crtc 0 failed
indica que a GPU não pôde ser configurada para fazer o que você deseja. Se o monitor realmente não fosse capaz de lidar com o modo, ele só poderia indicar que em sua própria tela, pisca estranhamente ou escurece etc. Para gerar modelines úteiscvt
é inútil para este caso (e muitos outros). Além disso, seu-r
switch gera apenas temporizações “v1”.DP-1-3
porta ímpar. Não tenho certeza do que representa, especialmente semDP-1-1
eDP-1-2
ao redor. — Acredito que essa entrada estranha seja a mesmaDP-1-6
entrada no caso coldplug (o número sempre sendo +3 do últimoDP-1-x
). No evento hotplug, a enumeração sobreDP-1
colide depoisDP-1-1
eDP-1-2
com aquele espúrioDP-1-3
e falha ao registrar com esse nome e não tenta nenhum outro nome, ao que parece, impossibilitando ver/manipular a última porta de vídeo do dock.Como proceder
atualização de 60 Hz
(O texto a seguir mostra maneiras de fazer as coisas funcionarem. Leia, entenda e adapte ao seu ambiente. Copiar e colar pode não funcionar.)
Vamos colocar todos os monitores em 60 Hz. Primeiro, verifique se você está conectado a frio e se todos os 3 monitores externos funcionam em alguma resolução. Para evitar problemas de gargalo ou atingir outros limites da GPU (queremos testar os monitores!), trabalhe na tela interna e desligue todas as outras
Agora vamos adicionar “meus” modelos:¹
Adicione-os ao seu monitor preferido agora (e aos outros eventualmente):
Agora teste-os!
h160 deve funcionar. É o chato sincronismo CVT-RB de
cvt -r 1680 1050 60
. Então teste h80. Este é o CVT-RBv2. Eu tenho quatro monitores antigos medíocres, todos eles podem fazer isso. Avançar:Em seguida, tente habilitar todos os três no último modelo que você está trabalhando.
Solução alternativa de 60 Hz
Conforme mencionado, o limite de largura de banda também é ditado pela versão e configuração do modo alternativo USB-C Displayport. Para obter mais largura de banda, use DP 1.3+ e/ou 4 faixas (no máximo) em vez de 2 da fiação USB-C. O primeiro não pode ser alterado no mesmo hardware, o último às vezes pode no utilitário de configuração do firmware (“BIOS”), procure por “Modo de alta resolução USB-C” ou algo assim... No modo de 4 pistas sem USB 3.x está disponível ao lado do sinal de vídeo DisplayPort, apenas USB 2.0.
hotplug na doca
Para os mesmos 3 estados (sem encaixe, hotplugged, coldplugged), envie a saída de
Eu tenho
Por exemplo, nomes totalmente diferentes em comparação com
xrandr | egrep '^[^ ]' | grep -v 'Screen 0:' | sed -e 's/ (.*//'
Talvez lance alguma luz sobre o que é o quê. O Razer Blade 15" Base (2018) deve ter o display interno, 1×Thunderbolt3/USB-C, 1×HDMI 2.0 e 1×Mini DisplayPort 1.4.
Isso explica que eDP-1, HDMI-1-1 (embora não seja sua nomenclatura) e DP-1 está relacionado ao USB-C, como sabemos. Deixa DP-2 e DP-1-3. Acho que DP-2 é o Mini DisplayPort. E talvez o DP-1-3 seja o lado Thunderbolt dessa porta Thunderbolt/USB de uso duplo. Se houver uma interdependência, vamos confirmá-la habilitando-os primeiro individualmente e depois juntos. Desconecte o dock e troque
--off
todas as saídas. EntãoDessa forma, você pode forçar a GPU a produzir algo lá. Tente DP-1-3 a seguir. Funciona? Você pode habilitar os dois ao mesmo tempo? Também em diferentes resoluções (baixa resolução) (por exemplo, sem espelhamento)? Você poderia pegar emprestado um conversor Thunderbolt para DP? Verifique se este adaptador usa DP-1-3.
De qualquer forma ... se tudo isso for verdade, parece que o Xserver fez uma má escolha ao distribuir nomes conflitantes para algum tipo de divisor de saída interno. Seria interessante ver se você só poderia reiniciar o Xserver depois de fazer o hotplug do dock sem reinicialização completa. Se funcionar, o driver da GPU do kernel não parece provocar o problema, mas sim a enumeração em X11.
¹ Relógio de pixel calculado com a calculadora de tempo de vídeo de Tom e moldado à mão em uma linha de modelo.