Table des matières

, , , , ,

Bumblebee : Optimus sous GNU/Linux

revoir la page nvidia: installation avant ou après ?
:!: Chantier en cours :!:

Bumblebee est un projet indépendant géré par plusieurs développeurs réunis dans une équipe nommée Bumblebee Project et dont le but est de supporter la technologie Optimus (le support d'Hybrid SLI est aussi de la partie) sous GNU/Linux, que ce soit sous Ubuntu ou une autre distribution. Le support est néanmoins plus présent pour Ubuntu et ArchLinux que les autres distributions.

C'est la solution conseillée. Bumblebee offre la possibilité d'utiliser la carte graphique NVIDIA lorsque nécessaire (via au choix le pilote propriétaire nvidia ou le pilote libre nouveau, le pilote propriétaire nvidia étant cependant fortement recommandé dans le cas de cette technologie, et c'est d'ailleurs le comportement par défaut actuellement), et d'éteindre celle-ci le reste du temps. D'autres solutions existent, mais celle-ci à l'avantage d'être la plus stable, et a comme propriété non négligeable d'être en partie développée par un membre du forum Ubuntu-fr, ArchangeGabriel, qui pourra vous aider dans le topic dédié.

Pré-requis

Installation

Pour éviter tout conflit, ne faites pas cohabiter plusieurs utilitaires gérant la technologie Optimus de NVIDIA. Si vous avez installé PRIME (ou tout autre utilitaire de gestion de cette technologie), avant de poursuivre plus loin désinstallez-le complètement et redémarrer votre ordinateur.

Pour Ubuntu Precise 12.04

Pour Ubuntu Precise 12,04, Bumblebee n'est pas disponible depuis les dépôts officiels mais depuis un PPA. Installer un paquet hors des dépôts officiels peut présenter un risque d'instabilité du système.

  1. Si vous utilisez Precise 14.04.5, remplacez linux-headers-generic par linux-headers-generic-lts-trusty.
    Pour vérifier quelle version vous avez, saisir dans un terminal la commande suivante:
    lsb_release -a
  2. Ajoutez à vos sources de logiciels le PPA suivant ppa:bumblebee/stable 1)
  3. Redémarrez votre ordinateur.

Ou depuis un terminal avec les commandes suivantes:

sudo apt-add-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia virtualgl linux-headers-generic
reboot

Passez au chapitre 3. Tester Bumblebee.

((en) Source)

Pour Ubuntu Trusty 14.04 et suivantes

Bumblebee est disponible dans les dépôts officiels pour Ubuntu Trusty 14.04 et au delà.

  1. Redémarrez l'ordinateur et Passez au chapitre 3. Tester Bumblebee.

((en) Source)

Installations personnalisées

