Ceci est une ancienne révision du document !



nVidia Optimus : la vidéo hybride

Un tri est à faire, la technologie Optimus a bien avancé, il serait agréable de refaire la documentation. En l'état actuel, elle est même obsolète et contient des informations fausses pouvant induire en erreur. Veuillez lire ces deux topics : http://forum.ubuntu-fr.org/viewtopic.php?id=565321&p=1 et http://forum.ubuntu-fr.org/viewtopic.php?id=419018 (en entier pour celui-ci si vous voulez en tirer quelque chose d'utile) pour toutes informations.
Cette page est en construction FIXME.

La technologie Optimus est développée par le fabricant nVidia pour les ordinateurs portables. Elle a pour but de trouver le juste équilibre entre autonomie de la batterie et performance graphique.

Optimus est une technologie qui fonctionne à la fois sur le plan matériel et logiciel. Techniquement, Optimus exploite deux cartes graphiques :

  • l'IGP (Integrated Graphics Processor), chipset graphique intégré à la carte mère, peu consommateur d'énergie mais aussi moins performant ;
  • le GPU (Graphics Processing Unit), la carte graphique dédiée, puissante mais gourmande.

Optimus passe de l'une à l'autre en fonction des besoins de l'utilisateur: puissance graphique ou économie d'énergie.

Nvidia ne propose aucun support pour cette technologie. Après une longue histoire qui n'est toujours pas terminé, le support de cette technologie sous linux a nettement évolué grâce à l'acharnement de plusieurs développeurs.

  • Début 2011, on ne pouvait encore qu'éteindre la carte Nvidia grâce à un petit module à insérer dans le noyau histoire d'économiser de l'énergie (acpi_call). Ce module nécessitait toutefois de trouver et de configurer les signaux à envoyer à la carte.
  • En avril 2011, Martin Juhl le développeur initial de Bumblebee a trouvé une solution pour utiliser la carte graphique en utilisant un logiciel nommé VGL qui ne sert pas vraiment à cela mais qui permet tout de même d'utiliser la carte Nvidia. Il a alors construit des scripts pour configurer automatiquement Ubuntu.
  • Mais à force de développer son programme nommé bumblebee par petit à coup son programme devenait un peu bancale. Une équipe de développeur (Bumblebee-Project) a alors réecrit complétement ce projet pour construire un programme plus solide qui ne permettait toutefois pas d'éteindre la carte.
  • Toutefois après un travail acharné, ils ont réussit à mettre au point un programme permettant d'éteindre la carte proprement sans avoir besoin de configurer quoi que ce soit (bbswitch).
  • En Janvier 2012, Bumblebee 3.0 (codé par le Bumblebee-Project) est sortie, ce programme peut fonctionner avec bbswitch et permet maintenant d'utiliser la carte Nvidia pour certains programmes et lorsque la carte n'est pas utilisée, elle est automatiquement éteinte.

Pendant ce temps, d'autres développeurs cherchent à intégrer cette technologie dans le noyau linux afin que le support d'Optimus soit complet (et qu'il n'utilise plus VGL) et qu'il ne nécessite aucune installation. L'histoire du support de cette technologie est donc loin d'être fini.

Pour installer Bumblebee 3.0, on peut passer par synaptic ou par le terminal.

Il faut ajouter les dépôts suivants :

deb http://ppa.launchpad.net/bumblebee/stable/ubuntu YOUR_UBUNTU_VERSION_HERE main

deb-src http://ppa.launchpad.net/bumblebee/stable/ubuntu YOUR_UBUNTU_VERSION_HERE main

