Infos

Fil RSSÉquipe Infoglobe

Archives

Configurer sa carte vidéo (sortie DVI) sous Linux

Posté par Yannick Pavard le 13 septembre 2008

J’ai eu l’occasion il y a quelques semaines déjà de m’attarder à la configuration d’une carte video (nvidia pour ne pas la citer) sous Linux, mais en utilisant la sortie DVI. Le but était de pouvoir faire fonctionner mon installation MythTV avec ma TV LCD et je peux vous dire que ça n’est pas une affaire simple. J’ai donc décider de partager avec vous le résultat de mes recherches.

Commençons par le début :

Avant toute chose, vous devez installer le driver de votre carte vidéo. Étant donné que nvidia est la carte la mieux supportée sous Linux, je ne vous donnerais que des informations en rapport avec cette carte. Et puis je ne rentrerais pas dans les détails technique non plus, car cela peut dépendre d’une configuration à l’autre.

Par exemple sous Ubuntu cela s’effectue très simplement avec l’outil « Ubuntu Restricted Drivers Manager » alors qu’avec les autres distributions il faudra souvent télécharger des paquetages particuliers (nvidia-glx-new ou nvidia-glx ou bien encore nvidia-glx-legacy en fonction de votre modèle de carte vidéo). J’ai également fait l’essai d’installer le paquetage mis à disposition via le site de nvidia, mais pour cela plusieurs précautions sont à prendre comme désinstaller certaines paquetages, bref à tester en dernière minute, car les distributions récentes sont à même d’installer ce driver sans problème.

Une fois installé, redémarrer votre serveur graphique (Ctrl+Alt+Backspace) et vous devriez avoir un raccourci pour lancer l’outil de configuration de nvidia ou bien en ligne de commande : nvidia-settings

Vous devriez voir quelque chose comme ceci :

La deuxième étape consiste à adapter le fichier de configuration de votre serveur graphique à vos besoins. Que vous soyez sous Ubuntu, Open Suse ou tout autre distribution, il y a peu de chance que votre fichier de configuration se trouve autre part que dans le répertoire suivant : /etc/X11/xorg.conf

Pour éditer ce fichier, il faut être identifié avec l’utilisateur root.

Exemple dans une console cela donnerait (sous Ubuntu) :

sudo vi /etc/X11/xorg.conf

ou si vous n’aimez pas l’éditeur VI, prennez GEDIT :

sudo gedit /etc/X11/xorg.conf

Détecter votre périphérique de sortie :

Avant d’éditer ce fichier, peut être pourrions nous détecter les périphériques branchés sur votre carte graphique ? Par exemple ma carte nvidia 6200 était branché sur ma télé HD sur l’entrée HDMI (cable DVI-HDMI) et c’est la toute la difficulté car par défaut le système semblait à même de pouvoir afficher une image sur la sortie S-VIDEO de ma carte, mais pas du tout sur la sortie DVI.

C’est en lisant ce tutoriel : http://doc.ubuntu-fr.org/nvidia_tvout que je vous invite d’ailleurs à lire aussi, que j’ai découvert la ligne magique qui va nous permettre de comprendre.

nvidia-xconfig --query-gpu-info

A vrai dire je ne sais trop comment cela fonctionne, il me semble que cela fonctionne parce que mon téléviseur supporte la norme EDID (VESA) et qu’il est capable de fournir plusieurs informations à ma carte vidéo. Pour ceux qui voudrait tenter l’expérience avec un téléviseur différent ou un simple moniteur, rien ne garantie le fonctionnement, mais le principe qui suit devrait convenir.

Cette commande affiche ceci :

Number of GPUs: 1

GPU #0:
Name      : GeForce 6200
PCI BusID : PCI:1:0:0

Number of Display Devices: 1

Display Device 0 (DFP-0):
EDID Name             : SAMSUNG
Minimum HorizSync     : 30.000 kHz
Maximum HorizSync     : 46.000 kHz
Minimum VertRefresh   : 59 Hz
Maximum VertRefresh   : 61 Hz
Maximum PixelClock    : 80.000 MHz
Maximum Width         : 1920 pixels
Maximum Height        : 1080 pixels
Preferred Width       : 1280 pixels
Preferred Height      : 720 pixels
Preferred VertRefresh : 60 Hz
Physical Width        : 160 mm
Physical Height       : 90 mm

Comme vous pouvez le voir, on a pas mal d’informations intéressantes, notamment :

  • Le périphérique branché qui nous intéressé sur la sortie DVI identifié DFP-0 (avec d’autres sorties vous auriez CRT-0 ou TV-0 par exemple)
  • On connait les paramètres de synchronisation (fréquence horizontale et verticale) à allouer dans notre fichier de configuration Xorg
  • Le PixelClock peut être intéressant aussi si vous souhaitez calculer votre « Modeline » (on verra ce point un peu plus tard)
  • Ainsi que les dimensions optimisés pour votre téléviseur (qui défirent d’ailleurs de ce que la documentation m’indique)

Maintenant que nous avons obtenu ces informations, nous pouvons passer à la configuration de notre fichier xorg.conf

Configuration de xorg.conf

A partir des informations obtenu, j’ai pu configurer mon fichier pour afficher quelque chose avec la sortie DVI de ma carte.

Voici à quoi correspond à présent mon fichier :

