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'.
Dans un premier temps, on regarde ce dont bumblebee à besoin :
La réponse est semblable à ceci :
Il faut recompiler xorg-drivers avec le FLAG video_cards_nvidia, et bon nombre de paquets sont archtildés.
On complète les fichiers nécessaires pour l'installation de Bumblebee :
On teste à nouveau l'installation de bumblebee :
Maintenant, tout doit être bon :
Tout semble OK, alors on démarre l'installation :
Maintenant que bumblebee est installé, 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 :
On peut regarder les performances de la carte intégrée Intel avec la commande glxspheres :
Le résultat donne :
Testons la même commande en utilisant la carte NVidia
Le résultat donne :
On voit clairement une différence !
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.
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 :
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'.
Installation
Dans un premier temps, on regarde ce dont bumblebee à besoin :
Code BASH :
emerge -p bumblebee
La réponse est semblable à ceci :
Code BASH :
Calculating dependencies... done! [ebuild N ] dev-libs/libbsd-0.4.2 USE="-static-libs" [ebuild N ] app-admin/eselect-opencl-1.1.0-r1 [ebuild N ~] x11-misc/virtualgl-2.3.2-r2 USE="ssl" ABI_X86="(64) -32 (-x32)" [ebuild R ] x11-base/xorg-drivers-1.13 VIDEO_CARDS="nvidia*" [ebuild N ] x11-drivers/nvidia-drivers-319.17 USE="X acpi (multilib) tools -pax_kernel" [ebuild N ~] sys-power/bbswitch-0.6 [ebuild N ~] x11-misc/bumblebee-3.2.1 USE="bbswitch" VIDEO_CARDS="nouveau nvidia" The following keyword changes are necessary to proceed: (see "package.accept_keywords" in the portage(5) man page for more details) # required by bumblebee (argument) =x11-misc/bumblebee-3.2.1 ~amd64 # required by x11-misc/bumblebee-3.2.1[bbswitch] # required by bumblebee (argument) =sys-power/bbswitch-0.6 ~amd64 # required by x11-misc/bumblebee-3.2.1 # required by bumblebee (argument) =x11-misc/virtualgl-2.3.2-r2 ~amd64 The following USE changes are necessary to proceed: (see "package.use" in the portage(5) man page for more details) # required by x11-misc/bumblebee-3.2.1 # required by bumblebee (argument) =x11-base/xorg-drivers-1.13 video_cards_nvidia
Il faut recompiler xorg-drivers avec le FLAG video_cards_nvidia, et bon nombre de paquets sont archtildés.
On complète les fichiers nécessaires pour l'installation de Bumblebee :
Code BASH :
echo "x11-misc/bumblebee ~amd64 #Carte Optimus" >> /etc/portage/package.keywords/custom echo "sys-power/bbswitch ~amd64 #Carte Optimus" >> /etc/portage/package.keywords/custom echo "x11-misc/virtualgl ~amd64 #Carte Optimus" >> /etc/portage/package.keywords/custom echo "x11-base/xorg-drivers video_cards_nvidia #Carte Optimus" >> /etc/portage/package.use/custom
On teste à nouveau l'installation de bumblebee :
Code BASH :
emerge -p bumblebee
Maintenant, tout doit être bon :
Code BASH :
These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-libs/libbsd-0.4.2 USE="-static-libs" [ebuild N ] app-admin/eselect-opencl-1.1.0-r1 [ebuild N ~] x11-misc/virtualgl-2.3.2-r2 USE="ssl" ABI_X86="(64) -32 (-x32)" [ebuild R ] x11-base/xorg-drivers-1.13 VIDEO_CARDS="nvidia*" [ebuild N ] x11-drivers/nvidia-drivers-319.17 USE="X acpi (multilib) tools -pax_kernel" [ebuild N ~] sys-power/bbswitch-0.6 [ebuild N ~] x11-misc/bumblebee-3.2.1 USE="bbswitch" VIDEO_CARDS="nouveau nvidia"
Tout semble OK, alors on démarre l'installation :
Code BASH :
emerge -qv bumblebee
Post-Configuration
Maintenant que bumblebee est installé, 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>
Comparer les performances
Sans utiliser la carte NVidia
On peut regarder les performances de la carte intégrée Intel avec la commande glxspheres :
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
Testons la même commande en utilisant la carte NVidia
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
On voit clairement une différence !
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.
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
Wine ne veut 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 -qv virtualgl
Si besoin, modifier le package.use :
Code BASH :
echo "x11-misc/virtualgl abi_x86_32" >> /etc/portage/package.use/custom