Puis installer les paquets bumblebee, vgl et bbswitch (si l'on souhaite que la carte nvidia s'éteigne automatiquement quand elle n'est pas utilisée).

Enfin on peut lancer un programme depuis un terminal en utilisant la carte graphique Nvidia, en ajoutant optirun PROGRAMME en remplaçant PROGRAMME par la commande du programme que l'on souhaite lancer. Par exemple : optirun firefox ou optirun sauerbraten.

Même si cette partie peut contenir des informations intéressantes, elle a besoin d'un grand nettoyage. Normalement l'installation de bumblebee 3.0 par les dépôts comme décrit précédemment est la seule information nécessaire.

Analyse

Selon la communauté Linux, Optimus n'est pas adapté à l'architecture des systèmes Linux, notamment en ce qui concerne le serveur d'affichage Xorg, vieillissant et incompatible avec le changement "à chaud" de périphérique d'affichage propre à Optimus.

En l'état, sur les portables Optimus équipés de Linux, seul l'IGP serait exploitable, offrant des performances décevantes au regard de celles de la plupart des GPU. Pour autant, le GPU resterait alimenté, diminuant l'autonomie tout en restant inutilisable.

Il est toutefois possible de désactiver la carte graphique dédiée sur un grand nombre d'ordinateur portable en utilisant un module nommé acpi_call dont l'installation est détaillée sur un site anglophone consacré au développement du support des cartes graphiques hybrides: linux-hybrid-graphics. L'utilisation de ce module permet d'économiser de l'énergie (en pratique quelques watts) mais ne permet pas d'utiliser la carte graphique dédiée qui n'est pas alimentée.

Il existe aussi Bumblebee, un autre petit logiciel qui éteind la carte nVidia automatiquement et de l'allumer quand on le souhaite pour lancer un jeu par exemple, ou n'importe quelle autre application, permettant ainsi de profiter de l'autonomie de sa batterie et de la puissance de la carte nVidia à travers le pilote propriétaire quand l'utilisateur le souhaite.

Un premier module permettant de basculer à chaud entre le GPU et l'IGP est actuellement en phase expérimentale, utilisable avec le pilote libre Nouveau.

Pilotes

A l'heure actuelle, installer sur un portable Optimus les pilotes de la carte graphique nVidia (y compris ceux proposés par Ubuntu) mènera très probablement à un écran noir au redémarrage. Mieux vaut donc ne toucher à rien (et se contenter des ressources de l'IGP)!

Pilotes propriétaires

A l'heure actuelle, nVidia n'a présenté aucun pilote Linux permettant le support d'Optimus. Et ils ne prévoient pas d'en développer.

Pilotes libres

Optimus étant une technologie relativement récente (lancée début 2010), les travaux de la communauté sont encore expérimentaux. Pour l'instant, aucune solution fiable n'est applicable.

Des travaux sont entrepris ici. Cependant, ils ne concernent pas uniquement Optimus mais plus généralement les technologies basées sur le même concept. Le module développé permet toutefois de désactiver la plupart des cartes graphiques dédiées équipées de la technologie Optimus de nVidia et ainsi de ne plus alimenter la carte nVidia économisant ainsi du temps de fonctionnement sur batterie.

Solutions

Bumblebee

Le Bumblebee d'origine n'est plus maintenu par son créateur, voir cet article publié par l'auteur. L'équipe s'est séparée en deux, il y a maintenant Ironhide, projet maintenu par la personne qui a initialisé Bumblebee et Bumblebee project qui est maintenu par d'anciens contributeur au premier Bumblebee (d'après eux Bumblebee project est plus performant que Ironhide).

Bumblebee est un petit logiciel capable, si votre ordinateur est compatible, d'éteindre automatiquement la carte nVidia et de ne l'allumer que quand vous le souhaitez (pour lancer un jeu par exemple). Le but à long terme est de fournir un support complet de la technologie Optimus. Le soft ne permet pas pour l'instant un switch "transparent" comme sous Windows, mais le switch existe toujours et permet d'utiliser la 3D, tout en économisant en batterie.

Voir le site du projet sur GitHub.

Pour installer Bumblebee, il existe deux méthodes :

Télécharger l'archive sur le site puis l'installer
Utiliser le PPA

Ce Personal Package Archives (PPA) est mis à disposition sur la plate-forme launchpad par l'auteur :

  • Rendez-vous sur la page de la plate-forme hébergeant l'archive.
  • Dans la section "Adding this PPA to your system", dérouler le menu "Technical details about this PPA" et choisir la version d'Ubuntu que vous utilisez.
  • Copier les adresses des dépôts APT, ajoutez les à votre liste de sources, puis actualiser votre liste de paquets.
  • Installer le paquet en utilisant la logitheque d'Ubuntu où il apparaîtra sous le nom de "Bumblebee". Il sera mis à jour automatiquement lorsque l'auteur publiera de nouvelles versions.
N'installez pas les pilotes propriétaires Nvidia au préalable, puisque le script Bumblebee se charge de le faire.

Une fois l'installation finie, disons que vous voulez lancer le jeu vidéo Amnesia. Pour cela, ouvrez un terminal et tapez, si vous êtes sur Ubuntu 64 bits:

optirun64 amnesia

et sur Ubuntu 32 bits:

optirun32 amnesia

Les deux commandes optirun sont les commandes qui permettent d'allumer la carte nVidia et de lancer n'importe quel logiciel avec la carte nVidia.

Liste des ordinateurs supportés

Voici une liste d'ordinateur qui fonctionnent (en date du 22 mai 2011). Si votre ordinateur n'est pas sur la liste mais que Bumblebee fonctionne, alertez l'auteur sur sa page github pour qu'il l'ajoute à la liste.

marque modèle
Acer Aspire 5742G
Aspire 5745PG
Alienware M11X R2
Asus EeePC 1215N
K52JC
N53JG
N61Jv (X64Jv)
N73Jn
N82Jv
P52JC
P31JG
U30J
U35J
U35JC
U36JC
U35SD
U43JC
U53JC
X52JC
N55SF
CLEVO W150HNQ
Dell Vostro 3300
Vostro 3400
Vostro 3500
XPS 15 (L502x)
XPS 17 L701x
XPS 17 L702x
Samsung RF511
RF711
Toshiba Satellite M645-SP4132L
  • Si Bumblebee ne marche pas: Rester sous Ubuntu tant que l'on n'a besoin que de la puissance de l'IGP (bureautique, vidéo…) et redémarrer sous Windows (qui lui, gère l'Optimus sans problème) pour tout ce qui demande plus de ressources 3D (jeux…). Eventuellement, regarder la méthode de l'acpi_call pour couper l'alimentation de la carte nvidia.
  • Si on souhaite acquérir un portable: Bien se renseigner sur la présence d'Optimus ou d'autres technologies d'affichage hybride. Le mieux étant de les éviter, pour l'instant ou d'acheter un portable compatible avec Bumblebee. À défaut, mieux vaut prendre une machine pourvue d'un IGP OU d'un GPU, mais pas les deux.
  • Certains ordinateurs proposent dans leur BIOS de désactiver le mode hybride et de n'utiliser que la carte graphique nVidia. Source : LinuxFR (Qui se traduit généralement par un choix entre "Enhanced" et "Compatible", choisissez compatible et installez le driver normalement, et repassez à "Enhanced" lors d'un éventuel redémarage sous Windows, qui plantera sans cette formalité)