Section "ServerLayout"
    Identifier    "ConfigurationParDefaut"
    screen      0 "SamsungDVI" 0 0
    Inputdevice    "Generic Keyboard"
    Inputdevice    "Configured Mouse"
EndSection

C’est ici que j’active ma configuration que j’ai décrite un peu plus dans le fichier. Je défini une sortie qui va utiliser la configuration que j’ai nommé « SamsungDVI »

Section "Module"
    Load        "dbe"
    Load        "extmod"
    Load        "freetype"
    Load        "glx"
EndSection

Chargement de module qui peuvent différent d’une configuration à l’autre. Le plus important étant je pense le module GFX pour le driver NVIDIA.

Section "InputDevice"
    Identifier    "Generic Keyboard"
    Driver        "kbd"
    Option        "CoreKeyboard"
    Option        "XkbRules"    "xorg"
    Option        "XkbModel"    "pc105"
    Option        "XkbLayout"    "us"
EndSection

Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
	Option		"CorePointer"
	Option		"Device"	"/dev/input/mice"
	Option		"Protocol"	"ImPS/2"
	Option		"ZAxisMapping"	"4 5"
	Option		"Emulate3Buttons"	"true"
EndSection

La configuration du clavier, mais je n’ai rien changé la dedans. Même chose pour la souris.

Section "Monitor"
    Identifier    "Samsung"
    Option        "DPMS"
    Horizsync    30-50
    Vertrefresh    60
    modeline  "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync
    Displaysize    336    210#96 DPI @ 1280x800
EndSection

Ici on trouve la définition concernant l’écran. C’est la que les choses se compliquent, parce que j’ai mis plusieurs valeurs de test sans trop savoir ce que ca donnerait. En l’occurence, la fréquence horizontale et verticale, ainsi que le/la « modeline ».

Pour le/la « modeline », j’ai fait plusieurs tests. Il existe en effet des pages internet ou l’on retrouve des formulaires de calcul comme celle-ci ou bien la page de Mythtv ICI.

Mais pour ma part j’ai utilisé une commande linux qui semblait mieux fonctionner. Cette commande s’appelle « GTF« , elle prend en paramètre la résolution verticale et horizontale ainsi que la fréquence de rafraîchissement.

Je ne sais pas si j’ai une bonne valeur du coup et j’ai cru comprendre que si on se trompait cela pourrait endommager notre écran.

Puis enfin j’ai une taille d’écran défini en 1280 sur 800. D’ailleurs je me rend compte que ça n’est pas la même valeur que le modeline. C’est sans doute ce qui explique que j’ai une partie de coupé sur mon écran en haut :-)

Section "Device"
    Identifier    "GeForce6200"
    Driver        "nvidia"
    Option        "AddARGBGLXVisuals"    "True"
    Option        "AddARGBVisuals"    "True"
    Option        "ConnectedMonitor"    "DFP"
    Option        "TVOutFormat"    "COMPONENT"
    Option        "TVStandard"    "NTSC-M"
    Option        "UseEvents"    "True"
    Busid        "PCI:1:0:0"
    Screen    0
EndSection

Ici, cela concerne les paramètre de la carte vidéo avec notamment la sortie que j’utilise (DVI) qui est identifié ici comme COMPONENT. Puis le format pour l’amérique du nord : NTSC-M.

Section "Screen"
    Identifier    "SamsungDVI"
    Device        "GeForce6200"
    Monitor        "Samsung"
    Defaultdepth    24
    Option        "DPI"    "100x100"
    Option        "UseEvents"    "1"
    Option        "AddARGBVisuals"    "1"
    Option        "AddARGBGLXVisuals"    "1"
    Option        "ConnectedMonitor"    "DFP"
    Option        "TVOutFormat"    "COMPONENT"
    Option        "TVStandard"    "NTSC-M"
    Option        "NoLogo"    "True"
    #Option         "IgnoreEDID" "true"
    #Option         "UseEDID" "False"
    #Option         "UseDisplayDevice" "TV"
    SubSection "Display"
        Depth    24
        Modes        "1280x720"    "1024x768"    "720x480"    "800x600"    "640x480"
    EndSubSection
EndSection

Ici d’autre paramètre pour ma carte vidéo, mais surtout beaucoup d’essai/erreur, donc des lignes qui devraient surement se trouver dans l’autre section, que l’on retrouve en double !

Je ne suis pas encore très à l’aise avec ce fichier de configuration, mais l’essentiel c’est que cela fonctionne à présent !

Conclusion  :

Que faut-il retenir de tout cela ? Je dirais trois choses :

  1. Installer correctement votre driver pour votre carte nvidia et vérifier si vous pouvez accéder à la configuration via le programme de nvidia
  2. Lancer la commande magique qui vous donnera des informations sur les sorties utilisés sur votre carte video qui sont reconnu sur votre TV (vous pouvez toutes les branchés si vous voulez : VGA, DVI, S-VIDEO)
  3. Ensuite, modifier votre fichier xorg.conf, relancer votre serveur graphique à chaque fois et vérifier si quelque chose s’affiche sur votre téléviseur. Si c’est le cas alors vous aurez réussi !

Si vous êtes aussi mauvais que moi, cela vous prendra bien deux jours !

Partagez ce billet avec :
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Wikio FR
  • YahooMyWeb

Catégorie(s) : Linux

Tag(s) : , , ,

Pas de commentaire

Pas encore de commentaire.

Laisser un commentaire

Flux RSS des commentaires de cet article. TrackBack URI