jeudi 23 mai 2013

Installation de Bumblebee pour Lenovo S430

De nombreux ordinateurs portatifs possèdent une carte vidéo intégrée (Intel) et une autre carte graphique plus performante (Amd/Nvidia). Pour les cartes vidéo Nvidia, Optimus permet de basculer d'une carte vidéo à une autre afin d'avoir le maximum de performance ou d'autonomie. Cependant, Nvidia ne supporte pas ce système sous Linux. C'est là que le projet Bumblebee entre en jeux.

Le lenovo S430 utilise le système Optimus. Le pilote propriétaire a été installé sur cette machine qui utilise Suse 12.3, car nouveau n'a jamais fonctionné sur cette machine.
Préparation
Bios
Dans le bios de la machine, concernant la section "Display", Graphics Device doit être mis à Optimus. De plus OS Dectection for Switchable Graphics doit être mis à Enabled.

Groupe
Créer un groupe bumblebee. Ajouter les utilisateurs qui utiliseront cette technologie à ce groupe. Tous ces utilisateurs devront aussi être ajoutés au groupe video.

Dépôt
Ajouter le dépôt
http://download.opensuse.org/repositories/home:/Overman79:/Laptop/openSUSE_12.3/.
Il contient tout le nécessaire pour l'installation de bumblebee.

Noyau
La version 3.9.3 du noyau a été utilisée, alors que la version du driver de nvidia est pour la version 3.7. Une compilation sera alors nécessaire.

Les packages suivants doivent être installés

kernel-desktop-devel 
kernel-devel
gcc

Module
Le module nouveau ne doit pas être chargé au démarrage. Assurez-vous d'avoir le fichier
/etc/modprobe.d/50-blacklist-nouveau.conf

s'il n'existe pas, créez-le. Il devra contenir: blacklist nouveau

Installation
Dans le dépôt de bumblebee, les packages suivants doivent être installés.

VirtualGL
bumblebee
dkms
dkms-nvidia
dkms-bbswitch
libturbojpeg
primus
x11-video-nvidia

Si vous utilisez une version 64bits et que vous désirez aussi utiliser des applications 32bits alors, installez aussi les packages suivants

VirtualGL-32bit
primus-32bit
libturbojpeg-32bit
x11-video-nvidia-32bit

Dkms permettra de reconstruire les modules lorsqu'un nouveau noyau sera installé.

#systemctl enable dkms
#systemctl enable bumblebeed

Cette dernière commande devrait retourner une erreur, car le module nvidia n'a pu être construit lors de l'installation.

Dans le fichier: /etc/bumblebee/bumblebee.conf, Driver doit être mis à nvidia.

Redémarrer la machine

On va vérifier que la carte nvidia est à off.

#cat /proc/acpi/bbswitch
off

Il faut quitte notre session X.

init 3


On va activer la carte nvidia


#tee /proc/acpi/bbswitch <<<ON
ON

On vérifie qu'elle est bien active

#cat /proc/acpi/bbswitch
0000:01:00.0 ON

Il est aussi possible d'utiliser vgaswitcheroo (si activé dans le noyau)

cat /sys/kernel/debug/vgaswitcheroo/switch
0:DIS: :Pwr:0000:01:00.0
1:IGD:+:Pwr:0000:00:02.0

IGD est la carte Intel.
DIS est la carte Nvidia.
Pwr signifie que la carte est allumé.
+ signifie que la carte est active.

On se rend dans le répertoire  des sources et on recompiler le module


# cd /usr/src/NVIDIA-Linux-x86_64-319.17
#./nvidia-installer

Redémarrer la machine
Test
La carte Intel est utilisée, pour lancer des programmes avec la carte nvidia il est possible d'utiliser optirun <nom du programme>

Par exemple:

L'option info sur ce programme permet d'afficher la carte graphique en cours.

#optirun glxgears -info
GL_RENDERER = GeForce GT 620M/PCIe/SSE2
GL_VERSION = 4.3.0 NVIDIA 319.17
GL_VENDOR = NVIDIA Corporation