Salut à tous!
Depuis que j'ai remplacé mes deux écrans dépareillés (IIyama 24" en 16/10ème 1920×1200px dalle TN en principal et LG 24" (ou 23" − peu importe) pourri en 16/9ème 1920×1080px dalle TN à droite) par trois BenQ 24" en 16/9ème 1920×1080 dalle AMVA (difficile de trouver des écrans abordables en 16/10ème et en dalle VA ou variante de VA), j'ai quelques problème au réveil des écrans (PC allumé normalement, juste les écrans coupés automatiquement par le PC quand pas d'activité utilisateur).
En effet, quand les écrans se réveillent, j'ai un des écrans qui prend la config d'un nouvel écran vierge dans KDE, et l'ajout d'un écran "0:0" dans le fichier "~/.config/plasmashellrc" dans la section "ScreenConnectors". J'ai fait un petit script à moitié Bash/à moitié Python pour corriger et relancer Plasma (sans quoi il ne prend pas en compte le fichier de config corrigé).
Au réveil des écrans j'ai:
cat ~/.config/plasmashellrc
...
[ScreenConnectors]
0=0:0
1=HDMI-2
2=HDMI-1
3=DVI-D-1
...
Mon script applique:
[ScreenConnectors]
0=HDMI-1
1=HDMI-2
2=DVI-D-1
Et après le redémarrage de Plasma, ça devient:
cat ~/.config/plasmashellrc
...
[ScreenConnectors]
0=HDMI-2
1=HDMI-1
2=DVI-D-1
...
Au niveau affichage, ça s'affiche normalement très brièvement au réveil des écrans, puis ensuite en général ça étire l'écran principal sur les deux autres avant de mettre deux des écrans comme j'ai configuré et le troisième vierge. Si je corrige pas avant la veille suivante des écrans, c'est un deuxième écran qui devient vierge en plus du premier, mais le fichier "plasmashellrc" reste le même.
Parfois c'est même encore "mieux": un des écrans ne sort pas de veille, et j'ai une ligne d'échec d'EDID dans les logs (visible avec dmesg). Il faut que j'appuis sur un des boutons de l'écran pour le réveiller à la main, et le PC le détecte et le rajoute, ce qui donne ensuite le résultat habituel avec la config de l'écran vierge.
Au niveau de mon PC et de mon install de Fedora:
Fedora 31 KDE 64 bits, à jour, toujours avec X11
Carte graphique: Sapphire Radeon Nitro+ RX580, version 4Go GDDR5, utilisation du pilote libre amdgpu
lspci -vv
...
08:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev e7) (prog-if 00 [VGA controller])
Subsystem: Sapphire Technology Limited Nitro+ Radeon RX 570/580/590
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 63
Region 0: [virtual] Memory at 500000000 (64-bit, prefetchable) [size=4G]
Region 2: Memory at 480000000 (64-bit, prefetchable) [size=2M]
Region 4: I/O ports at e000 [size=256]
Region 5: Memory at fcf00000 (32-bit, non-prefetchable) [size=256K]
Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: <access denied>
Kernel driver in use: amdgpu
Kernel modules: amdgpu
08:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]
Subsystem: Sapphire Technology Limited Device aaf0
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin B routed to IRQ 78
Region 0: Memory at fcf60000 (64-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
...
Trois écrans BenQ GW2470HL, tous connecté sur leur entrée HDMI 1 et avec la même config, et connecté sur la carte graphique de cette façon:
[*]HDMI-1 → Ecran de gauche
HDMI-2 → Ecran central (écran principal)
DVI-D-1 → Adaptateur DVI-D/HDMI → Ecran de droite[/*]
Ma carte graphique a deux HDMI, deux DisplayPort et un DVI-D. Au début j'avais branché mes écrans sur les deux HDMI et le DP-1 (via un câble DP → HDMI), mais ça posait encore plus de problème, surtout de la lenteur et des coupures de signaux vers l'écran connecté dessus quand le PC mettait en veille les écrans.
Quand j'étais en dual-screen, l'écran principal était branché sur son entrée HDMI sur le port HDMI-1 de la carte graphique et l'autre écran était branché sur son entrée DVI-D sur le port HDMI-2 de la carte graphique via un câble HDMI/DVI-D, et aucun problème.
Que ça soit avec mon ancien dual-screen ou mon triple-screen, j'ai une config "fixe" des positions des écrans:
cat /etc/X11/xorg.conf.d/10-multi-monitor.conf
Section "Monitor"
Identifier "HDMI-1"
Option "LeftOf" "HDMI-2"
EndSection
Section "Monitor"
Identifier "HDMI-2"
Option "Primary" "true"
EndSection
Section "Monitor"
Identifier "DVI-D-1"
Option "RightOf" "HDMI-2"
EndSection
Ma paire de scripts pour remettre mon triple-screen en place:
cat .multi-monitor.debug.sh
#!/bin/bash
kquitapp5 plasmashell
#kate ~/.config/plasmashellrc
python ~/.multi-monitor.debug.py
kstart5 plasmashell &
cat .multi-monitor.debug.py
#!/bin/python
import os
os.chdir("/home/vorahk/.config/")
data = None
with open("plasmashellrc", "r") as file:
data = file.read().split("\n")
if data:
with open("plasmashellrc", "w") as file:
badline = False
for line in data:
if not line or line == "":
badline = False
if line == "[ScreenConnectors]":
badline = True
file.write("[ScreenConnectors]\n")
# file.write("0=DP-1\n")
file.write("0=HDMI-1\n")
file.write("1=HDMI-2\n")
file.write("2=DVI-D-1\n")
if not badline:
file.write(line + "\n")
exit(0)
Je n'ai rien dans les logs en dehors des fois où un des écrans ne se réveille pas (juste une erreur d'EDID comme j'écrivais plus haut).
Niveau test:
J'ai créé un nouvel utilisateur, et je n'ai utilisé que Wayland avec: Plasma se plante au réveil des écrans, retour sur SDDM.
J'ai lancé F31 KDE 64 bits en live (avec X11 donc): pas de changement par rapport à mon install.
J'ai lancé F31 Workstation 64 bits en live (avec Gnome reposant sur Wayland): ça merdoie dans le même style.
J'ai fait l'install de Windows 10 sur un HDD à côté de mon SSD (où j'ai mon install de Fedora, j'ai débranché pour l'install), ce n'était pas que pour ça (des fois faut malheureusement un Windows pour certaines opérations sur le matos, style update de firmware...).
Après l'install: clone entre HDMI-1 et HDMI-2, DVI-D-1 désactivé. Pas de problème au réveil de écran, mais comme je ne pouvais pas faire autre chose que le clone sur les deux HDMI...
Pendant l'install des pilotes (mais pas le pilote graphique, puisque même pas téléchargé à ce moment-là), c'est passé en triple-screen (pas dans le bon sens, mais trois écrans distincts tout de même): certains programmes changeaient d'écrans au réveil des écrans, de façon aléatoire, et pas toujours les mêmes programmes.
Puis une fois le pilote graphique installé: tout est OK au réveil des écrans, plus rien ne bouge.
J'ajoute que j'ai déjà changé de ports les écrans entre HDMI-1, HDMI-2 et DVI-D-1, sans changements...
Mes tests semblent indiquer un problème au niveau du pilote graphique, ou peut-être d'un paramètre ou d'une config à modifier quelques part... Quelqu'un aurait une idée?