Pour les utilisateurs avancés, si vous ne voulez pas utiliser les bibliothèques de pilote propriétaires de NVIDIA ou 32 bits (par exemple, si vous ne souhaitez que des économies d'énergie), vous pouvez faire une installation personnalisée: depuis un terminal avec les immandes suivantes:

sudo apt-get install --no-install-recommends bumblebee

Selon vos besoins, installez aussi:

((en) Source)

Tester Bumblebee

  1. Ensuite, pour vérifier que tout fonctionne, dans un terminal, entrez ceci :
    glxspheres

    Si ça ne marche pas, il vous dit “commande introuvable”, essayer

    glxspheres64

    Si cela ne marche toujours pas, voir le chapitre glxspheres et glxspheres64 , commande introuvable.
    Une fenêtre apparaît, avec une animation de sphères colorées. Laisser tourner 30s, puis fermez la fenêtre, et notez le résultat.

  2. Puis comparez avec la même chose sur la carte NVIDIA :
    optirun glxspheres
  3. Enfin, fermez la fenêtre, et notez le résultat.

Normalement, les résultats devraient être supérieurs avec optirun. Cependant, l'utilisation de VirtualGL limite les performances pour le moment, mais les développeurs travaillent sur ce problème, néanmoins il se peut que dans certaines situations la carte NVIDIA n'offre pas de meilleures performances.

Utilisation

Pour effectuer le lancement d'une application avec la carte graphique NVIDIA, saisir dans un terminal la commande optirun suivi de l'application:

optirun [options] <application> [paramètres-de-l'application]

Par exemple:

optirun firefox

( Ce lien optirun: pour connaître la liste d'option.)

Normalement, vous n'utilisez pas optirun pour votre gestionnaire de fenêtre, l'installation d'application, ou d'autres programmes intensifs non-graphique,…. La commande optirun est principalement utilisée pour les applications graphiques exigeants, par exemple les jeux.

Par ailleurs, le gestionnaire de configuration nVidia settings est accessible seulement en le lançant en ligne de commande dans un terminal:

optirun -b none nvidia-settings -c :8

FIXME : n'est pas dans la page source. Pour lancer des applications avec primus (il faut l'avoir installé d'abord, cf. ci-dessus) :

optirun -b primus <application>

(en) Source

Questions/Réponses

Comment vérifier que la gestion d'énergie (power-management, à savoir éteindre/allumer la carte nVidia) est bien active ?

  1. Commencez par débrancher l'alimentation de votre portable pour le faire tourner sur batterie afin de pouvoir relever la valeur de sa consommation.
  2. Ensuite, après un démarrage sans aucune application tournant, ouvrez un terminal et saisissez ceci :
    cat /sys/class/power_supply/BAT0/power_now

    (A noter que BAT0 peut être à remplacer par BAT1 sur certains modèles, voir même un autre chiffre)

  3. Notez le résultat.
  4. Lancez cette commande:
    optirun bash

    Il semble a priori ne rien s'être passé, mais en réalité la carte est maintenant allumée.

  5. Relancez la commande précédente :
    cat /sys/class/power_supply/BAT0/power_now
  6. Notez le résultat. Entrez exit ou faites Ctrl+D pour éteindre de nouveau la carte.
  7. Comparez les deux résultat, le premier obtenu devrait être amplement inférieur au second.
    Si ce n'est pas le cas, vérifiez que votre commande de démarrage noyau (fichier /proc/cmdline) ne contient aucune option du style noacpi, pci=noacpi, acpi=off, …
    Si l'une d'entre elle est présente, supprimez-là en éditant les fichiers de configuration de GRUB, n'oubliez pas de mettre à jour celui-ci avec la commande
    update-grub
  8. Redémarrez et refaites la procédure de test.
    Ces options sont parfois présentes pour palier à certains problèmes, qui sont normalement tous corrigés par Bumblebee sur ce genre de machines.

Un autre moyen de vérifier la consommation est d'utiliser l'outil powerstat

Comment utiliser une autre version du pilote nvidia (-updates, -experimental, ...) ?

FIXME: Sera supprimée

Depuis la version 3.1 de Bumblebee, il suffit d'installer la version de votre choix.

Ne peut-on pas utiliser exclusivement la carte NVIDIA, et éteindre la carte Intel ?

Cela dépend des modèles, mais pour la plupart, c'est matériellement impossible. La carte NVIDIA et la carte Intel sont matériellement connectées entre elles, et seule la carte Intel est connectée à l'écran. Donc l'affichage passe forcément par la carte Intel, il n'est donc pas possible de la désactiver. Au mieux, il sera possible dans un futur lointain de tout faire tourner sur la carte NVIDIA et de n'utiliser la carte Intel que pour l'affichage à l'écran.
Cependant certaines cartes mères gèrent la désactivation des composants matériels vidéo et son depuis le Bios ( carte Gigabyte sous Peripherals/Internal Graphics –> Disable ) et certains modèles (Lenovo notamment) offrent cette possibilité.

J'en n'ai rien à faire de l'autonomie. Puis-je faire en sorte que mon système tourne entièrement sur la carte NVIDIA ?

Ce sera possible avec PRIME, mais pas avant (possible désormais avec les pilotes 319.12, Linux 3.9 et X.org 1.14, moyennant un peu de configuration à faire). voir sur le forum pour un tutoriel.

Pourrait-on avoir un indicateur visuel pour savoir si la carte NVIDIA est allumée ou pas, et quel sont les programmes qui tournent dessus?

Un projet, aujourd'hui abandonné, visait à fournir cette fonctionnalité entre autres choses. Il s'agissait de bumblebee-ui. Une première vidéo de démonstration est disponible. On aura sûrement un outil similaire pour PRIME. Si vous utilisez Kubuntu ou autre distribution utilisant KDE, voir Plasma Bumblebee Indicator

Le système indique que le pilote nvidia est installé mais pas activé.

C'est normal, car c'est la réalité. Bumblebee utilise le pilote nvidia et l'a donc installé. Cependant, ce pilote n'est chargé que lorsqu'il est utilisé, c'est-à-dire lorsque optirun tourne, car ce n'est pas lui qui est responsable de l'affichage. Rien d'alarmant donc.

Je n'arrive pas à accéder au Panneau de Configuration NVIDIA (nvidia-settings) (ou il me dit que je n'utilise pas la carte NVIDIA). Que faire ?

Tout d'abord, si on vous conseille d'utiliser nvidia-xconfig, ne le faites pas !

En fait, le Panneau de Configuration NVIDIA ne détecte votre carte que si le fichier xorg.conf utilisé est celui de celle-ci et que de plus le serveur X.org sur lequel le Panneau tourne est géré par cette carte. Ces conditions font qu'il n'est pas possible d'utiliser le Panneau de Configuration NVIDIA tel quel pour le moment, nous réfléchissons aux différentes options qui s'offrent à nous pour contourner ce problème.
Voir à la section Utilisation ci-dessus, comment lancer nvidia-settings.

J'ai ce message d'erreur "(EE) Failed to load module "kbd" (module does not exist, 0)" qui apparaît à certains endroit, est-ce grave ?

Non pas du tout, ce devrait plutôt être un “Warning” (Avertissement) qu'une “Error” (Erreur), mais ça ne pose en aucun cas de problèmes.

Je n'arrive pas à utiliser mon port DVI et/ou HDMI. Est-ce lié à Optimus ?

Très certainement. A moins qu'il ne s'agisse d'un problème simple dont les solutions existent déjà, votre port HDMI est probablement relié à la carte nVidia. Nous avons beaucoup de travaux à faire de ce point de vue là, car pour le moment, il est quasiment impossible d'utiliser un tel port HDMI sous GNU/Linux.

Guide de dépannage

Vous rencontrez un problème, un message d'erreur, et vous ne savez pas quoi faire ? Commencer par comparer votre problème avec ceux décrits ici (chaque problème comporte plusieurs cas qui sont tous réglés par la solution proposée a priori, vous n'avez pas nécessairement tous les symptômes), et vous trouverez peut-être le (ou les) votre et sa (leur) solution(s).

Votre PC possède-t-il bien Optimus ou un équivalent NVIDIA ?

C'est la première chose à vérifier, lire la page de la doc sur Optimus pour le vérifier.

Utilisez vous bien la dernière version de Bumblebee ?

Il est important d'avoir la dernière version disponible, de nombreux problèmes sont corrigés au fur et à mesure de leur découverte. Vérifiez donc qu'il n'y a pas de mises à jour disponibles avec le gestionnaire idoine.

Au 26/04/2013, les paquets de Bumblebee Project en sont aux versions suivantes (distro est à remplacer par le nom de version de votre système, e.g. oneiric) :

Votre pilote nvidia est-il suffisamment récent ?

Il est conseillé d'utiliser la dernière version stable du pilote nvidia (331 au 04/03/2014), cf. la partie correspondante du guide d'installation.

Les headers du noyau sont-ils bien installés ?

FIXME Suppression prévue.

Un problème très fréquent sous Quantal est que les headers ne sont pas installés sur le système, empêchant la compilation du pilote nvidia ainsi que de bbswitch. Le message d'erreur correspondant est généralement celui-ci :

[ERROR]The Bumblebee daemon has not been started yet or the socket path /var/run/bumblebee.socket was incorrect.
[ERROR]Could not connect to bumblebee daemon - is it running?

La solution est la suivante (remplacer nvidia-current par la version que vous utilisez) :

sudo apt-get purge bbswitch-dkms nvidia-current
sudo apt-get install linux-headers-generic
sudo apt-get install --reinstall nvidia-current bbswitch-dkms bumblebee

Impossible d'obtenir la résolution d'affichage correcte pour mon écran, les effets 3D ne fonctionnent pas, je suis redirigé vers Unity 2D ou Gnome Classic au lieu d'Unity 3D ou Gnome Shell

  1. Vérifiez s'il existe un fichier xorg.conf dans le dossier /etc/X11. Si oui, il force très probablement l'utilisation de la carte nVidia ce qui est alors fort certainement à l'origine du problème, donc supprimez-le :
    sudo rm /etc/X11/xorg.conf
  2. Puis redémarrez.

Si ce n'est pas le cas (i.e. le fichier n'existe pas) où que le problème persiste, regardez le problème suivant.

