TV-OUT avec une Nvidia
Introduction
Si la méthode ne fonctionne pas, vous pouvez essayer de consulter la page « multi-ecran ».
Pilotes
Ce guide ne fonctionne que si vous avez installé les pilotes nVidia.
Accélération 3D
Vous devez vous assurer que vous avez l'accélération 3D :
glxinfo | grep direct
Devrait rendre :
direct Rendering : Yes
Utilisation de TwinView
Twinview est une fonction présente dans les cartes Nvidia récentes (Geforce 2MX et plus - les Nvidia utilisant le pilote normal).
Si vous n'êtes pas dans ce cas, rendez-vous plus bas.
Via les outils Nvidia
Premièrement, on enclenche l'utilisation du pilote propriétaire de Nvidia (le pilote Nvidia-glx se trouvant dans les dépôts, avec un glx-new nécessaire pour les cartes les plus récentes). Pour ce faire, allez voir dans le centre de contrôle des pilotes propriétaires.
Une fois que vous êtes sûrs d'avoir installé et activé le pilote proprio, on recharge le serveur X (ctrl + alt + bckspce).
Ensuite, on ouvre un terminal puis :
sudo nvidia-xconfig
Pas d'inquiétude à avoir, cette commande permet de sauvegarder un xorg.conf déjà existant, et en recréer à partir de celui-ci.
Pour l'activation de Twinview préférez
sudo nvidia-xconfig --twinview'' #(à vérifier dans man nvidia-xconfig)
Une fois que le nouveau fichier est créé, rechargez votre serveur X, puis à nouveau dans une console, tapez :
sudo nvidia-settings
sudo apt-get install nvidia-settings
ou en cliquant apt://nvidia-settings
Cette commande renvoie en affichage une interface, dans laquelle vous aurez divers sections. Dans la 2° section, vous pourrez activer Twinview, ou separate Xscreen.
N'oubliez pas de faire "sauvegarder les changements".
Xorg
Commencez par faire une sauvegarde de votre fichier de configuration xorg.conf, ouvrez un terminal et tapez :
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
En cas d'échec de vos tentatives de configuration, vous pouvez rétablir votre configuration graphique précédente en restaurant votre fichier xorg.conf avec la commande :
sudo cp /etc/X11/xorg.conf.bak /etc/X11/xorg.conf
Ouvrez le fichier avec votre éditeur de texte : Pour Gnome (Ubuntu) : gedit
gksudo gedit /etc/X11/xorg.conf
Pour KDE (Kubuntu) :
kdesu kate /etc/X11/xorg.conf
Pour XFCE (Xubuntu) :
sudo mousepad /etc/X11/xorg.conf
Device
Ajoutez les lignes suivantes à la section « Device » de votre fichier xorg.conf
et enregistrez-le:
Option "TwinView" "true" Option "TwinViewOrientation" "Clone" Option "TVOutFormat" "COMPOSITE" Option "TVStandard" "PAL-N" Option "SecondMonitorHorizSync" "30-50" Option "SecondMonitorVertRefresh" "60" Option "MetaModes" "1024x768,1024x768;800x600,800x600;640x480,640x480;512x384,512x384"
TwinView
Active le bi-écran
TwinViewOrientation
valeurs possibles :
- Clone : clone l'écran principal
- RightOf : à droite de l'écran principal
- LeftOf : à gauche de l'écran principal
- Above : au dessus de l'écran principal
- Below : en dessous de l'écran principal
Exemple pour "LeftOf" :
Option "TwinViewOrientation" "CRT-0 LeftOf CRT-1"
ou
Option "TwinViewOrientation" "LeftOf"
TVOutFormat
Si vous utilisez un cable S-Video, remplacez « COMPOSITE » par « SVIDEO » L'option SCART et COMPONENT existe aussi dans le pilote. COMPONENT vaut pour le format HDMI, et SCART pour le format Peritel. Cette fonction est à mettre dans la section Device utilisée par la sortie TV (dans le cas d'un twinview, pas d'erreur possible : il y en a qu'une)
TVStandard
Si vous utilisez le standard NTSC, remplacez « PAL-N » par « NTSC-M », ou un autre standard selon votre pays (la France utilise le standard PAL-N, donc aucune modification n'est à effectuer). Une liste des différents formats est disponible en bas de cette page.
Option "SecondMonitorHorizSync" "30-50"
Option "SecondMonitorVertRefresh" "60"
Dans le cas d'une télévision, ces paramètres sont inutiles. Cette fonction est à mettre dans la section Device utilisée par la sortie TV (dans le cas d'un twinview, pas d'erreur possible : il y en a qu'une)
MetaModes
Liste des différents modes vidéo sur l'écran principal et la correspondance sur l'écran secondaire. Si votre écran secondaire est une télé, il est fort possible qu'elle ne supporte pas d'autre modes que 800x600 et 640x480.
Remplacez alors la chaîne "1024x768,1024x768" par "1024x768,800x600".
Si votre écran principal supporte une résolution supérieure à 1024x768, (par exemple 1440x900), il faudra inclure cette résolution dans vos métamodes sous peine d'être limité à la résolution 1024x768 (les remarques concernant le mode de l'écran secondaire restent valables). Ajoutez par exemple la chaîne "1440x900,1440x900" (les deux écrans acceptent la même résolution) ou "1440x900,800x600" (le second écran est la télé).
Maintenant, redémarrez X (CTRL + ALT + RETOUR ARRIERE)
Méthode alternative (sans Twinview)
Cette méthode s'applique si TwinView ne fonctionne pas
Xorg
Premièrement, sauvegardez votre fichier xorg.conf
original:
$ sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
Éditez ce même fichier:
$ gksudo gedit /etc/X11/xorg.conf
Device
Vous devrez tout d'abord éditer la section « Device »:
Section "Device" Identifier "Device0" Driver "nvidia" Screen 0 Option "NoLogo" "true" Option "RenderAccel" "true" BusID "PCI:02:09:0" EndSection Section "Device" Identifier "Device1" Driver "nvidia" Screen 1 Option "TVOutFormat" "SVIDEO" Option "TVStandard" "PAL-B" Option "ConnectedMonitor" "TV" BusID "PCI:02:09:0" EndSection
- Les options « NoLogo » et « RenderAccel » sont optionnelles
- « BusID » doit déjà étre pré-rempli. Si ce n'est pas le cas, vous trouverez cette information en utilisant la commande
lspci
ou en regardant le contenu du fichier/var/log/Xorg.0.log
. - « TVOutFormat » peuvent être "COMPOSITE" ou "SVIDEO", ce qui dépend de la version des pilotes Nvidia que vous utilisez ("SVIDEO" ne fonctionne pas avec la version 1.0-7667 des pilotes).
- Les valeurs correctes de l'option « TVStandard » peuvent être trouvées dans le tableau en bas de page.
Monitor
Ensuite, trouvez la section « Monitor » et éditez-là comme ce qui suit:
Section "Monitor" Identifier "Monitor" #CRT HorizSync 30-70 VertRefresh 50-140 Option "DPMS" EndSection Section "Monitor" Identifier "Television" #TV HorizSync 30-50 VertRefresh 60 EndSection
La documentation Nvidia suggère l'utilisation des valeurs 30-50 pour l'option « HorizSync », mais je n'ai pas eu de chance avec ces dernières. L'utilisation de la commande startx
vous fournira les valeurs correctes pour votre télévision, si celles indiquées ne fonctionnent pas.
Télé 100Hz
Si vous avez une télé compatible 100Hz, vous pouvez modifier ce dernier paramètre afin de profiter d'une meilleur qualité d'image.
Typiquement, cela devrait donner :
HorizSync 30-50 VertRefresh 100
Screen
Ensuite, trouvez la section « Screen » et modifiez-la à l'aide de l'exemple ci-dessous. Naturellement, vous devez modifier les lignes « Modes » suivant vos résolutions. L'exemple ci-dessous est un exemple générique, et fonctionnera sur la plupart des télévisions et écrans CRT:
Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Television" DefaultDepth 24 SubSection "Display" Depth 24 Modes "640x480" EndSubSection EndSection
ServerLayout
Pour finir, trouvez la section « ServerLayout » et modifiez-la comme ce qui suit.
Section "ServerLayout" Identifier "Basic Layout" Screen 0 "Screen0" Screen 1 "Screen1" rightof "Screen0" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection
A la place de rightof, voici les valeurs possibles :
- RightOf : à droite de l'écran principal
- LeftOf : à gauche de l'écran principal
- Above : au dessus de l'écran principal
- Below : en dessous de l'écran principal
NB : Clone ne marchera pas ici !
D'autres options peuvent être trouvées en ouvrant le manuel de xorg :
man xorg.conf
Finalisation, test et dépannage
Maintenant, redémarrez simplement le serveur X, et cela devrait fonctionner. Si ce n'est pas le cas, toutes les erreurs se trouvent dans le fichier /var/log/Xorg.0.log
. Regardez-le et appliquez les changements en conséquence.
Méthode ultime !
Cette méthode devrait marcher à coup sûr. Elle a été testée sur une Geforce 256DDR et devrait fonctionner pour une TNT/TNT2 (voir même n'importe-quel carte, tant que le pilote supporte le TVout…).
Cette méthode devrait aussi fonctionner pour une autre carte, tant que le pilote le permet. Dans ce cas, ce sont les lignes "option" de la section "device" qui doivent différer de ce tutorial adapté pour nvidia.
Principe
Certaines cartes trop vieilles (notamment celles utilisant le pilote legagy) ne peuvent afficher simultanément l'écran et la télé.
Dans cette méthode, on va créer 2 fichiers :
- xorg.conf.notv : c'est le fichier xorg normal
- xorg.conf.tv : c'est le fichier xorg configuré pour la télé.
Il vous faudra donc dans un premier temps vous inspirez de ce qui est au dessus pour créer votre fichier xorg.conf qui marche avec la télé.
Xorg pour la télé
Reprennez donc votre xorg.conf pour que l'affichage télé fonctionne.
Les points les plus importants :
Device
Section "Device" Identifier "Device1" Driver "nvidia" Option "TVOutFormat" "SVIDEO" Option "TVStandard" "PAL-B" Option "ConnectedMonitor" "TV" EndSection
Le plus important, c'est que ConnectedMonitor ai la valeur "TV"
Monitor
Section "Monitor" Identifier "Television" #TV HorizSync 30-50 VertRefresh 60 EndSection
Je confirme que les valeurs 30-50 et 60 sont les bonnes ! :)
Screen
Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Television" DefaultDepth 24 SubSection "Display" Depth 24 Modes "640x480" EndSubSection EndSection
Vous pouvez changez 640*480 par une autre résolution. Pour ma part j'ai mis 800*600.
Server Layout
Section "ServerLayout" Identifier "Basic Layout" Screen "Screen1" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection
L'important ici c'est Screen qui comporte la même valeur que Identifier que la Section "Screen".
Script pour switcher
A ce stade, vous devez avoir réussi à faire un affichage sur la télé.
Créez donc deux fichiers distincts dans votre dossier personnel :
- xorg.conf.notv : le xorg qui marche avec l'écran
- xorg.conf.tv : le xorg qui marche avec la télé
Copiez ces deux fichiers dans /etc/X11/ :
sudo cp xorg.conf.notv /etc/X11 sudo cp xorg.conf.tv /etc/X11
Il ne vous reste plus qu'a créer le script nommé "nvidia" (toujours dans votre dossier perso) :
#!/bin/bash case $1 in tv ) cp /etc/X11/xorg.conf.tv /etc/X11/xorg.conf ;; notv ) cp /etc/X11/xorg.conf.notv /etc/X11/xorg.conf ;; * ) echo echo "Usage" echo echo " tv - use TV" echo " notv - use CRT" ;; esac
Sauvez le fichier et quittez. Rendez-le alors exécutable :
chmod u+x nvidia
(Ceci peut aussi se faire avec clic-droit+"propriété" sous nautilus/thunar)
Puis de le copier :
sudo cp nvidia /usr/local/bin
Utiliser le script
Afin de choisir entre l'affichage sur la télé ou sur l'écran, exécutez nvidia
en précisant votre choix :
nvidia tv
Puis redémarrez X ( CTRL + ALT + BACKSPACE). Si vous atterrissez sur la console sans qu'elle ne fasse rien, tapez startx
.
Si vous avez tout suivi, X devrait démarrer sur votre télé !
Pour revenir sur l'affichage normal, ouvrez une console, et tapez :
nvidia notv
Puis faites la même manip que précédemment (CTRL+ALT+BSPACE + startx
), et l'affichage devrait revenir sur votre écran.
Petit bonus, si vous tapez nvidia :
$ nvidia tv - use TV notv - use CRT
Ceci est obtenu grâce à la partie echo
du script. Libre à vous d'améliorer cette section à votre façon !
Astuce : Création d'icones dans le tableau de bord
(Importé de l'ancienne page incoming)
La commande xrandr -s permet de passer d'un metamode à un autre donc d'une résolution à une autre.
1/ Clic droit sur le tableau de bord du haut Ajouter au Tableau de bord Tiroir
2/ Pour le mode Clone : Clic droit sur le Tiroir : Ajouter au Tableau de bord Crée un lanceur personnalisé
Type : Application Nom : Clone LCD + TV Commande : xrandr -s 1 ========⇒ le "1" correspond au 2eme metamodes. le premier étant 0 (zéro) Tu choisis un zoli icon pour illustrer tout ça.
3/ Pour le mode Affichage unique Tu refais 2/ avec xrandr -s 0 à la place du xrandr -s 1 pour revenir au mode "Ecran unique"
Standards TV
Pour des raisons historiques, il existe deux principaux standards. NTSC est utilisé en Amérique et au Japon, le standard PAL en Europe et dans le reste du monde. Nvidia supporte aussi les standards haute-résolution, jusqu'à 1080i et 720p. Cette liste peut aussi être trouvée sur ce site.
PAL | Pays |
---|---|
PAL-B | Belgium, Denmark, France, Finland, Germany, Guinea, Hong Kong, India, Indonesia, Italy, Malaysia, The Netherlands, Norway, Portugal, Singapore, Spain, Sweden, and Switzerland |
PAL-D | China and North Korea |
PAL-G | Denmark, Finland, Germany, Italy, Malaysia, The Netherlands, Norway, Portugal, Spain, Sweden, and Switzerland |
PAL-H | Belgium |
PAL-I | Hong Kong, Ireland, and United Kingdom |
PAL-K1 | Guinea |
PAL-M | Brazil |
PAL-N | Paraguay, and Uruguay |
PAL-NC | Argentina |
NTSC | Pays |
NTSC-J | Japan |
NTSC-M | Canada, Chile, Colombia, Costa Rica, Ecuador, Haiti, Honduras, Mexico, Panama, Puerto Rico, South Korea, Taiwan, United States of America, and Venezuela |
Haute Résolution (HD) | Formats |
HD480i | 480 line interlaced |
HD480p | 480 line progressive |
HD720p | 720 line progressive |
HD1080i | 1080 line interlaced |
HD1080p | 1080 line progressive |
HD576i | 576 line interlace |
HD576p | 576 line progressive |
NOTE: Les personnes qui ont des sautillements d'image et qui ont choisi "PAL-N" (car habitant en France) devraient plutôt choisir "PAL-B". En effet, pour moi, cela a supprimé les sautillements.
Cable et résolutions
Les cables utilisés pour relier le pc à la télé ont des limitations techniques, ce qui expliquera que si vous brancher votre pc sur une tele HD avec un vieu cable s-vhs par exemple, vous ne pourrez pas augmenter la resolution de l'ecran tele au delà de 1024*768 alors que la tele peut normalement aller vers 1920*1080 !
Savoir cela vous evitera de vous enerver à essayer de modifier Xorg pour rien.
Par ordre de capacite:
- Vga
- s-vhs
- dvi
- hdmi
Le son par cable HDMI sur la plate-forme ION 330 de NVIDIA
Ubuntu 9.10 (Karmic)
Dans le menu Système/Préférences/Son allez dans l'onglet Matériel
Sélectionnez Digital Stereo (HDMI) Output + Analog Stereo Input dans la liste Profil
Ensuite ouvrez AlsaMixer avec un terminal :
alsamixer
Mettez <Master F>, PCM et Front au maximum du volume.
Puis, démuté IEC958, IEC958 D et <IEC958 1> en utilisant la touche m
Versions antérieurs
Dans le menu Système/Préférences/Son
Vous mettez tout sur
HDA NVIDIA Nvidia HDMI ( ALSA )
Enregistrer ce fichier dans votre /Home/Votre compte
ensuite
mettez le volume du PCM a fond dans le panel de contôle de volume
puis vous allez créer le fichier .asoundrc en tapant dans un terminal
sudo gedit .asoundrc
Ajoutez cette ligne
defaults.pcm.device 3
et Redémarrez la machine
le tour est jouer tout le son passe maintenant par le HDMI :D
( Test effectué sur un Asrock ION 330 )
Problèmes connus, astuces...
La commande suivante permet de faire détecter à la carte graphique les écrans connectés (et donc de faire des tests pour vérifier qu'on est bien branché sans avoir à relancer X).
nvidia-xconfig --query-gpu-info
L'une des raisons pour l'erreur ci-dessous peut être que vous n'utilisez pas les bonnes sorties de la carte graphique. Dans mon cas (GeForce6200) je peux utiliser les sorties VGA et TV en même temps mais pas DVI et TV. (Mais est-ce une généralité ? Qqn peut confirmer ?) [akuma]
(EE) NVIDIA(0): The requested configuration of display devices is not (EE) NVIDIA(0): supported in the hardware.
Le problème de la TV en noir et blanc
Dans certaines configurations, il arrive que l'image affichée sur la télévision soit en noir et blanc. Pour résoudre ce conflit, il faut régler convenablement son fichier xorg.conf. Si vous utilisez apt://nvidia-settings, vous devriez avoir à la fin une section [Screen]. Avant "EndSection", rajoutez ceci :
Option "TVStandard" "PAL-B" Option "TVOutFormat" "COMPOSITE"
Ensuite redémarrez votre serveur X (ctrl+alt+backspace), et si tout se passe bien, vous aurez la couleur !
Couper l'envoi du son de la sortie HDMI
Il se peut que vous ayez besoin de couper l'envoi du son par la sortie HDMI notamment dans le cas où il vous est impossible de relier le son entre votre carte graphique et votre carte mère ou si vous voulez utiliser les sorties son de votre carte audio. Vous allez devoir utiliser un EDID personnalisé.
- Récupérer l'EDID à partir du programme de configuration nVidia (GPU-0(xxx)→DFP-1-xxx→Bouton Acquire EDID (sauvegarder le fichier en mode binaire)
- Télécharger et installer le programme edid_disable_exts
- Modifier le fichier EDID avec la commande ./edid_disable_exts [–to-dvi] [input_file] [output_file] (je n'ai pas utiliser l'option [–to-dvi])
- Modifier le fichier /etc/X11/xorg.conf en rajoutant dans la section [Device]
Section "Device" Identifier "nVidia" Driver "nvidia" Option "CustomEDID" "DFP-1:/etc/X11/edid-modified.bin" EndSection
Des exemples concrets qui fonctionnent
Ici vont être donnés différents xorg.conf dans lesquels twinview est employé, de divers manière, et ceci afin de vous donner un coup de main beaucoup plus précis, concret et fiable.
Cet exemple donne concrètement un double affichage. Screen0 est un écran branché sur VGA et Screen1 une TV, n'ayant qu'une prise péritel (j'utilise un SVIDEO et un adaptateur, et je spécifie l'option composite, sinon le tv ne comprendrait rien (noir et blanc)). Dans ma config, je dispose de 2 bureaux distincts, paramétrables presques totalement indépendant.
# nvidia-settings: X configuration file generated by nvidia-settings # nvidia-settings: version 1.0 (buildmeister@builder3) Mon Apr 16 20:38:05 PDT 2007 Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 Screen 1 "Screen1" RightOf "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" EndSection Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" EndSection Section "Module" Load "dbe" Load "extmod" Load "type1" Load "freetype" Load "glx" EndSection Section "ServerFlags" Option "Xinerama" "0" EndSection Section "InputDevice" # generated from default Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "fr" Option "XkbVariant" "oss" EndSection Section "Monitor" # HorizSync source: xconfig, VertRefresh source: xconfig Identifier "Monitor1" VendorName "Unknown" ModelName "TV-0" HorizSync 31.4 - 60.0 VertRefresh 56.2 - 75.0 Option "DPMS" EndSection Section "Monitor" # HorizSync source: edid, VertRefresh source: edid Identifier "Monitor0" VendorName "Unknown" ModelName "NOKIA 500Xa" HorizSync 31.0 - 60.0 VertRefresh 56.0 - 75.0 Option "DPMS" EndSection Section "Device" Identifier "Videocard0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce4 MX 4000" BusID "PCI:1:0:0" Screen 0 Option "TVStandard" "PAL-N" Option "TVOutFormat" "COMPOSITE" EndSection Section "Device" Identifier "Videocard1" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce4 MX 4000" BusID "PCI:1:0:0" Screen 1 EndSection Section "Screen" Identifier "Screen1" Device "Videocard0" Monitor "Monitor1" DefaultDepth 24 Option "metamodes" "TV: 1024x768 +0+0; TV: nvidia-auto-select +0+0" SubSection "Display" Depth 24 Modes "1600x1200" "1280x1024" "1024x768" "800x600" "640x480" EndSubSection EndSection Section "Screen" Identifier "Screen0" Device "Videocard1" Monitor "Monitor0" DefaultDepth 24 Option "metamodes" "CRT: 1024x768_72 +0+0; CRT: 1024x768_70 +0+0; CRT: nvidia-auto-select +0+0" SubSection "Display" Depth 24 Modes "1600x1200" "1280x1024" "1024x768" "800x600" "640x480" EndSubSection EndSection
Liens
- Wiki anglais (anglais)