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
Avant toute chose, vous pouvez essayer de configurer votre TV-OUT avec un outil graphique grâce au paquet nvtv. Les méthodes qui suivent sont plus complexes, mais marchent à tous les coups, car entièrement textuelles…
Sur Feisty Fawn (sortie avril 2007), un nouveau paquet pour configurer Xorg (et notamment le double-écran) fait son apparition : displayconfig-gtk. Cela peut vous être utile…

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
Avant ça il faudra peut-être installer nvidia-settings par
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 :

  1. Clone : clone l'écran principal
  2. RightOf : à droite de l'écran principal
  3. LeftOf : à gauche de l'écran principal
  4. Above : au dessus de l'écran principal
  5. 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 :

  1. RightOf : à droite de l'écran principal
  2. LeftOf : à gauche de l'écran principal
  3. Above : au dessus de l'écran principal
  4. 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-BBelgium, Denmark, France, Finland, Germany, Guinea, Hong Kong, India, Indonesia, Italy, Malaysia, The Netherlands, Norway, Portugal, Singapore, Spain, Sweden, and Switzerland
PAL-DChina and North Korea
PAL-GDenmark, Finland, Germany, Italy, Malaysia, The Netherlands, Norway, Portugal, Spain, Sweden, and Switzerland
PAL-HBelgium
PAL-IHong Kong, Ireland, and United Kingdom
PAL-K1Guinea
PAL-MBrazil
PAL-NParaguay, and Uruguay
PAL-NCArgentina
NTSC Pays
NTSC-JJapan
NTSC-MCanada, 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
HD480i480 line interlaced
HD480p480 line progressive
HD720p720 line progressive
HD1080i1080 line interlaced
HD1080p1080 line progressive
HD576i576 line interlace
HD576p576 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)
  • 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

  • nvidia_tvout.txt
  • Dernière modification: Le 28/04/2018, 11:18
  • (modification externe)