Les effets 3D ne fonctionnent pas, je suis redirigé vers Unity 2D ou Gnome Classic au lieu d'Unity 3D ou Gnome Shell, j'ai les messages d'erreurs suivants :

Xlib: extension "GLX" missing on display ":0"
Error: couldn't find RGB GLX visual or fbconfig
ERROR(596): Could not obtain RGB visual with requested properties

Ce problème vient d'une mauvaise installation du pilote nvidia qui a supplanté les librairies graphiques de la cartes Intel. Pour le corriger,

  1. Ouvrez un terminal et entrez ceci :
    sudo apt-get install --reinstall libgl1-mesa-glx bumblebee-nvidia
  2. Redémarrez.

J'ai le message d'erreur suivant :

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) [drm] failed to open device
  1. Premièrement, à l'aide d'un terminal: commencez par vérifier que le pilote nouveau n'est pas chargé en mémoire :
    lsmod | grep nouveau

    S'il n'y a pas de retour, tout va bien. Sinon, effectuez ceci:

    sudo rmmod nouveau
  2. Ensuite, vérifiez que le pilote nvidia est bien construit dans le noyau en mémoire :
    sudo modprobe nvidia-current

    Si vous obtenez ce message d'erreur :

    FATAL: Module nvidia_current not found.

    Effectuez ceci :

    sudo apt-get install --reinstall nvidia-current
  3. Redémarrez et vérifiez si cela a résolu votre problème.

