Gentoo : Installer Bumblebee pour les cartes NVidia Optimus
Table des matières
Une carte Optimus est une carte NVidia Hybride, couplée avec une puce intégrée Intel.
Le but de cette techno est d'améliorer l'autonomie d'un portable, et n'est présente que dans ceux-ci.
Sous Windows, c'est :
Ainsi, le PC, quand il n'a pas besoin de puissance graphique, on ne tourne que sur Intel.
Un projet libre, nommé bumblebee est né pour pallier à ce problème, d'utiliser un fichier Xorg.nvidia pour lancer une application avec le pilote NVidia.
Mais avec seulement bumblebee installé, les deux cartes graphiques fonctionnent toujours. Même lorsque la NVidia n'est pas sollicitée.
En parallèle de bumblebee, on a bbswitch qui permet justement de couper l'alimentation de la carte NVidia lorsqu'aucune application 'optirun' n'est exécutée. (Optirun étant la commande permettant d'exécuter une application avec la carte graphique NVidia).
Ces deux logiciels (bumblebee et bbswith) fonctionnent en duo, avec le pilote NVidia installé à côté pour "reproduire" la technologie incluse dans le driver NVidia.
Sans bumblebee et bbswitch => Autonomie de 1h30 avec la batterie.
Sans les mêmes conditions avec bumblebee + bbswitch => Autonomie de 4h30 avec la batterie sans qu'aucune application 3D ne tourne avec la commande 'optirun'.
Avoir une distribution à jour.
On installe bumblebee :
S'il ne s'est pas installé en tant que dépendance, on peut installer aussi primus, afin de lancer les applications avec la commande primusrun (voir plus bas) :
Maintenant que bumblebee et primus sont installés, il ne faut pas oublier de lancer le service au démarrage du système :
Aussi, pour que les utilisateurs puissent utiliser bumblebee, ils doivent faire partie du groupe bumblebee :
Avant de tester, il est nécessaire de relancer sa session graphique.
Pour tester les performances et le rendu, j'utilise la commande glxspheres, offerte par le paquet x11-misc/virtualgl
Si on n'utilise pas la commande optirun, on constate que la carte utilisée est Intel :
Le résultat donne :
Maintenant, on teste avec la commande optirun, et on constate que la carte NVidia est utilisée :
Le résultat donne :
Comment lancer une application avec la carte NVidia puisque la bascule n'est pas automatique ? Il faut utiliser la commande optirun :
Si on veut lancer un jeu Windows avec Wine, s'il est installer, le principe reste le même :
Les liens à créer dans le menu de lancement des applications de KDE, GNOME, XFCE doivent comporter aussi la commande optirun.
Si les applications ne fonctionnent pas correctement, il est possible d'utiliser primusrun au lieu d'optirun :
Pour accéder au panneau NVidia il faut utiliser aussi la commande optirun :
Il se peut qu'en cas de mise à jour ou recompilation kernel, le service bumblebee ne trouve plus la carte NVidia.
Dans ce cas, il suffit de recompiler les modules :
Il se peut que les jeux lancés sous Wine avec la commande optirun ne veule pas de l'accélération graphique.
Il faut donc recompiler virtualgl avec le flag32 :
Si besoin, modifier le package.use :
Ce problème est présent depuis quelques versions du pilote NVidia.
Il faut ajouter le USE compat s'il n'est pas activé et utiliser un pilote plus récent que le 361.28 livré par Gentoo.
Puis de mettre à jour ce pilote NVidia sans l'ajouter au fichier de logiciels installés (via le -1) :
Pour faire fonctionner vos jeux Steam avec la carte NVidia, la procédure est un peu spéciale.
Référez-vous à cet article : https://www.linuxtricks.fr/wiki/gentoo-installer-steam
Introduction
Présentation
Une carte Optimus est une carte NVidia Hybride, couplée avec une puce intégrée Intel.
Le but de cette techno est d'améliorer l'autonomie d'un portable, et n'est présente que dans ceux-ci.
Le principe
Sous Windows, c'est :
- On tourne sur le chipset intégré Intel. Le pilote NVidia éteint la NVidia.
- Quand il y a de la demande de 3D, le pilote NVidia active celle-ci, et l’application utilise la NVidia.
- Quand l'application est fermée, la carte NVidia est de nouveau éteinte.
Ainsi, le PC, quand il n'a pas besoin de puissance graphique, on ne tourne que sur Intel.
L'histoire de Bumblebee
Un projet libre, nommé bumblebee est né pour pallier à ce problème, d'utiliser un fichier Xorg.nvidia pour lancer une application avec le pilote NVidia.
Mais avec seulement bumblebee installé, les deux cartes graphiques fonctionnent toujours. Même lorsque la NVidia n'est pas sollicitée.
En parallèle de bumblebee, on a bbswitch qui permet justement de couper l'alimentation de la carte NVidia lorsqu'aucune application 'optirun' n'est exécutée. (Optirun étant la commande permettant d'exécuter une application avec la carte graphique NVidia).
Ces deux logiciels (bumblebee et bbswith) fonctionnent en duo, avec le pilote NVidia installé à côté pour "reproduire" la technologie incluse dans le driver NVidia.
Sans bumblebee et bbswitch => Autonomie de 1h30 avec la batterie.
Sans les mêmes conditions avec bumblebee + bbswitch => Autonomie de 4h30 avec la batterie sans qu'aucune application 3D ne tourne avec la commande 'optirun'.
Prérequis
Avoir une distribution à jour.
Code BASH :
emerge --sync emerge -avquDN --with-bdeps=y @world
Installation
On installe bumblebee :
Code BASH :
emerge -av x11-misc/bumblebee
S'il ne s'est pas installé en tant que dépendance, on peut installer aussi primus, afin de lancer les applications avec la commande primusrun (voir plus bas) :
Code BASH :
emerge -av x11-misc/primus
Post-Configuration
Maintenant que bumblebee et primus sont installés, il ne faut pas oublier de lancer le service au démarrage du système :
Code BASH :
rc-update add bumblebee default
Aussi, pour que les utilisateurs puissent utiliser bumblebee, ils doivent faire partie du groupe bumblebee :
Code BASH :
usermod -G bumblebee -a <user>
Avant de tester, il est nécessaire de relancer sa session graphique.
Comparer les performances
Pour tester les performances et le rendu, j'utilise la commande glxspheres, offerte par le paquet x11-misc/virtualgl
Sans utiliser la carte NVidia
Si on n'utilise pas la commande optirun, on constate que la carte utilisée est Intel :
Code BASH :
glxspheres
Le résultat donne :
Code BASH :
Polygons in scene: 62464 Visual ID of window: 0x20 Context is Direct OpenGL Renderer: Mesa DRI Intel(R) Ivybridge Mobile 60.478270 frames/sec - 67.493750 Mpixels/sec
Avec la carte NVidia
Maintenant, on teste avec la commande optirun, et on constate que la carte NVidia est utilisée :
Code BASH :
optirun glxspheres
Le résultat donne :
Code BASH :
Polygons in scene: 62464 Visual ID of window: 0x20 Context is Direct OpenGL Renderer: GeForce GT 650M/PCIe/SSE2 127.400204 frames/sec - 142.178628 Mpixels/sec
Utiliser la carte NVidia
Comment lancer une application avec la carte NVidia puisque la bascule n'est pas automatique ? Il faut utiliser la commande optirun :
Code BASH :
optirun monapplication
Si on veut lancer un jeu Windows avec Wine, s'il est installer, le principe reste le même :
Code BASH :
optirun wine monapplication.exe
Les liens à créer dans le menu de lancement des applications de KDE, GNOME, XFCE doivent comporter aussi la commande optirun.
Si les applications ne fonctionnent pas correctement, il est possible d'utiliser primusrun au lieu d'optirun :
Code BASH :
primusrun monapplication
Accéder à NVidia settings
Pour accéder au panneau NVidia il faut utiliser aussi la commande optirun :
Code BASH :
optirun -b none nvidia-settings -c :8
Problèmes connus
Bumblebee ne fonctionne plus suite à une mise à jour kernel ou recompilation de celui-ci
Il se peut qu'en cas de mise à jour ou recompilation kernel, le service bumblebee ne trouve plus la carte NVidia.
Dans ce cas, il suffit de recompiler les modules :
Code BASH :
emerge @module-rebuild
Les applications 32bits ne veulent pas utiliser le pilote NVidia
Il se peut que les jeux lancés sous Wine avec la commande optirun ne veule pas de l'accélération graphique.
Il faut donc recompiler virtualgl avec le flag32 :
Code BASH :
ABI_X86="64 32" emerge -av virtualgl
Si besoin, modifier le package.use :
Code BASH :
echo "x11-misc/virtualgl abi_x86_32" >> /etc/portage/package.use/custom
primus: fatal: failed to load any of the libraries: /usr/lib64/opengl/nvidia
Ce problème est présent depuis quelques versions du pilote NVidia.
Il faut ajouter le USE compat s'il n'est pas activé et utiliser un pilote plus récent que le 361.28 livré par Gentoo.
Code BASH :
echo "x11-drivers/nvidia-drivers compat" >> /etc/portage/package.use/custom
Puis de mettre à jour ce pilote NVidia sans l'ajouter au fichier de logiciels installés (via le -1) :
Code BASH :
emerge -av1u nvidia-drivers
Steam et Optimus
Pour faire fonctionner vos jeux Steam avec la carte NVidia, la procédure est un peu spéciale.
Référez-vous à cet article : https://www.linuxtricks.fr/wiki/gentoo-installer-steam