Mise en oeuvre du boîtier Matrox TripleHead2Go Digital
Basiquement, le TripleHead2Go de Matrox est un petit boîtier permet avec une seule sortie vidéo de gérer jusqu'à trois écrans. La force de cette solution par rapport à Xinerama est qu'elle permet d'avoir un bureau unifié réparti sur toutes les dalles sans aucune perte de performance. Maintenant, comme beaucoup de périphériques, la TripleHead2Go n'est prise en charge que pour Windows et MacOS, mais comme nous allons le voir, elle fonctionne aussi très bien sous Linux.
- v7 - Correction ortho/typo (2009-05-21 09:30)
- v5 - Ajout de la méthode compiz-fusion (2009-05-20 08:22)
- v7 - Correction ortho/typo (2009-05-21 09:30)
- v5 - Ajout de la méthode compiz-fusion (2009-05-20 08:22)
Déjà, pourquoi trois écrans ?
Pour les gamers la raison est évidente mais pour les autres, la question peut en effet se poser lorsque l'on voit la taille des écrans disponibles. A l'origine ce fût pour moi un simple calcul financier du prix au pixel qui m'avait amené à considérer qu'il était plus rentable de cumuler trois écrans de 17" ce qui donne la surface d'un 30" plutôt que de dépenser une fortune sur un seul 24". Un calcul qui j'imagine est encore aujourd'hui valide mais pour des diagonales bien supérieures.
A l'argument du coût au pixel s'ajoute celui de l'ergonomie du poste de travail. Si un grand écran valait trois de moindre taille, il y a longtemps que l'on aurait changé cela dans les salles de marché et autres postes de supervision. Pour le développement, un grand n'est là aussi pas très intéressant La plupart du temps, et c'est encore plus vrai avec les applications WEB, nous avons en permanence un EDI (ex. eclipse), le navigateur et une fenêtre de traces serveur. Et il est tout de même plus simple d'avoir tout ce beau monde visible en même temps. Dans ce cas, il est globalement plus intéressant d'avoir une surface très large et moins haute que ne le permettrait un seul grand écran. Maintenant ceci est variable d'un métier à l'autre et n'est absolument pas vrai pour un graphiste ou un photographe par exemple.
L'argument énergétique, lui, n'a pas tenu bien longtemps mais en revanche il est faux de penser que 3 écrans consomment plus qu'un écran de plus grande taille. La raison est assez simple à comprendre, en attendant que l'OLED ne se démocratise, une dalle LCD a besoin d'un éclairage arrière. Et la puissance de cet éclairage est proportionnel à la surface traitée, soit en moyenne 0.03W au cm^2.
En revanche, là où le triple écran se distingue c'est dans la modularité des allumages. Vous pouvez en effet n'allumer que les écrans utiles, par exemple en lecture d'une vidéo. Mais je dois bien avouer que c'est le seul cas qui m'amène à le faire. Au fond, là aussi trois écrans ou un seul revient au même, dans les deux cas il faut proscrire les beaux économiseurs d'écrans énergivores pour coller dans votre xorg.conf les lignes magiques qui coupent l'éclairage dès que vous avez le dos tourné :
Section "ServerLayout"
....
Option "SuspendTime" "720"
Option "OffTime" "840"
Option "StandbyTime" "360"
EndSectionsection ServerLayout de /etc/X11/xorg.conf
En somme, trois écrans, au delà de la forte impression de Wow que cela décroche chez les copains/copines, sont avant tout extrêmement pratiques à l'usage et cette disposition devient rapidement très addictive.
Animation des trois écrans
Pour mettre en oeuvre trois écrans avec Xorg, il n'y a pas 36 solutions :
- L'utilisation d'une carte PCI supplémentaire. Le premier inconvénient de cette approche est de trouver la dite carte PCI qui commence à se faire très rare dans les boutiques. En plus cela ajoute de 20 à 40W sur la facture énergétique soit plus que la consommation d'un 17" (en gros 27w). Enfin pour unifier les trois écrans, il faut passer par Xinerama qui est d'une grande lenteur.
- Acheter une carte 4 sorties, genre une nVidia Quadro NVS 4xx. Pourquoi pas mais elles sont assez chères.
- Utiliser les GPU déportés via DisplayLink. C'est une bonne solution mais demande à changer les écrans et surtout ce n'est pas encore disponible sous GNU/Linux, mais
ça arrive. - Le gluttage d'un portable/netbook avec la station de travail via SSH/Synergy. Là aussi ça marche très bien mais point du bureau unifié dans ce cas.
- Enfin, Le boîtier Matrox qui cumule à peu prés tous les avantage mais qui reste encore assez cher, même s'il l'est un peu moins qu'une carte Quadro NVS.
Après avoir utilisé tour à tour chacune de ces solutions (sauf la quadro) j'ai donc fini par craquer pour le boîtier Matrox avec une certaine appréhension classique pour les Linuxiens : « encore un bidule pris en charge pour Windows et MacOS => des heures de galère sous GNU/Linux ». Et bien pas du tout...
La TripleHead 2 go - Digital edition
Une fois déballé, ce boiter tout métal surprend déjà par l'absence d'alimentation externe, le jus étant pris directement sur le bus USB par le câble fournit avec. Dans le lot, on trouve aussi un câble VGA et un câble DVI Dual-Link. Pas de doc, juste un CD... pour Windows.
Le principe technique de ce boîtier est de s'intercaler entre la carte graphique d'un côté et les écrans de l'autre. La carte voit alors le boîtier comme un écran d'une résolution équivalente aux trois écrans cumulés. Ainsi pour trois 1280x1024, la boite donne une résolution de 3840x1024. Il faut évidement que la carte soit en mesure de prendre en charge cette résolution, ce qui se teste facilement en allant
Le boîtier n'a ensuite plus qu'à séparer le signal pour le répartir sur les trois sorties. A noter que l'édition digital dispose d'une entrée VGA, d'une entrée DVI et de 3 sorties DVI. Le câble dual-link permet quant à lui de prendre en charge de plus fortes résolutions et me concerne donc assez peu. A noter que ce boîtier existe aussi en analogique ou pour deux écrans.
Les branchements se font rapidement et on ne manquera pas de pester contre le câble dual-link qui pour le prix pourrait être un peu plus long. Une fois l'ensemble connecté, câble USB compris, redémarrage de la machine et là, pouf, que dire... ça marche tout seul. Les trois écran s'animent de concert pour offrir la page de démarrage la plus étrange qui m'ait été donné... étalé au format Minitel sur trois dalles... assez déroutant...
Quelques secondes plus tard (vive le SSD), voilà avec X11 lancé avec une belle boite de connexion, elle aussi étalée sur trois écrans, pas terrible... Retour donc en mode console (CTRL-ALT-F1), autentification, et là on commence le paramétrage.
Paramétrage de Xorg
La première étape consiste déjà à faire dans la section Monitor de /etc/X11/xorg.conf. Il n'y a pas grand chose à faire en réalité que d'en mettre le moins possible pour laisser Xorg détecter la résolution automatiquement renvoyée par la boite.
Section "Monitor"
Identifier "TripleHead2Ho"
VendorName "Matrox"
EndSectionsection Monitor de /etc/X11/xorg.conf
A ce stade, tout doit marcher au redémarrage à un détail prés. X11 s'imagine avoir un seul écran de grande taille. Ainsi même si la résolution sera la bonne sur chaque écran, la maximisation d'une fenêtre se faira sur les trois écrans. En l'absence d'un logiciel de gestion pour Linux nous avons deux solutions : passer par le pilote nVidia, ou passer par compiz-fusion.
Le faux Xinerama de nVidia
L'astuce consiste ici à utiliser le faux module Xinerama du pilote nVidia de sorte à faire croire à X11 que l'on a bien trois écrans avec trois placements différents. Cela se fait dans la section Device de /etc/X11/xorg.conf :
Section "Device"
Identifier "nVidia"
VendorName "nVidia Corporation"
BoardName "NVIDIA GeForce 8600 GT"
Driver "nvidia"
Option "DPMS"
Option "DynamicTwinView" "false"
Option "AddARGBGLXVisuals"
Option "TwinviewXineramaInfo" "True"
Option "TwinViewXineramaInfoOverride" "1280x1024+0+0, 1280x1024+1280+0, 1280x1024+2560+0"
EndSectionsection Device de /etc/X11/xorg.conf
L'utilisation d'une option "twinview" sans activer TwinView peut sembler étonnante mais cela marche parfaitement. Chaque coordonnée indiquée par l'option TwinViewXineramaInfoOverride représente d'abord la taille de l'écran physique, puis le décalage horizontal et vertical.
Ceci fait, il ne reste plus qu'à sauver le fichier de configuration et à relancer X11 pour apprécier à quel point tout cela marche bien.
Les bureaux de compiz-fusion
Autre possibilité si vous n'avez pas de carte nVidia, utiliser compiz-fusion qui permet la séparation d'un grand écran en plusieurs bureaux. Pour cela, vous devez ouvrir le panneau de configuration de compiz et vous diriger vers Général/Options Générales/Display Settings. Vous y trouverez une zone d'édition nommée Sorties qu'il suffit de renseigner un peu comme le faux Xinerama de nvidia
1280x1024+0+0
1280x1024+1280+0
1280x1024+2560+0
Ceci étant fait, allez dans l'onglet Desktop Size pour définir la Taille virtuelle horizontale à 1 (comme les autres paramètres de la page). Validez l'ensemble et c'est gagné.
Conclusion
Même si l'on regrettera l'absence de logiciel de paramétrage dynamique (surtout pour les joueurs) et le fonctionnement étrange en mode texte rendant la console système assez inutilisable, ce boîtier est juste parfait :
- Le bureau est réellement unifié sur les trois écrans ce qui n'était pas le cas pour SSH/synergy
- Par rapport à Xinerama, les performances sont strictement les mêmes que pour un seul écran.
- La consommation est réduite à moins de 500mA ce qui est mieux que toutes les autres solutions (carte PCI ou machine séparée).
- Le boitier pendre en charge le DPMS ce qui permet d'éteindre les trois écrans d'un coup automatiquement en période d'inactivité.
- Enfin c'est d'une simplicité de mise en œuvre absolument déconcertante, à se demander pourquoi je me suis embêté avec les autres solutions pendant deux ans...