Sinon, essayez de modifier l'option “Driver” en éditant avec les droits d'administrateur le fichier /etc/bumblebee/bumblebee.conf en remplaçant

Driver=

par

Driver=nvidia

Redémarrer et vérifier si cela a résolu le problème.

J'ai l'un des messages d'erreurs suivant :

ERROR: ld.so: object 'librrfaker.so' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored.

Si vous êtes sur une version 64bits, commencez par vérifier que le paquet virtualgl-libs:i386 est bien installé. Si ce n'est pas le cas, installez-le et regardez si votre problème est réglé.

Si c'est le cas (paquet installé) ou que votre problème n'est pas réglé, vous êtes dans l'un des cas de figures suivants, et il n'existe aucune solution envisageable actuellement :

J'ai l'un des messages d'erreurs suivant :

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to initialize the NVIDIA GPU at PCI:1:0:0.  Please
[ERROR]Aborting because fallback start is disabled.
  1. Éditer avec les droits d'administrateur le fichier /etc/default/grub et ajouter
     rcutree.rcu_idle_gp_delay=1 

    à la ligne

     GRUB_CMDLINE_LINUX_DEFAULT= 

    Exemple :

     GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

    devient

     GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rcutree.rcu_idle_gp_delay=1" 
  2. Enfin ne pas oublier d'actualiser le GRUB en saisissant depuis un terminal la commande suivante:
     sudo update-grub

