La version raccourcie (débarrassée des commentaires de recherche) se trouve ici : [[trucs_persos#installation_du_pilote_graphique_nvidia|Installation du pilote graphique (NVidia)]]

Il faut soit utiliser le pilote des dépôts Debian (à privilégier), soit utiliser le pilote du site Nvidia, pas les deux en même temps. Pour éviter les conflits de drivers, il vaut mieux désinstaller au préalable les paquets nvidia déjà installés (tentez votre chance avec # apt remove *nvidia*).

=== Installation du pilote nvidia des dépôts ===

__Avantage__ : le pilote nvidia en dépôt fonctionne (généralement) bien et sa version est upgradée automatiquement (par les mainteneurs Debian). Il se compile automatiquement à chaque fois que vous changez votre noyau Linux (grâce à l'utilitaire DKMS).

__Inconvénient__ : si votre carte est récente, il est possible qu'il ne fonctionne pas (à tester en premier). L'interface est horrible (les messages de compilation sont tronqués et quand il plante vous ne savez pas pourquoi).

Installation :
 
  * Installez le fichier d'entête du/des noyaux courants (linux-headers-version du noyau)
  * Désinstallez tous les paquets nvidia* précédents.

== Si votre carte graphique Nvidia est récente ==

  * Téléchargement et installation : apt install module-assistant kernel-package nvidia-kernel-source libgl1-nvidia-glx (ce dernier installe de nombreux autres paquets nvidia ainsi que dkms)
  * Réinstallation manuelle : m-a a-i -f nvidia-kernel-source

Nota : 
  * Je n'ai pas encore testé ce driver des dépôts avec mes 2 (nouveaux) écrans équipés de prises DisplayPort.
  * Avec mon écran précédent en DualLink (2560x1600, nécessitant 2 prises DVI) et ma carte nvidia RTX 2070 (qui ne supporte pas le DualLink, mais je ne le savais pas) : les paquets nvidia (en version 418.74-1), plantaient à l'étape 2, à 86%(sans message spécifique). La résolution maxi obtenue, sans accélération graphique, était de 1280x800.


== Si votre carte graphique Nvidia est ancienne ==

(Le pilote précédent vous le dira)

  * Téléchargement et installation : apt install module-assistant kernel-package nvidia-legacy-340xx-kernel-source
  * Réinstallation manuelle : m-a a-i -f nvidia-legacy-340xx-kernel-source

Nota : 
  * Avec mon écran précédent en DualLink (2560x1600, nécessitant 2 prises DVI) et ma carte nvidia GTX260 (qui supporte le DualLink) : les paquets nvidia (en version 340xx, avec gcc v6), fonctionnaient bien. 
  * Avec mon écran précédent en DualLink (2560x1600, nécessitant 2 prises DVI) et ma carte nvidia RTX 2070 (qui ne supporte pas le DualLink, mais je ne le savais pas) : les paquets nvidia (en version 340xx, avec gcc v6), plantaient à l'étape 21, à 47% (sans message spécifique). 



=== Installation du pilote nvidia obtenu depuis le site du constructeur Nvidia ===

__Avantage__ : c'est le pilote le plus récent disponible au moment où vous l'installez (néanmoins les dépôts Debian sont très réactifs). Le pilote nvidia propriétaire propose aussi l'installation de l'utilitaire DKMS (donc il se compilera lui aussi automatiquement à chaque fois que vous installerez un nouveau noyau). Ce pilote est aussi bien plus clair dans ses messages que l'interface désuète des dépôts Debian (les messages sont tronqués et quand il plante vous ne savez pas pourquoi). À privilégier en roue de secours si le pilote des dépôts ne fonctionne pas pour vous.

__Inconvénient__ : pas de mise à jour automatique du driver. 


Rappel : il faut soit utiliser le pilote des dépôts Debian, soit utiliser le pilote du site Nvidia, pas les deux en même temps, donc pour installer le pilote du site nvidia il faudra au préalable désinstaller les paquets nvidia des dépôts Debian (tentez votre chance avec # apt remove *nvidia*).

Installation :

  * Installez le fichier d'entête du/des noyaux courants (linux-headers-version du noyau)
  * Désinstallez tous les paquets *nvidia* précédents.
  * Téléchargez le pilote sur : [[https://www.nvidia.com/object/unix.html|Nvidia (unix)]]
  * Rendez le pilote exécutable (à adapter) : chmod +x NVIDIA-Linux-x86_64-430.26.run
  * Fermez toute console graphique (# /etc/init.d/sddm stop) ou mieux, redémarrez en mode sans échec (# reboot, puis au démarrage de Grub choisissez le noyau Linux alternatif, puis en fin de démarrage tapez le mot de passe root. Ne pas faire de Ctrl D qui poursuit le démarrage).
  * S'il y a des drivers nvidia chargés en mémoire (visualisez-les par : # lsmod | grep nvidia), tentez de les enlever (de la mémoire) dans l'ordre inverse de leur chargement (# rmmod nvidia_drm puis # rmmod nvidia_modeset puis # rmmod nvidia)
  * Lancez le pilote Nvidia par : $ ./NVIDIA-Linux-x86_64-430.26.run

Si vous souhaitez désinstaller le driver propriétaire : # nvidia-installer --uninstall


Nota :
  * Avec mes 2 (nouveaux) écrans (2x 3440x1440, équipés de prises DisplayPort) et ma carte nvidia RTX 2070  : les paquets nvidia (en version 430.26), ce driver fonctionne très bien.
  * Lors de mes tests précédents avec mon ancien écran en DualLink, l'installateur se plaignait d'un driver graphique déjà en mémoire (alors que je n'étais encoe qu'en console). Grub doit vraisemblablement charger les pilotes graphiques pour ses besoins. Au démarrage du pilote propriétaire, celui-ci averti que le module nvidia-modeset est en mémoire ce qui le bloque : //ERROR: An NVIDIA kernel module 'nvidia-modeset' appears to already be loaded in your kernel. This may be because it is in use (for example, by an X server, a CUDA program, or the NVIDIA Persistence Daemon) but this also happen if your kernel was configured without support for module unloading. (...)// Au moins il a le mérite d'être loquace - contrairement au pilote des dépôts qui est moche, ne m'affiche que des messages tronqués et plante.
  * Les messages d'erreur de cet installateur (uniquement) se trouvent dans : /var/log/nvidia-installer.log
  * Les messages d'erreur de Xorg se trouvent dans : /var/log/Xorg.0.log
  * Avec mon écran précédent en DualLink (2560x1600, nécessitant 2 prises DVI) et ma carte nvidia RTX 2070 (qui ne supporte pas le DualLink, mais je ne le savais pas) et ce driver le pilote s'est correctement compilé. Au lancement de Xorg j'ai eut le droit à un "direct rendering: Yes" avec $ glxinfo, et un affichage en ... 1280x800 (mon écran est capable d'afficher en 2560x1600), ce qui piquait un peu les yeux, mais avait le mérite de permettre l'accès au bureau graphique.



=== Paramétrage du serveur Xorg ===

Tous mes tests (et doutes) m'ont amenés à me demander si la création et la configuration du serveur Xorg ne permettrait pas de résoudre mon problème (en fait non, mais je ne le savais pas).

Dans la majorité (totalité ?) des cas, créer un fichier /etc/X11/xorg.conf ne sert (plus) à rien car le serveur Xorg sait trouver de lui-même les configurations optimum.

Même si cela n'a pas permis de résoudre mon problème (qui était matériel : incompatibilité de ma nouvelle carte graphique avec mon écran requérant du DualLink), cela m'aura permis de me remettre dans le bain et de comprendre beaucoup mieux le fonctionnement de ce serveur via mes expérimentations et constats.

Si ça ne vous intéresse pas, vous pouvez donc vous abstenir de lire ce paragraphe.



J'ai donc essayé dans un premier temps d'initialiser le fichier /etc/X11/xorg.conf à l'aide de la commande :
\\ # X :1 -configure
On copie le fichier /root/xorg.conf.new dans /etc/X11/xorg.conf
On peut aussi le créer avec le pilote nvidia (en fin d'installation du pilote notamment).

Mais ces méthodes ne donnent pas un fichier xorg.conf très lisible.
Vous obtiendrez un fichier nettement plus compréhensible si vous le créez sur la base d'un exemple récupéré ailleurs et que vous le peaufinez vous-même.

Pour base vierge, j'ai retenu l'exemple de [[https://doc.ubuntu-fr.org/xorg|la doc UBUNTU]] (heureusement qu'ils sont là ceux-là).

  * Le fichier du site UBBUNTU-fr fonctionne (mais sans de meilleurs résultats) à condition de commenter (ajout d'un # devant la ligne) la ligne "BusID "PCI:1:0:0"" puisque le bus PCI n'est évidemment pas le même dans mon cas.

Mon fichier actuel /etc/X11/xorg.conf :

<code>
Section "Module"
    Load    "bitmap"
    Load    "freetype"
    Load    "glx" # client GLX pour OpenGL
    Load    "int10"
    Load    "type1"
    Load    "vbe"
EndSection

Section "Device"
    Identifier    "Carte"
     Driver         "nvidia"
#    Driver         "nouveau" # mais ne supporte pas encore la carte Geforce RTX 2070
#    Driver         "vesa"
    BusID           "PCI:28:0:0"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Monitor"
    Identifier "Moniteur"
    
    Option     "VendorName" "HP" # Pas nécessaire, permet juste de mieux le repérer dans les logs
    Option     "ModelName" "LP3065" # Pas nécessaire, permet juste de mieux le repérer dans les logs
    
    Option     "DPMS" "false"
    Option     "IgnoreEDIDChecksum" "CRT"
    Option     "AllowDualLinkModes" "true" # Pour le driver nouveau et mon écran spécifique en DualLink

    HorizSync 19.3-96.5
    VertRefresh 59.9-59.9 

Modeline "2560x1600_60.00" 348.50  2560 2760 3032 3504  1600 1603 1609 1658 -hsync +vsync 
# Modeline "2560x1600_30.00" 164.25 2560 2696 2960 3360  1600 1603 1609 1630 -hsync +vsync

EndSection

Section "Screen"
    Identifier    "Ecran"
    Device        "Carte"
    Monitor       "Moniteur"

# Pour Edid :
Option "ExactModeTimingsDVI" "TRUE"
# A commenter pour laisser EDID trouver automatiquement les bons modes disponibles :
# Option "ModeValidation" "NoEdidModes"

    SubSection "Display"
        Depth        24
    EndSubSection
EndSection

Section "ServerLayout"
    Identifier    "Default Layout"
    Screen        "Ecran"
EndSection
</code>

Nota : les Modelines sont calculées avec l'utilitaire cvt (# cvt -h pour l'aide), on lance :
# cvt résolHoriz résolVert fréquence_souhaitée

Exemples : 
<code>
# cvt 2560 1600 60
# 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz
Modeline "2560x1600_60.00" 348.50  2560 2760 3032 3504  1600 1603 1609 1658 -hsync +vsync 

# cvt 2560 1600 24
# 2560x1600 23.97 Hz (CVT) hsync: 38.95 kHz; pclk: 127.75 MHz
Modeline "2560x1600_24.00" 127.75 2560 2664 2920 3280 1600 1603 1609 1625 -hsync +vsync
</code>

J'ai donc beaucoup cherché et n'ai pas résolu (sur le coup) mon problème. 

En désespoir de cause j'ai aussi essayé :
  * le driver "nouveau" : mais il ne supporte pas encore la Nvidia RTX 2070 (la liste des cartes supportées est affichée dans les logs de Xorg), le serveur X ne démarre pas
  * le driver "vesa" : il démarre X mais pas moyen de saisir mon mot de passe de connexion
  * testé la compilation du driver 390.116 avec cette carte graphique RTX 2070 : il se compile sans erreur d'après l'installateur, mais ensuite il ne trouve pas le module nvidia et affiche différentes pistes. La plus probable à mon avis est qu'à cette version ma carte graphique n'est pas encore supportée.
  * testé la compilation du driver 415.27 : il se compile, fonctionne, mais les résultats ne sont pas meilleurs en terme de résolution graphique.

Précisions importantes :
  * Cet écran HP LP3065 se connecte par 2 prises DVI. Il fonctionnait bien en 2560x1600 sur mes 2 autres cartes Nvidia plus anciennes (GTX 260 et GTX 275 de mémoire) équipées elles aussi de 2 prises DVI.
  * Lors de l'achat de ma nouvelle carte graphique GeForce RTX 2070, j'ai aussi acheté des adaptateurs car les prises de connexion ne sont plus en DVI (la carte comporte 1 HDMI + 3 DisplayPort : quelle plaie ces changements de norme !). Donc il y avait aussi un risque que ces adaptateurs "NoName" créent des soucis.


En lisant le résultat du fichier xlog.txt précédent (X -verbose 6 > xlog.txt 2>&1), je vois :

  * (...)
  * Supported display device(s) : DFP-0, DFP-1, DFP-2, DFP-3, DFP-4, DFP-5, DFP-6
  * (...)
  * DFP-0: disconnected
  * DFP-0: Internal DisplayPort
  * (...)
  * DFP-0 Name Aliases:
  * DFP
  * DFP-0
  * DPY-0
  * DP-0
  * DP-0
  * (...)
  * DFP-0: 2660.0 MHz maximum pixel clock
  * (...)
  * HP LP3065 (DFP-1): connected
  * HP LP3065 (DFP-1): Internal TMDS
  * (...)  * 
  * HP LP3065 (DFP-1) : 165.0 MHz maximum pixel clock
  * (...)
  * HP LP3065 (DFP-1)Name Aliases:
  * DFP
  * DFP-1
  * DPY-1
  * DP-1
  * (...)
  * --- EDID for LP3065 (DP-0) ---

(là c'est bizarre : je me serais attendu à trouver "EDID for LP3065 (DP-1)" et non pas DP-0 (???))

  * (...)
  * HP LP3065 (DFP-2): connected
  * HP LP3065 (DFP-2): Internal TMDS
  * (...)
  * HP LP3065 (DFP-2) Name Aliases:
  * DFP
  * DFP-2
  * DPY-2
  * HDMI-0
  * (...)
  * HP LP3065 (DFP-2) : 165.0 MHz maximum pixel clock
  * (...)
  * --- EDID for LP3065 (HDMI-0) ---
  * (...)
  * EDID maximum pixel clock : 268.0MHz
  * (...)
  * DFP-3: disconnected
  * (...)
  * DFP-3: 2660.0 MHz maximum pixel clock
  * (...)
  * DFP-4: disconnected
  * (...)
  * DFP-4: 165.0 MHz maximum pixel clock
  * (...)
  * DFP-5: disconnected
  * (...)
  * DFP-5: 2660.0 MHz maximum pixel clock
  * (...)
  * DFP-6: disconnected
  * (...)
  * DFP-6: 165.0 MHz maximum pixel clock
  * (...)
  * Valid HSync Range    : 49.3 kHz - 98.5 kHz
  * Valid VRefresh Range : 59.9 Hz - 59.9 Hz
  * (...)
  * Detailed Timings:
  * 2560 x 1600 @ 60 Hz
  * Validating Mode "2560x1600_60":
  * Mode source: EDID
  * 2560 x 1600 @ 60 Hz
  * Pixel Clock : 268.00 MHz
  * (...)
  * Mode is rejected: PixelClock (268.0 MHz) too high for Display Device (Max: 165.0 MHz).
  * GPU extended capability check failed
  * Mode "2560x1600_60" is invalid.
  * (...)

Il semble d'après cette lecture qu'en fonction des connecteurs, la bande passante n'est pas la même. J'ai donc testé les 4 prises (l'écran parvient à afficher avec une seule prise branchée, à condition de rebooter) :

Prises (en partant de la gauche) :
  * Prise 1 (DisplayPort) : DFP-1 : il affiche toujours 165.0MHz, Ok
  * Prise 2 (DisplayPort) : DFP-6 : il affiche toujours 165.0MHz, Ok
  * Prise 3 (HDMI) : DFP-2 : il affiche toujours 165.0MHz, Ok
  * Prise 4 (DisplayPort) : DFP-4 : il affiche toujours 165.0MHz, Ok

A noter que si le câble n'est pas branché sur les prises DFP-1, DFP-6, DFP-2, DFP-4, la bande passante maxi reste affichée à 165.0MHz (elle ne passe pas à 2660.0 MHz).

Donc les connexions accessibles (DFP-1, DFP-6, DFP-2, DFP-4) sont en 165.0MHz, les inaccessibles/désactivées (DFP-0, DFP-3, DFP-5) en 2660.0 MHz :))

Autre piste : est-il possible de baisser la fréquence d'affichage (puisque dans le cas présent il n'arrive pas à afficher en 2560x1600 en 60 Hz) pour qu'il affiche en 2560x1600 (via une ModeLine à trouver) tout en restant dans la limite des 165MHz, et dans les fréquences admissibles horizontalement (49.3 kHz - 98.5 kHz) et verticalement (59.9 Hz - 59.9 Hz) ?
Je crois que la réponse est dans la question :))

J'ai effectivement testé cette Modeline :
Modeline "2560x1600_30.00" 164.25 2560 2696 2960 3360  1600 1603 1609 1630 -hsync +vsync
mais Xorg semble l'ignorer.

Finalement selon mes lectures :
  * ([[https://superuser.com/questions/48070/hp-lp3065-monitor-not-displaying-in-2560x1600-on-ubuntu-9-04-with-ati-radeon-hd|Super User sur StackExchange]]), soit c'est pas possible avec cette carte (une seule sortie HDMI, il faudra choisir entre cette carte+un autre écran ou cet écran+mon ancienne carte - un choix douloureux) et le driver nvidia 
  * soit  [[https://lists.x.org/archives/xorg/2008-June/035616.html|d'après nvidia]] il faudrait utiliser le driver nv (renommé "nouveau" il me semble) avec l'option "AllowDualLinkModes" "true" (j'ai essayé avec nvidia : il ne la reconnaît pas).

Mon affaire était donc très mal engagée :)

Dans un 1er temps j'ai envisagé l'utilisation de 2 mes cartes graphiques simultanées afin de conserver mon écran (sur mon ancienne carte graphique), tout en ajoutant 1 ou 2 écrans (sur la nouvelle carte graphique). J'ai donc inséré sur ma carte mère (en plus de la Nvidia RTX 2070) mon ancienne carte GTX 260.

1er problème : mon alimentation est sous-dimensionnée, je n'ai pas assez de connecteurs d'alimentation (il en faut 2 pour l'ancienne carte graphique, là où pour la récente un seul suffit) : j'ai testé le démarrage, l'écran ne s'allume pas. En branchant les 2 connecteurs d'alimentation (du coup la RTX 2070 n'est plus alimentée) l'écran fonctionne bien (l'affichage en console est même plus fin et plus nette du fait que Grub doit parvenir à utiliser le 1024x768).
Il faudra donc que j'achète une alimentation plus puissante (et un autre écran).

2nd problème : le driver nvidia-legacy-340xx-kernel-source plante à l'étape 17. Grrrr

3ème problème : le driver propriétaire plante lui aussi. Grrr (bis) :))

J'ai testé sa compilation avec le noyau précédent 4.9.0-7. Plantage de l'installateur car pas de fichier d'entête du noyau 4.9.0-7 installé. J'essaie d'en installer un, pas de chance il n'est plus disponible. J'ai donc ajouté les dépôts Stable et Testing pour avoir accès à d'anciens noyaux (voir au début de ce WIKI). Finalement j'ai opté pour le 4.9.0-9-amd64. J'ai installé le noyau ET le fichier d'entête (header). Je reboot sur ce noyau et relance la compilation. Là c'est dkms qui plante. Le pilote propriétaire m'informe que les messages sont dans /var/lib/dkms/nvidia/340.107/build/make.log (version du driver nvidia testé : 340.107).
Je regarde, effectivement dkms plante parce que la version de gcc actuellement utilisée pour la compilation est la 8.3, alors que la version utilisée pour la compilation du noyau est la 6.3.

<code>
# apt install gcc-6
(...)
gcc-6 est déjà la version la plus récente (6.3.0-18+deb9ui).
(...)
</code>

  * Je change de version de gcc (voir la doc créée ci-avant) et relance la compilation : ça marche !
  * J'ai donc de l'accélération graphique fonctionnelle (en 2560x1600) avec cette ancienne carte graphique (montée sur le 2nd slot PCI) + le pilote Nvidia NVIDIA-Linux-x86_64-340.107.run + le noyau 4.9.0-9-amd64.
  * J'ai aussi essayé avec le noyau 4.19.0-5-amd64 : il ne fonctionne pas avec cet ancien driver ! DKMS affiche (dans /var/lib/dkms/nvidia/340.107/build/make.log) en effet : //ERROR: kernel configuration is invalid. include/generated/autoconf or include/config/autoconf are missing. Run 'make oldconfig && make prepare' on kernel src to fix it.// Bizarre car je l'utilisais sans problème précédemment avec l'ancien driver des dépôts.
  * Sauf que ce même noyau 4.19.0-5-amd64 fonctionne bien avec les pilotes Nvidia NVIDIA-Linux-x86_64-415.27.run et NVIDIA-Linux-x86_64-430.26.run

Conclusions de mes tests : 
  * Driver Nvidia 415.27 : il lui faut un noyau >=4.19 (ou peut-être une version moins récente, je n'ai testé que celui-là) et gcc 8. Avec mon écran en Dual Link et la carte RTX 2070 (pas adaptée pour ce type d'écran), je ne peux pas espérer une autre résolution que 1280x800
  * Driver Nvidia 340.107 : il lui faut un noyau 4.9.0 (ou peut-être une version moins récente, je n'ai testé que celui-là) et gcc 6. Avec mon écran en Dual Link je ne peux utiliser que la carte GTX 260 ou GTX 275  (pas adapté pour la RTX 2070), et dans ce cas je peux afficher en 2560x1600.
  * Inutile d'espérer utiliser les 2 cartes graphiques en parallèle : les drivers NVidia ne sont pas les mêmes et incompatibles (l'une requiert un ancien noyau, l'autre un nouveau noyau).

Du coup j'ai tenté de ré-installer le driver nvidia des dépôts nvidia-legacy-340xx-kernel-source (+ m-a a-i -f nvidia-legacy-340xx-kernel-source) avec gcc v6 et le noyau 4.9.0-9-amd64 et le mieux que j'obtiens avec ma carte nvidia GTX 260, c'est un plantage à l'étape 21 à 47%. Peut-être manque-t-il les bibliothèques de compatibilité 32-bit ? (elles sont installées par le driver du site Nvidia). 


En définitive, j'ai donc utilisé dans un premier temps mon ancienne carte graphique GTX 260 avec mon écran en 2560x1600 (fonctionne bien), le temps de mettre en place mon bureau et de commander 2 nouveaux écrans équipés de prises DisplayPort. Puis je les ai connecté à ma carte nvidia RTX 2070 (après avoir retiré mon ancienne carte GTX 260 du PC et son écran), ai installé le driver Nvidia (du site Nvidia) avec gcc v8 et le noyau 4.19.37 (et son fichier d'entête). Et à présent tout fonctionne à merveille.
Je ré-installerai certainement le pilote des dépôts plus tard (j'ai surtout hâte de reprendre le cours des choses).