Problèmes liés aux cartes Nvidia

Cette page à pour but de rassembler les problèmes connus qui sont lié aux cartes graphique Nvidia.

Avec certaines cartes graphiques (les séries GeForce 8 et 9 notamment), et les pilotes 177.80, l'écran ne se rafraîchit pas correctement, notamment dans Firefox qui devient quasiment inutilisable (voir le rapport de bogue).

Ce problème de rafraîchissement se produit également, mais dans une bien moindre mesure (juste quelques petites zones, assez rarement) avec d'autres versions du pilote.

Si vous rencontrez ce problème, il y a plusieurs solutions de contournement.

Contournement compiz (la solution à essayer en priorité)

Depuis Ubuntu 9.04, compiz possède une option qui résout le problème.

  • Il faut lancer le gestionnaire de configuration CompizConfig (ccsm) (apt://compizconfig-settings-manager doit être installé), cliquer sur « Solutions », et activer la case "Force synchronization between X and GLX".
  • Si le problème persiste, toujours dans CompizConfig (ccsm) 1) → Options générales → Onglet Paramètre d'affichage :
    • Décocher « Détecter la fréquence de rafraîchissement ».
    • Augmenter la fréquence de rafraîchissement à une valeur supérieure à celle de votre écran 2)
    • Cocher « Sync vers Vblank ».

Si possible, « Sync to Vblank » doit aussi être coché dans les pilotes propriétaires NVIDIA.

Rétrograder les pilotes

La première solution est de repasser à des pilotes plus anciens (173, par exemple). Ceci est faisable directement dans le gestionnaire de pilotes de périphériques.

Désactiver --loose-binding

compiz est démarré avec l'option --loose-binding par défaut. C'est une fonctionnalité développée pour combler certaines lacunes des pilotes NVIDIA, notamment au niveau des performances, en évitant de rafraîchir l'écran inutilement trop souvent.

Cependant, avec les pilotes 177.80, c'est inutilisable.

Pour désactiver cette option, éditez le fichier /usr/bin/compiz et commentez les lignes 340 à 344 :

	if check_nvidia; then
		if [ "x$INDIRECT" != "xyes" ]; then
			COMPIZ_OPTIONS="$COMPIZ_OPTIONS --loose-binding"
		fi
	fi

ce qui donne :

#	if check_nvidia; then
#		if [ "x$INDIRECT" != "xyes" ]; then
#			COMPIZ_OPTIONS="$COMPIZ_OPTIONS --loose-binding"
#		fi
#	fi

Pour tester :

compiz &

(ça peut planter, dans ce cas, réexécutez la commande)

Maintenant, à chaque redémarrage, cette option ne sera plus activée.

Lors de chaque redémarrage vous constatez que la taille de l'écran revient en 640×480 ou 800×600 et que sous nvidia-settings vous avez réglé la taille en 1024×768 ou supérieur, éditez le fichier /home/user/.config/monitors.xml

<monitors version="1">
  <configuration>
      <clone>no</clone>
      <output name="default">
          <vendor>???</vendor>
          <product>0x0000</product>
          <serial>0x00000000</serial>
          <width>800</width>                    #<=à modifier par 1024
          <height>600</height>                  #<=à modifier par 768
          <rate>108</rate>                      #<=taux de rafraîchissement
          <x>0</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
      </output>
  </configuration>
</monitors>

Redémarrer et tester.

Le fichier /home/user/.config/monitors.xml peut être modifié directement depuis Préférences → Ecrans. Sa présence n'est pas indispensable si vous n'utilisez que nvidia-setting

Un moyen de contourner ce problème est expliqué sur son rapport de bogue : Le plantage est lié au fait que nvidia-settings essaie de modifier un fichier qui, pour une raison ou une autre, ne correspond plus à votre configuration actuelle sans que cela vous ait empêché de charger une session graphique. En clair, ce bogue arrive surtout aux gens qui se lancent dans le multi-écran ou qui changent de moniteur.

La solution consiste à lancer nvidia-xconfig (en sudo) pour qu'un fichier de configuration correct soit recréé. Après quoi nvidia-settings devrait fonctionner de manière normale.

Si l'installation des pilotes propriétaires NVIDIA vous renvoie systématiquement vers le mode sans échec de l'affichage, une solution consiste à exclure certains modules.

Pour cela, éditez le fichier /etc/default/linux-restricted-modules-common en root et remplacez :

DISABLED_MODULES=""

par :

DISABLED_MODULES="nvidia nvidia_legacy"

(voir ce billet)

