Double écran sous debian et le debug d’un serveur X

Quelques commandes et notes sur le debug d’un serveur X, utile pour l’installation d’un double écran ou de deux cartes vidéo.

Avoir un peu plus d’info sur le démarrage des cartes et les modes découverts:

$ startx -- -logverbose 6

Xinerama:

il est vieillissant mais il a l’avantage de faire tourner un écran virtuel sur cartes vidéo avec chacune leur écran. c’est une bonne alternative à  xrandr 1.3.

Section « ServerLayout »

   Identifier     "HDMI_and_LCD"
   Screen      0  "Screen0" 0 0
   Screen      1  "Screen1" Below "Screen0"
   Option "Xinerama" "1"

EndSection

Section « Screen »

   Identifier     "Screen0"
   Device         "card_330M"
   Monitor        "Philips"
       Option "ConnectedMonitor"       "DFP-0"
       Option "CustomEDID"     "DFP-0:/etc/X11/xorg.conf.d/philips"
   SubSection     "Display"
       Viewport    0 0
       Depth       24
       Modes "1920x1200"
   EndSubSection

EndSection

Section « Screen »

   Identifier     "Screen1"
   Device         "card_intel"
   Monitor        "Sony LCD"
   SubSection     "Display"
       Viewport    0 1200
       Depth       24
       Modes "1600x900"
   EndSubSection

EndSection

Xrandr 1.4:

avec xrandr 1.4 les multi cartes sont gérés mais il faut une distri qui l’embarque (ce n’est pas le cas de la debian Wheezy).

Section « ServerLayout »

   Identifier     "HDMI_and_LCD"
   Screen      0  "Screen0"
   Screen      1  "Screen1"
   Option "Xinerama" "0"

EndSection

Section « Screen »

   Identifier     "Screen0"
   Device         "card_330M"
   Monitor        "Philips"
       Option "ConnectedMonitor"       "DFP-0"
       Option "CustomEDID"     "DFP-0:/etc/X11/xorg.conf.d/philips"
       Option "MetaModes"      "DFP-0:1920x1200 +0+0"
   SubSection     "Display"
       Depth       24
       Modes "1920x1200"
   EndSubSection

EndSection

Section « Screen »

   Identifier     "Screen1"
   Device         "card_intel"
   Monitor        "Sony LCD"
   Option      "MetaModes"     "eDP-2:1600x900 +0+1200"
   SubSection     "Display"
       Depth       24
       Modes "1600x900"
   EndSubSection

EndSection

Gestion des EDID

Certaines cartes (c’est le cas sur le VAIO serie Z) n’accepte aucune description de moniteur manuel, elle cherche l’EDID du moniteur connecté, dans le cas ou le moniteur ne publie pas ou que la carte n’arrive à découvrir cet EDID on se retrouve bloqué avec soit le X server en vrac soit la carte montée mais aucune sortie vidéo. Pour remettre cela debout, il faut récupérer l’EDID du moniteur à  la mano au format binaire et l’identifier lors du démarrage de X.

Récupérer l’EDID:

Soit utiliser un outil (attention il ne voit pas toujours l’écran qu’on veut) pour afficher la liste des ecran vu:

$ get-edid | parse-edid

pour avoir le fichier binaire

$ get-edid>/etc/X11/xorg.conf.d/ecran.edid

Si l’ecran n’est pas list, il faut passer par le log de Xorg qui en mode verbose 6 affichera la chaine hexa des EDID decouvert. il faut ensuite copier et transformer cette chaine hexa en binaire. un petit coup de python ou php fait l’affaire.

Force l’EDID dans Xorg

dans la section screen, (je prefere dans screen car ca correspond avec la vision xorg: screen = quel moniteur avec quel carte)

       Option "CustomEDID"     "DFP-0:/etc/X11/xorg.conf.d/ecran.edid"

le DFP-0 est l’identifiant de la sortie vidéo de la carte, on la découvre dans le log de xorg avec le verbose 6.