====== Installer et configurer une carte NVIDIA ======
===== Bases =====
==== Vérifications ====
Pour en installer une il vous faut :
  * une carte nvidia 8-)
  * 20 minutes
  * xorg (le serveur graphique)

Pour que tout se passe bien, passez en init 3
<code>
telinit 3
</code>

==== Installation des pilotes (non libres) ====
Ensuite installez les drivers :
=== Si vous avez une carte récente : (>geforce2) ===
<code>
pacman -S nvidia
</code>
__Note__ : sous avez un kernel autre que le kernel de base, installez le paquet correspondant c'est à dire nvidia-ck nvidia-beyond ... \\
__Note2__ : si vous avez un kernel custom que vous avez fait avec vos ptits doigs agiles installez le pkg de wain se trouvant sur le repo archlinuxfr :
<code>
pacman -S nvidia-driver
</code>
Et rajoutez "nvidia" dans votre liste de DAEMONS du fichier /etc/rc.conf
=== Si vous avez une ancienne carte : ===
<code>
pacman -S nvidia-legacy
</code>
__Note__ : sous avez un kernel autre que le kernel de base, installez le paquet correspondant c'est à dire nvidia-legacy-ck nvidia-legacy-beyond ... 


==== Configuration de xorg ====
Si votre fichier n'est pas encore là :
<code>
pacman -S hwd
hwd -u
hwd -xa
</code>
Editez la section keyboard pour avoir les bonnes valeurs dans :
<code>
        Option "XkbLayout" "fr"
        Option "XkbVariant" ""
</code>
A l'aide de votre éditeur préféré, éditez le fichier /etc/X11/xorg.conf comme suit :
<code>
# This loads the GLX module
   Load       "glx"
# This loads the DRI module 
#    Load       "dri"
...
Section "Device"
    Identifier  "Card0"
    Driver      "nvidia"
EndSection
...
#Section "DRI"
# Mode 0666
#EndSection
</code>

Vérifions que ça fonctionne en chargant le module nvidia :
Si vous utilisez les drivers nvidia / nvidia-legacy (les paquets officiels arch)
<code>
modprobe nvidia
</code>
Si vous utilisez nvidia-driver
<code>
/etc/rc.d/nvidia start
</code>
Puis on lance xorg :
<code>
startx
</code>
Si il y'a un erreur du genre : xterm/xclock not found installez le paquet **xorg-client**

===== Configuration avancée =====

==== Support de Beryl ====
[[:howto:beryl|Beryl nécessite le support du rendu "GLX_texture_from_pixmap"]], désormais inclus dans le driver nvidia.\\
Pour l'activer, ajoutez ces deux options:\\
<code>
Section "Device"
  Driver "nvidia"
  [...]
  Option "TripleBuffer" "True"
  Option "AddARGBGLXVisuals"
EndSection

[...]

Section "Extensions"
  Option "Composite" "Enable"
EndSection</code>



==== FastWrite / SBA ====
Bon maintenant faisons cracher ses tripes à la carte vidéo LOL
=== Vérifications ===
Votre carte supporte-t-elle une de ces 2 options ou les 2 ?\\
__ATTENTION__ : cela ne fonctionne qu'avec des Geforces et pas toutes
<code>
cat /proc/driver/nvidia/agp/card
Fast Writes: 	 Supported
SBA: 		 Supported
AGP Rates: 	 8x 4x 
Registers: 	 0x1f000e1b:0x1f004312
</code>
Cette commande vous permet de voir quels options sont supportées \\
Si aucune passez votre chemin :-/

=== Activations des options supportées ===
Editez votre fichier /etc/modprobe.conf
<code>
alias char-major-195 nvidia
alias /dev/nvidiactl char-major-195
options nvidia NVreg_EnableAGPSBA=1 NVreg_EnableAGPFW=1
</code>
__Note__ : Evidemment si le FastWrite n'est pas supporté : **NVreg_EnableAGPFW=0** et si le SBA n'est pas supporté : **NVreg_EnableAGPSBA=0** n' essayez pas de forcer ça fonctionnera pas !

Editez maintenant le fichier /etc/X11/xorg.conf comme suit :
<code>
Section "Device"
    Identifier  "Card0"
    Driver      "nvidia"
    BusID       "PCI:01:00:0"                  #lspci pour savoir
    VideoRam    262144                         #taille de la ram (non obligatoire)
    Option      "RenderAccel" "true"           #pour l'extention composite
    Option      "NoLogo"      "1"              #"0" pas de logo au lancement de X
    Option      "AllowGLXWithComposite" "True" #permet d'avoir l'extention composite + GLX
    Option      "backingstore" "true"
    Option      "DPMS"                         #gestion d'énergie
    Option      "NvAGP" "3"                    #vitesse du bus AGP