Désactiver la carte graphique nVidia

Attention ce qui suit est encore au stade expérimental mais néanmoins fonctionnel. À vos risques et périls !

Ces explications s'inspirent de ceci.

Si Bumblebee ne marche pas avec votre ordinateur et qu'il vous faut absolument de l'autonomie, une autre solution est de désactiver complètement la carte nVidia. Il faut savoir que cette manipulation ne permet plus d'éteindre Ubuntu directement via votre session. La solution étant de taper dans un terminal :

sudo shutdown now

A noter également que cette manipulation sera à refaire à chaque mise à jour du noyau (kernel).

Avant de commencer, débranchez l'alimentation du portable pour rester sur batterie (vous comprendrez pourquoi) tout en gardant Internet activé.

Installation du module acpi_call

$ git clone http://github.com/mkottman/acpi_call.git
$ cd acpi_call
$ make

Vérification du bon fonctionnement d'acpi_call

grep rate /proc/acpi/battery/BAT0/state

Ce qui doit vous donnez quelque chose comme ceci :

present rate:            19913 mW

Maintenant faites :

sudo insmod acpi_call.ko

puis

sudo echo '\_SB.PCI0.PEG1.GFX0._OFF' > /proc/acpi/call

Vérification de la désactivation de la carte nVidia :

grep rate /proc/acpi/battery/BAT0/state

Si tout fonctionne correctement, vous devriez obtenir un résultat similaire :

present rate:            12558 mW

Normalement, vous devriez constater une diminution de la consommation électrique d'environ 4000 mW.

Ensuite on copie acpi_call dans la liste des modules du kernel (noyau).

sudo cp acpi_call.ko /lib/modules/`uname -r`/kernel/drivers/acpi/

puis

sudo depmod

La manipulation qui suit va permettre de désactiver la GeForce automatiquement au démarrage.

Allez dans :

→ Système → préférences → Application au démarrage

puis faites "ajouter". Comme nom, donnez lui "Anti-Nvidia". Pour la commande, faite "Parcourir.." et sélectionnez le fichier qui s'appelle "test_off.sh". Il se trouve dans le dossier acpi_call qui est dans votre home (dossier personnel).

Ensuite faites "Ajouter" puis "fermer". Voila, la GeForce sera désactivée automatiquement à chaque démarrage.

Ne jamais effacer le dossier acpi_call qui se situe dans votre home (dossier personnel)

Sur mon portable, l'autonomie en lecture vidéo est passée de 2h30 à 3h10.

—–

Contributeurs : eternal404, Le vecteur, cbrunos

  • nvidia_optimus.1328536886.txt.gz
  • Dernière modification: Le 06/02/2012, 15:01
  • par 109.214.104.180