La technologie Nvidia Optimus est équipée sur certains ordinateurs portables.
Il s'agit :
Le processeur de l'ordinateur portable gère l'affichage graphique et y alloue une partie de sa puissance.
Lorsque la charge graphique est trop importante :
De ce fait, cette technologie permet à l'ordinateur portable
Sous votre Debian adorée, cela n'est pas correctement possible.
La situation est en fait critique parce que le portable alimente bien électriquement la carte graphique Nvidia mais ne peut pas utiliser sa puissance, il n'y a donc :
Les noyaux Linux 3.3 ou supérieurs devraient améliorer davantage encore le support matériel.
Bumblebee est un logiciel qui se charge de gérer votre carte graphique Nvidia.
Tous les logiciels que vous lancez utiliseront par défaut la carte intégrée, cependant, vous pourrez alors lancer ces programmes en leur donnant l'ordre d'utiliser la carte Nvidia avec le préfixe optirun
!
Il vous faut bien comprendre le fonctionnement :
Bumblebee
avec l'usage de l'outil optirun
, vous activerez momentanément votre processeur graphique nvidia.Pas de gestion HDMI à partir de la puce graphique nVidia !
Pour vérifier que vous disposez effectivement de matériel équipé de ce système, ouvrez un terminal et rentrez :
lspci | egrep "VGA|3D|Display"
Exemple de sortie du terminal :
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) 01:00.0 VGA compatible controller: nVidia Corporation GF108 [GeForce GT 540M] (rev ff)
Autre exemple :
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b) 03:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 860M] (rev ff)
Si une seule ligne est rapportée, c'est que votre PC ne dispose pas de ce système.
Par contre, si la réponse est de deux lignes, dont une qui contient Intel et une autre Nvidia, c'est que votre ordinateur portable en est équipé.
apt purge nvidia-*
La démarche est la suivante :
dpkg --print-architecture
amd64
dpkg --add-architecture i386
apt update
apt install primus-libs-ia32
À cette étape, il vous faut choisir quel pilote logiciel vous désirez installer :
De même, si vous installez le pilote nvidia, il vous faudra être attentif aux différentes recommandations pour désactiver le support 'nouveau'.
Ne cherchez pas à utiliser le pilote libre 'nouveau' si votre carte graphique de fabriquant nvidia n'est pas supportée par celui-ci.
Pour savoir si elle est supportée, lisez la page du "code name" fournie par la projet nouveau, recherchez la mention correspondante à votre GPU, vous y trouverez aussi le nom de l'architecture correspondante.
Vous pouvez aussi lire cette page pour connaître le support complet ou non de votre carte vidéo.
Pour récapituler :
Pour information, la version supportée du serveur X :
De fait, les cartes de famille Maxwell, ou Pascal, n'ont pas le support du pilote libre pour Jessie, ni Stretch. Ce support semble s'améliorer sous Buster . Néanmoins, si votre carte graphique n'est pas supportée ou mal supportée, utilisez directement le projet Bumblebee avec le pilote privatif !
⇒ Pour installer Bumblebee et fonctionner avec le pilote libre 'nouveau' :
apt install bumblebee mesa-utils
Il semble suggérer d'installer le pilote firmware-misc-nonfree
qui en ont besoin pour l'accélération graphique des cartes 'Maxwell' et supérieures. Néanmoins, il faut à minima la version 1.0.15-2 du serveur X (OK, pour Buster) !!!
(...) * Suggest firmware-misc-nonfree, needed for acceleration on Maxwell and newer cards. (...)
Si donc, vous fonctionnez avec Buster, installez en plus le pilote 'firmware-misc-nonfree' :
apt install firmware-misc-nonfree
⇒ Pour installer Bumblebee et gérer le pilote privatif nvidia :
apt install nvidia-kernel-dkms nvidia-xconfig nvidia-settings nvidia-vdpau-driver vdpau-va-driver mesa-utils bumblebee-nvidia primus xserver-xorg-video-nvidia linux-headers-$(uname -r)
Lors de l'installation, il vous sera affiché une première fenêtre d'information :
vous avertissant qu'il y a conflit entre le pilote 'nouveau' et le pilote 'nvidia', que celui-ci devrait être résolu par un redémarrage de votre machine.
En suivant, vous aurez une autre fenêtre d'information :
vous affichant qu'il faudra modifier manuellement la configuration de votre machine pour qu'elle fonctionne avec le pilote nvidia - c'est ce que vous ferez ensuite.
En effet, depuis que Xorg fonctionne de manière automatique, on ne doit pas - sauf cas particulier - créer de fichier xorg.conf.
Et, le cas où il ne faut pas créer de fichier xorg.conf, c'est justement avec le projet Bumblebee, car celui-ci crée ses propres fichiers utilisés selon le choix du pilote.
Fichiers qu'il ne créé surtout pas dans le répertoire relatif à Xorg … parce que là, ça serait le “bazard” …
configuration de l'exemple :
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06) 01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)
installation des méta - paquets : (avec testing bullseye) :
apt install --reinstall linux-image-amd64 linux-headers-amd64
avec buster - backports :
apt -t buster-backports install --reinstall linux-image-amd64 linux-headers-amd64
installation de bumblebee : avec buster - backports
apt -t buster-backports install --reinstall bumblebee-nvidia primus libglx-nvidia0
ou testing bullseye (et buster) :
apt install --reinstall bumblebee-nvidia primus libglx-nvidia0
mesa :
apt install --reinstall mesa-utils
tests carte intel :
glxinfo -B
glxgears
tests carte nvidia :
optirun glxinfo -B
optirun glxgears
si la synchro verticale n'est pas activée , vous aurez l'indication des fps de votre carte graphique . ce qui , à part faire joli , ne vous avancera pas plus ; les fps supplémentaires n'étant tout simplement pas pris en compte par votre écran lors de l'affichage . ex: vous avez une carte qui tourne à 200 fps , cela vous fera une belle jambe si , comme presque tout le monde , vous avez un écran 60 hz (classique , quoi …)
merci robert2a .
Pour vérifier s'ils sont actifs, exécutez :
lsmod | egrep -i "nouveau|vga_switcheroo"
S'il n'y a rien, c'est impeccable !
Si c'est le cas, déchargez les modules correspondants ainsi :
modprobe -r nouveau
modprobe -r vga_switcheroo
En effet, si ces modules sont actifs, ils empêcheront le fonctionnement correct avec le pilote nvidia !
Il se peut aussi que vous ayez le message d'erreur suivant :
modprobe:FATAL:Module nouveau in use
dans ce cas, veuillez lire le chapitre d'erreur relatif …
Il semble nécessaire de devoir installer le binaire VirtualGL
, requis par optirun … qui, malheureusement n'est pas fourni dans les dépôts officiels !
Téléchargez-le à partir de la page de téléchargement du projet.
Ne téléchargez pas le fichier relatif à l'archive .tar.gz, mais
virtualgl_num-version_i386.deb
, ou virtualgl_num-version_amd64.deb
. Téléchargez le bon fichier4), puis installez-le à l'aide de l'outil dpkg …
cd Téléchargements/
dpkg -i virtualgl_*.deb
« Si sudo est configuré pour votre utilisateur courant, c'est-à-dire si votre utilisateur est membre du groupe sudo, cette étape n'est pas nécessaire (le script post-installation du paquet bumblebee se charge d'ajouter automatiquement les utilisateurs de sudo au groupe bumblebee). »
C'est probablement la raison pour laquelle Bumblebee marche directement avec Ubuntu mais pas avec Debian, avec pourtant la même configuration d'origine.
En fait Ubuntu installe sudo par défaut ; ce qui n'est pas le cas de Debian qui vous propose de créer la session root à l'installation du système.
Pour être clair, sudo n'est pas nécessaire pour utiliser bumblebee ; juste il simplifie les choses en rendant inutile l'addition manuelle de l'utilisateur courant au groupe bumblebee.
Ajoutez votre utilisateur au groupe bumblebee - là aussi, remplacez USER du tuto par votre nom d'utilisateur - :
adduser USER bumblebee
Ensuite, redémarrez l'ordinateur puis votre session comme d'habitude.
À partir de maintenant, pour activer la gestion du processeur graphique Nvidia, il faut précéder toute commande par l'usage de la commande 'optirun', telle que - par exemple - :
optirun firefox
Lancez un terminal et lancez la commande suivante pour tester les performances de votre carte graphique intégrée Intel :
glxgears
Un engrenage doit apparaître et le nombre d'image par seconde doit être inscrit toutes les 5s dans le terminal. Cela estime la puissance de la carte intégrée.
Maintenant, démarrez la même commande avec le préfixe « optirun » :
optirun glxgears
Normalement, les performances affichées dans le terminal devraient être nettement supérieures !
Sur le PC où ces lignes sont écrites, la carte intégrée affiche 60fps (pour « frames per seconds », images par seconde en français) et la carte Nvidia affiche 1100fps.
Pour pouvoir utiliser le panel nvidia, le seul moyen est de le lancer en mode console, tel que :
optirun nvidia-settings -c :8
⇒ Ajoutez la variable d'environnement OPTIMUS_PREFIX
sh -c 'echo OPTIMUS_PREFIX=\"primusrun\" >> /etc/environment'
Déloguez-vous de votre session pour vous reconnectez !
⇒ Puis, pour chaque jeu, dont vous voulez profiter d'optirun, il faut modifiez les propriétés de lancement de celui-ci.
$OPTIMUS_PREFIX %command%
- Il est possible d'y écrire directement : primusrun %command%
S'il n'y a pas de différence de performances entre « glxgears » et « optirun glxgears », vérifiez que vous avez scrupuleusement suivi le tutorial.
Si c'est le cas, veuillez rapporter votre problème sur le forum dans le lien pour la FAQ de ce tuto ci-dessous :
Tenez en compte !
Un bogue #867033 est ouvert… Il n'est pas résolu, et pose régulièrement des problèmes avec les nouvelles versions de pilote.
Lorsque vous exécutez optirun
ou primusrun
, vous avez le retour d'erreur suivant :
primus: fatal: failed to load any of the libraries: /usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1:/usr/lib/i386-linux-gnu/nvidia/libGL.so.1:/usr/lib/nvidia/libGL.so.1 /usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1: cannot open shared object file: No such file or directory /usr/lib/i386-linux-gnu/nvidia/libGL.so.1: cannot open shared object file: No such file or directory /usr/lib/nvidia/libGL.so.1: cannot open shared object file: No such file or directory
primus: fatal: failed to load any of the libraries: /usr/lib/x86_64-linux-gnu/ nvidia/libGL.so.1:/usr/lib/i386-linux-gnu/nvidia/libGL.so.1:/usr/lib/nvidia/libGL.so.1 /usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1: wrong ELF class: ELFCLASS64 /usr/lib/i386-linux-gnu/nvidia/libGL.so.1: cannot open shared object file: No such file or directory /usr/lib/nvidia/libGL.so.1: cannot open shared object file: No such file or directory
Dans un premier temps, vérifiez que vous avez bien installé le package primus-libs-ia32
. Si ce n'est pas le cas, faites-le !
Sachant qu'il n'y a aucune garantie de fonctionnement, vous pouvez essayer l'une des solutions suivantes :
primusrun
en le préfixant de l'option _GLVND_DISALLOW_PATCHING=1
, tel que : _GLVND_DISALLOW_PATCHING=1 primusrun glxgears
- (cf, la réponse 22)/usr/bin/primusrun
, pour modifier la ligne PRIMUS_libGL=${PRIMUS_libGL:-'/usr/$LIB/primus'}
par PRIMUS_libGL=${PRIMUS_libGL:-“/usr/$LIB/primus”}
- c'est-à-dire changer les simples quotes en doubles quotes - (cf, la réponse 59)apt install libgl1-nvidia-glx libgl1-nvidia-glx:i386 nvidia-driver-libs nvidia-driver-libs-i386
Lorsque vous exécutez une commande avec optirun, vous avez pour retour le message d'erreur suivant :
error while loading shared libraries: libturbojpeg.so: cannot open shared object file: No such file or directory
Selon votre version de Debian, il va falloir faire une modification système, avec des droits administrateurs, puis une fois accomplie, exécutez à nouveau la commande !
Si votre architecture est 32 bits, tapez dans votre terminal console préféré, cette commande avec les droits administrateur :
ln -s /usr/lib/i386-linux-gnu/libturbojpeg.so.0 /usr/lib/i386-linux-gnu/libturbojpeg.so
Si votre architecture est 64 bits, tapez cette commande-ci, toujours avec les droits administrateur :
ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so
Testez une des solutions, une par une, puis ensuite redémarrer le service Bumblebee, et essayez d'utiliser à nouveau votre commande précédée d'optirun !
Une solution très simple est d'éditer le fichier /etc/bumblebee/bumblebee.conf, avec les droits administrateurs, pour modifier la ligne 'Driver=' en début de fichier :
# Configuration file for Bumblebee. Values should **not** be put between quotes ## Server options. Any change made in this section will need a server restart # to take effect. [bumblebeed] # The secondary Xorg server DISPLAY number VirtualDisplay=:8 # Should the unused Xorg server be kept running? Set this to true if waiting # for X to be ready is too long and don't need power management at all. KeepUnusedXServer=false # The name of the Bumbleblee server group name (GID name) ServerGroup=bumblebee # Card power state at exit. Set to false if the card shoud be ON when Bumblebee # server exits. TurnCardOffAtExit=false # The default behavior of '-f' option on optirun. If set to "true", '-f' will # be ignored. NoEcoModeOverride=false # The Driver used by Bumblebee server. If this value is not set (or empty), # auto-detection is performed. The available drivers are nvidia and nouveau # (See also the driver-specific sections below) Driver= (...)
Modifiez la ligne 'Driver=' tel que : Driver=nvidia
Dans un premier temps, vérifiez le nom du pilote nvidia chargé :
modinfo nvidia
puis :
modinfo nvidia-current
Si l'une des deux commandes restitue, par exemple :
modinfo: ERROR: Module not found.
C'est que ce n'est pas le bon nom de pilote utilisé.
S'il vous restitue, par exemple :
modinfo nvidia-current filename: /lib/modules/4.8.0-1-amd64/updates/dkms/nvidia-current.ko alias: char-major-195-* version: 367.57 supported: external license: NVIDIA (...)
Ensuite, éditez le fichier '/etc/bumblebee/bumblebee.conf' pour vérifier la section [driver-nvidia], avec les droits administrateur :
nano /etc/bumblebee/bumblebee.conf
(...) ## Section with nvidia driver specific options, only parsed if Driver=nvidia [driver-nvidia] # Module name to load, defaults to Driver if empty or unset KernelDriver=nvidia-current (...)
S'il apparaît que la ligne 'KernelDriver' comporte juste la mention suivante 'KernelDriver=nvidia', modifiez-la par ' KernelDriver=nvidia-current'
Si dans votre cas, exceptionnel, le bon nom de pilote est bel et bien 'nvidia', modifiez si besoin la ligne en question par “KernelDriver=nvidia”.
C'est un bogue Debian connu - apparemment réglé dans la future version 3.2.1-11 de Bumblebee
Cette erreur peut-être générée par un des différents points suivants … veuillez les vérifier un par un, pas tous en même temps, cela ne sert à rien. Une fois qu'un point est vérifié/corrigé, redémarrez le service Bumblebee et essayez à nouveau votre commande.
Si cela ne fonctionne pas, passez au point suivant qui peut aider à la résolution, et répétez le même processus de vérification/modification puis redémarrage du service adéquat - bien comprendre et accepter que cela ne réglera pas forcément votre problème !
Vérifier l'installation du paquet xserver-xorg-video-nvidia.
dpkg -l | egrep "xserver-xorg-video-nvidia"
ii xserver-xorg-video-nvidia 340.96-1 amd64 NVIDIA binary Xorg driver
Si vous n'avez aucun retour, c'est qu'il n'est pas installé, faites-le :
apt install xserver-xorg-video-nvidia
Ouvrez le fichier '/etc/bumblebee/xorg.conf.nvidia', et ajoutez les informations suivantes :
nano /etc/bumblebee/xorg.conf.nvidia
Section "Screen" Identifier "Default Screen" Device "DiscreteNvidia" EndSection
C'est un bogue Debian Jessie connu, à-propos de Bumblebee - version 3.2.1-*, et Nvidia : 340.*.
Si vous avez installé Bumblebee pour fonctionner avec le pilote libre 'nouveau', vérifiez le support de votre GPU nvidia par le pilote - s'il n'est pas pris-en-charge, installez la version 'Bumblebee-nvidia'. Si votre version de GPU est bien prise en charge par le pilote 'nouveau', vérifiez l'écriture de l'identifiant de Bus PCI, tel que ci-dessous.
Si vous utilisez Bumblebee avec le pilote 'nouveau', vérifiez le support de votre version de GPU - si ce n'est pas le cas, installez la version de 'Bumblebee-nvidia'. Si c'est le cas, vérifiez votre écriture de l'identifiant du Bus PCI.
Il peut être utile, dans les deux cas de commenter toute écriture relative à l'identifiant du Bus PCI.
Si le serveur X est >= 1.18 et que votre Debian est une Testing, ou une Sid, il semble exister une incompatibilité entre le projet Bumblebee et le paquet 'xserver-xorg-legacy', donc supprimez ce dernier en tant qu'administrateur, s'il est installé !
apt purge xserver-xorg-legacy
C'est clairement un bogue de Bumblebee.
Cette erreur peut-être générée par un des différents points suivants … veuillez les vérifier un par un, pas tous en même temps, cela ne sert à rien. Une fois qu'un point est vérifié/corrigé, redémarrez le service Bumblebee et essayez à nouveau votre commande.
Si cela ne fonctionne pas, passez au point suivant qui peut aider à la résolution, et répétez le même processus de vérification/modification puis redémarrage du service adéquat - bien comprendre et accepter que cela ne réglera pas forcément votre problème !
Vérifier l'installation du paquet xserver-xorg-input-mouse.
dpkg -l | egrep "xserver-xorg-input-mouse"
ii xserver-xorg-input-mouse 340.96-1 amd64 NVIDIA binary Xorg driver
Si vous n'avez aucun retour, c'est qu'il n'est pas installé, faites-le :
apt install xserver-xorg-input-mouse
Vérifiez le fichier /etc/bumblebee/xorg.conf.nvidia
.
Vérifiez que votre identifiant de Bus PCI soit correctement écrit !
Ouvrez le fichier '/etc/bumblebee/xorg.conf.nvidia', et modifiez l'option BusID. Vous trouverez cette information par l'usage de la commande 'lsusb'.
Vérifiez le fichier de configuration que vous venez de modifier !!!
Que ce soit le fichier '/etc/bumblebee/xorg.config.nvidia' ou '/etc/bumblebee/xorg.config.nouveau', vous avez créé/modifié une section, et oublié/supprimé par erreur, de fermer correctement la section, voire une section est mal écrite !
Si 'dmesg' vous informe du soucis GPU suivant 'fallen off the bus', il y a deux manières de régler le problème :
Testez la commande suivante, avant le lancement d'optirun :
tee /sys/module/rcutree/parameters/rcu_idle_gp_delay <<<1
Si cela fonctionne en effet correctement, modifiez le fichier '/etc/default/grub' pour ajouter l'information suivante à la ligne de commande GRUB_CMDLINE_LINUX_DEFAULT : rcutree.rcu_idle_gp_delay=1.
nano /etc/default/grub
(...) GRUB_CMDLINE_LINUX_DEFAULT="quiet rcutree.rcu_idle_gp_delay=1" (...)
Mettez-à-jour votre grub :
update-grub
et redémarrez votre ordinateur …
L'autre solution est de vérifier votre version de kernel linux - en effet ce problème concerne les noyaux versions 3.10 à 3.19 ! Soit vous choisissez un noyau antérieur, soit vous upgradez sur un noyau plus récent !
C'est clairement un bogue de Bumblebee.
Vous avez installé le pilote nvidia …
et le système vous répond l'erreur suivante : 'modprobe:FATAL:Module nouveau in use', il est intéressant de le désactiver le module 'nouveau' lors du démarrage du noyau.
Paramétrez le fichier de configuration de grub '/etc/default/grub' afin de rajouter les paramètres noyau suivants 'nouveau.modeset=0' et 'modprobe.blacklist=nouveau' dans la ligne de configuration relative à 'GRUB_CMDLINE_LINUX_DEFAULT', telle que, par exemple :
nano /etc/default/grub
(...) GRUB_CMDLINE_LINUX_DEFAULT="quiet nouveau.modeset=0 modprobe.blacklist=nouveau" (...)
Mettez-à-jour votre grub :
update-grub
et redémarrez votre ordinateur …
Pour redémarrer le service lié à Bumblebee, exécutez la commande suivante en tant qu'administrateur :
systemctl restart bumblebeed
Vous pouvez retrouver un complément d'informations sur la page wiki du projet Debian…
Si vous utilisez « Gnome », l'environnement de bureau par défaut de Debian, vous pouvez configurer vos raccourcis du menu avec « alacarte »
apt-get install alacarte