Source

Mon application ne se lance pas à travers optirun, j'obtiens le message d'erreur suivant :

[VGL] ERROR: Could not open display :8

Certains programmes lancent des processus fils qui ne sont alors pas récupérés pas optirun. C'est un problème sur lequel nous travaillons, une solution temporaire qui peut faire l'affaire dans de nombreux cas est de réaliser la manipulation suivante.

Ouvrez un terminal, et lancez ceci :

optirun bash

Une nouvelle interface de terminal tournant sur la carte nVidia est alors disponible, vous pouvez lancer votre programme (sans optirun) via celle-ci.

optirun attend indéfiniment

Éditer et vérifiez les fichiers /var/log/Xorg.8.log et /var/log/kern.log. Si le premier se termine par :

Xorg.8.log
(EE) NVIDIA(GPU-0): WAIT: (E, 0, 0x857d)

Et/ou que le second contient ces lignes :

kern.log
NVRM: Xid (0000:01:00): 16, Head 00000000 Count 00000000
NVRM: Xid (0000:01:00): 16, Head 00000000 Count 00000001
NVRM: Xid (0000:01:00): 16, Head 00000000 Count 00000002
NVRM: Xid (0000:01:00): 16, Head 00000000 Count 00000003
NVRM: Xid (0000:01:00): 16, Head 00000000 Count 00000004
NVRM: Xid (0000:01:00): 16, Head 00000000 Count 00000005
NVRM: Xid (0000:01:00): 16, Head 00000000 Count 00000006
NVRM: Xid (0000:01:00): 16, Head 00000000 Count 00000007

Il peut s'agir d'un bug présent dans le noyau Linux avec la fonction de virtualisation des processeurs Intel. La solution est d'ajouter “intel_iommu=off” à la ligne de démarrage. Ou alors d'une incompatibilité du pilote nvidia (rare).

Bumblebee ne se lance pas sous Linux Mint

Il faut modifier le fichier init de bumblebeed :

  1. Éditer avec les droits d'administrateur le fichier /etc/init/bumblebeed.conf
  2. Rechercher les lignes suivantes :
    start on    (login-session-start or desktop-session-start)
    stop on     (desktop-shutdown)

    Et les remplacer par :

    start on    runlevel [2345]
    stop on     runlevel [016]
  3. Sauvegarder puis redémarrer.

glxspheres et glxspheres64 , commande introuvable

Sous Ubuntu Trusty 14.04 (et au moins dans sa variante Gnome Shell Remix), il est possible qu'un certain nombre de paquets nécessaires au fonctionnement de Bumblebee ne soit pas présents par défaut dans les dépots officiels (bien que les paquets principaux bumblebee et bumblebee-nvidia le soit). Dans ce cas, les différentes commandes de tests “glxspheres” ou “glxspheres64” renvoient l'erreur “commande introuvable” bien que vous ayez suivi entièrement la procédure décrite plus haut pour Ubuntu 14.04.
Dans ce cas, l'ajout du PPA ppa:bumblebee/stable 2) est nécessaire:

Installer un paquet hors des dépôts officiels peut présenter un risque d'instabilité du système.

Dans un terminal, saisir les commandes suivantes :

  1. D'abord, Ajoutez à vos sources de logiciels le PPA suivant ppa:bumblebee/stable 3)
    sudo apt-add-repository ppa:bumblebee/stable
  2. recharger la liste des paquets:
    sudo apt-get update
  3. Et mettez à jour :
    sudo apt-get upgrade

Vous pouvez maintenant suivre la procédure d'installation et de test décrite plus haut pour Ubuntu 14.04 et suivantes.

Lien divers