Xinerama est la méthode utilisée par le serveur X pour informer le gestionnaire de fenêtres (tel que compiz) du nombre et de la taille des différents écrans. Le pilote propriétaire NVIDIA n'utilise pas l'implémentation native de X mais sa propre implémentation de l'extension Xinerama.

Pour pouvoir utiliser Xinerama, il faut démarrer le serveur X avec les différents écrans branchés, sinon le pilote NVIDIA le désactive. Il faut activer l'option TwinView dans le fichier xorg.conf :

Option "TwinView" "true"

source (en) : voir le dernier paragraphe de la page. (ne pas confondre twinview et xinerama. Dans bien des cas, xinerama est autorisé mais pas twinview.

Voir le forum

Il est possible d'avoir un écran multiple twinview sans que les barres de menus et les fenêtres maximisées ne remplissent les deux écrans. Il faut pour cela activer twinview et désactiver xinerama en indiquant l'écran principal (c'est celui où seront centrées les fenêtres, où il y aura la barre des tâches, etc.). Pour déplacer une fenêtre sur l'écran d'à côté, il suffira juste de la faire glisser avec la souris. Elle se maximisera (ou se mettra en plein-écran) sur cet écran uniquement. Pour cela :

Dans la section Screen, déclarez :

  Section "Screen"
      Identifier "Screen0"
      Device "Device0"
      Monitor "Monitor0"
      DefaultDepth 24
      
      Subsection "Display"
          Depth 24
      EndSubsection
      Option "TwinViewXineramaInfoOrder" "DFP-0"
      Option "TwinView" "1"
      Option "metamodes" "CRT: 1280x1024 +0+0, DFP: nvidia-auto-select +1280+0"
  EndSection

Là on déclare un seul écran virtuel twinview, en ayant l'écran « DFP-0 » en principal et décalé de 1280 px à droite de l'écran « CRT » fixé à la résolution 1280×1024.

Puis il faut rajouter la section :

  Section "ServerFlags"
      Option "Xinerama" "0"
  EndSection

Qui désactive xinerama.

Le support de la rotation d'écrans indépendants en twinview devient possible avec les derniers drivers propriétaires 302.xx chez NVIDIA actuellement en Beta au 13/05/12 mais fonctionnels http://www.nvidia.com/object/linux-display-amd64-302.07-driver.html. Ainsi on peut opérer cette rotation depuis le menu d'affichage d'ubuntu. Testé personnellement sous Precise. Depuis le temps qu'on l'attendait…

Le mode multi-écran pose problème avec les jeux. Parmi les problèmes possibles :

  • affichage plein écran à cheval sur les deux écrans
  • résolution mal détectée dans le jeu

Pour contourner ce problème, le plus facile est de désactiver un écran pendant l'utilisation du jeu. Par défaut avec l'extension ''xinerema'' ça n'est pas possible car une seule définition apparait dans l'outil de résolution d'écran. Pour changer ce comportement, il faut ajouter des modes vidéos dans le fichier de configuration du serveur X.

L'exemple ci-dessous permet d'utiliser 3 options (séparées par des points-virgules) :

  1. Affichage étendu sur 2 écrans (le deuxième étant l'écran externe décalé de 1440 pixels à droite)
  2. Affichage sur l'écran plat du portable
  3. Affichage sur l'écran externe
   Option  "metamodes" "CRT: nvidia-auto-select +1440+0, DFP: nvidia-auto-select +0+0; 
   CRT: NULL, DFP: nvidia-auto-select +0+0; CRT: nvidia-auto-select +0+0, DFP: NULL"

Après un redémarrage du serveur X, vous pourrez utiliser les 3 « résolutions » d'écran.

Ensuite il ne vous reste plus qu'à utiliser l'outil ''xrandr'' dans des scripts pour lancer vos jeux afin de faire les changements de résolution avant le démarrage du jeu et après sa terminaison.

source : (jouer en plein écran à Urban Terror (ou autres jeux) avec un double écran)

Il peut arriver que le module "nvidia" rentre en conflit avec le driver "nouveau". (un lsmod confirme que nouveau est chargé). Au lancement de X, on obtient un message du type

  FATAL: Error inserting nvidia (/lib/modules/3.0.0-22-generic/kernel/drivers/video/nvidia.ko): No such device

Idem en passant par la commande modprobe. Pour éviter cela, il suffit de dire au noyau de ne pas charger le pilote nouveau. Pour cela, on crée un fichier nommé blacklist-nouveau.conf dans /etc/modprobe.d. Son contenu sera :

  #disable nouveau driver. Use nvidia instead of
  blacklist nouveau

Après un redémarrage, dans la condition où le champ driver est spécifié à "nvidia" dans /etc/xorg.conf, le module "nvidia" devrait être fonctionnel.

Message "Failed to load the NVIDIA kernel module"

Parfois, il n'y a pas de message. Si les linux-headers ne sont pas installés, les pilotes NVidia ne seront pas fonctionnels.

Démarrez en basse résolution et tapez dans le terminal

sudo apt-get install --reinstall linux-headers-`uname -r`

Réinstaller le pilote

Suite à une mise à jour (du noyau) qui se serait mal passée, au moment de redémarrer, vous vous retrouvez en graphiques de basse qualité ou êtes bloqué en 800×600, votre pilote étant cassé.

Premièrement, essayez de le réinstaller normalement :

sudo apt-get purge 'nvidia-*'
sudo apt-get autoclean
sudo apt-get install nvidia-glx-180

(ou autre version selon le matériel)

Si tout se passe bien, félicitations, vous avez réinstallé votre pilote.

Could not locate nvidia.ko

Si vous rencontrez cette erreur :

Error! Could not locate nvidia.ko for module nvidia in the DKMS tree.

La mise à jour du noyau s'est mal passée, les entêtes n'ont pas été bien installés, ce que l'on va résoudre ici :

On répare les éventuels problèmes dans la gestion des paquets (dépendances, paquets mal installés, etc.) :

sudo apt-get install -f

On réinstalle les entêtes du noyau actuel qui sont mal installés et ne permettent pas la compilation du pilote (ce qui bloque au-dessus) :

sudo apt-get install --reinstall linux-headers-`uname -r`

Normalement, pendant la réinstallation des entêtes, le pilote (plus précisément le module DKMS lié au pilote) sera recompilé automatiquement. Si jamais ce n'est pas le cas et que le problème persiste, vous pouvez réinstaller le pilote maintenant que le noyau est propre.

Sur certaines installation l'accéleration 3D ne fonctionne pas.

Visiblement le driver installé par défaut avec Ubuntu 12.04 est bogué. Il s'agit de la version 295.40.

Une solution est de revenir à la version 295.33 du driver, La manipulation à faire :

sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo aptitude update
sudo apt-get install nvidia-current=295.33-0ubuntu1~precise~xup1
La version 295.53 est disponible dans le ppa et va donc s'installer automatiquement… Penser à désinstaller les paquets nvidia-current-update et nvidia-settings-update car si en temps normal ils ont une version d'avance sur le dépôt officiel, là ils auront une version de retard sur le ppa.

Avec les pilotes propriétaires il peut arriver que la résolution au démarrage et à l'arrêt soit très faible. La solution au problème se trouve sur la page Plymouth.

Si, après l'installation du driver NVidia, vous n'avez plus accès au réglage de la luminosité de l'écran :

  • Créez le fichier 10-nvidia-brightness.conf
sudo nano /usr/share/X11/xorg.conf.d/10-nvidia-brightness.conf
  • Puis copiez ce code dans le fichier
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    Option         "RegistryDwords" "EnableBrightnessControl=1"
EndSection
  • Lorsque vous relancerez votre session, les touches seront de nouveau fonctionnelles.

Si cette méthode ne fonctionne toujours pas, éditez le fichier de configuration de grub afin d'ajouter un paramètre au kernel

sudo nano /etc/default/grub
  • À la ligne GRUB_CMDLINE_LINUX_DEFAULT ajoutez nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1
  • Mettez ensuite à jour le fichier de configuration grub
sudo update-grub
  • Après un redémarrage, la luminosité pourra être réglée

Taper Alt-F2 puis :

gconf-editor

Déployer /apps/panel/toplevels/bottom_panel_screen0 et changer la valeur de monitor (la faire passer de 0 à 1). Idem pour /apps/panel/toplevels/top_panel_screen0.

Les changements sont instantanés.

Sous Ubuntu 17.10, Wayland (remplaçant de X11) semble poser problème avec certaines cartes graphiques Nvidia, si l'invite de login ou l'interface graphique ne charge pas, la solution peut-être de décommenter la ligne

#WaylandEnable=false  

(dans /etc/gdm3/custom.conf)

qui deviendra donc :

WaylandEnable=false 

https://askubuntu.com/questions/968365/ubuntu-17-10-nvidia-drivers-black-screen-loop/968679#968679

Voir astuce sur le page : Avant-Window-Navigator.


Contributeurs : [[:contributeurs|Les contributeurs d'Ubuntu-fr


2)
exemple 100 Hz. Cette option n'affecte que le logiciel compiz et son rafraîchissement : elle ne forcera pas une fréquence différente sur votre écran matériel.
  • problemes_nvidia.txt
  • Dernière modification: Le 11/09/2022, 12:12
  • par moths-art