EndSection
</code>
Pour les options AGP voir : [[http://download.nvidia.com/XFree86/Linux-x86/1.0-9626/README/appendix-f.html]]
    Option "NvAgp" "0"  ... disables AGP support
    Option "NvAgp" "1"  ... use NVAGP, if possible
    Option "NvAgp" "2"  ... use AGPGART, if possible
    Option "NvAGP" "3"  ... try AGPGART; if that fails, try NVAGP




A la fin de votre /etc/X11/xorg.conf, rajoutez :
<code>
Section "Extensions"
   Option "Composite" "Enable"
   Option "RENDER" "Enable"
   Option "DAMAGE" "Enable"
EndSection
</code>

=== ça marche (tm) ? ===
Pour savoir :
Pour une carte AGP
<code>
cat /proc/driver/nvidia/agp/status
</code>
Pour une PCI-Express
<code>
cat /proc/driver/nvidia/registry 
</code>
la sortie doit ressembler à ça :
<code>
Status:          Enabled
Driver:          AGPGART
AGP Rate:        8x
Fast Writes:     Enabled
SBA:             Enabled
</code>
On voit que l'AGP est passé à 8x et le FastWrite / Side Band Addressing sont activés !!

==== Variables d'environnement ====
Vous pouvez controlez le rendu de votre carte avec les variables d'environnements :
<code>
export __GL_FSAA_MODE=1
export __GL_LOG_MAX_ANISO=2
export __GL_SYNC_TO_VBLANK=1
</code>
Vous pouvez mettre ces codes dans votre .xinitrc / /etc/profile ...

La liste complète des variables ici : [[http://download.nvidia.com/XFree86/Linux-x86/1.0-9626/README/appendix-e.html]]



==== Overclock ====
Et si on veux griller du pinguin, on peux même activé l'overclock !\\
/!\ A effectuer a vos risques et périls ! Toutes cartes mortes du a une surchauffe de composants ne sera pas remboursée !\\
En vrai vous ne craignez pas grand chose si vous êtes prudent =)\\
Il faut rajouter une option Coolbits dans votre /etc/X11/xorg.conf\\
<code>
Section "Device"
    Identifier  "Card0"
    Driver      "nvidia"
    [...]
    Option     "Coolbits"      "1"
</code>
Il suffit ensuite de relancer votre X (ctrl +alt +backspace)
Lorsque vous lancerez nvidia-settings (dans les menus ou en console), un nouvel onglet "overclock" devrait apparaitre, et vous pourrez augmenter les frequences de la RAM et du GPU de carte graphique (un outils de test est integré). Vous pouvez sans mal augmenter de quelques Mhz, et ensuite passer à une periode de tests ;)


====  Bi-écran powered ====
Tiens j'ai 2 sorties sur ma carte qui roxe déjà sa race ... (marche même quand y'a une sortie VGA et une DVI ! merci aux transciever DVI/VGA)
Sous nvidia c'est facile d'avoir 2 écrans en même temps, il suffit d'éditer /etc/X11/xorg.conf comme suit :
<code>
Section "Device"
    Identifier  "Card0"
    Driver      "nvidia"
    ...
    #Option bi-écran
    Option "TwinView"
    Option "SecondMonitorHorizSync"   "40-80"  #Raffraichissement horizontal du second moniteur
    Option "SecondMonitorVertRefresh" "50-60"  #Raffraichissement vertical du second moniteur
    Option "TwinViewOrientation"      "RightOf" #Emplacement du second moniteur
    Option "MetaModes"                "1600x1200,1280x1024;1024x768,NULL;1280x1024,NULL;800x600,NULL;1600x1200,NULL" #Différents modes
    Option "ConnectedMonitor"         "CRT-0, CRT-1" #Types de moniteurs connectés
EndSection
</code>
Explications:

Option "TwinView" : obligatoire sinon ça fonctionnera pas\\
Option "SecondMonitorHorizSync" Fréquence de rafraichissement horizontal de votre second moniteur ( mettez des fréquences compatibles ... )\\
Option "SecondMonitorVertRefresh" Fréquence de rafraichissement vertical de votre second moniteur ( mettez des fréquences compatibles aussi... )\\
Option "TwinViewOrientation" Où se trouve le 2ème moniteur par rapport au moniteur principal ?\\
  * Liste à puce
  * RightOf ( à droite )
  * LeftOf ( à gauche )
  * Above ( au dessus )
  * Below ( en dessous )
  * Clone ( Affichage identique sur les 2 ) 
Option "MetaModes" Modes graphiques, exemple:\\
  * "1600x1200,1280x1024;" => Ecran 1 en 1600x1200, Ecran 2 en 1280x1024
  * "1024x768,NULL;" => modes pour l'OpenGl plein écran sinon vos jeux seront sur les 2 écran en même temps !!! 
Option "ConnectedMonitor" déficnition des types de moniteur connectés\\
  * CRT-X = Ecran cathodique
  * DFP-X = Ecran Plat

Toutes les options twinview : [[http://download.nvidia.com/XFree86/Linux-x86/1.0-9626/README/appendix-g.html]]

Et voilà vous relancez votre serveur X (Ctrl+Alt+Backspace)

===== Liens =====
http://gentoo-wiki.com/HARDWARE_Nvidia_Driver_AGP_FastWrite_and_Side_Band_Addressing (FW / SBA)\\
http://download.nvidia.com/XFree86/Linux-x86/1.0-9626/README/appendix-f.html (Modes AGP)\\
http://download.nvidia.com/XFree86/Linux-x86/1.0-9626/README/appendix-e.html (variables d'environnement)\\
http://download.nvidia.com/XFree86/Linux-x86/1.0-9626/README/appendix-g.html (twinview)\\
http://www.sorgonet.com/linux/nv-online/ (interface de configuration en ligne ... mais faut déjà avoir X)\\
http://forums.archlinux.fr/viewtopic.php?t=33 (post sur xorg-edit ... pareil faut avoir X)\\

 --- //[[warnaud@gmail|warnaud]] 06/11/2006 17:44//\\
 --- //Skunnyk 06/11/2006 19:04//\\
 --- //[[wain@archlinux.fr|wain]] 30/12/2006 18:34//