Ceci est une ancienne révision du document !
vga_switcheroo
vga_switcheroo est un outil inclus dans le noyau Linux qui permet de basculer entre les différentes cartes graphiques d'un ordinateur. Cet outil est particulièrement utile si vous posséder un ordinateur portable avec plusieurs GPU.
Vous trouverez plus d'informations sur cette publication sur linuxfr.org lors de la sortie de Linux 2.6.34.
De base, il faut savoir que les deux cartes graphiques tournent à fond alors qu' une seule est utilisée.
Si vous voulez constater la différence d'autonomie, saisissez dans un terminal la commande suivante:
acpi
devrait vous répondre par exemple
Battery 0: Discharging, 88%, 04:55:28 remaining
Ici l' autonomie anoncée est de 4h55 avec 88% de batterie.
Saisissez maintenant
echo ON > switch ; sleep 30 ; acpi
Ce qui activera la carte graphique (ici une ATI) inutilisée avant de retester l'autonomie 30 secondes plus tard. La réponse sera par exemple
Battery 0: Discharging, 88%, 02:36:56 remaining
Ici, toujours avec 88% de batterie, il est annoncé 2h36 d'autonomie.
Manipulation préalable
vga_switcheroo est-il disponible dans mon noyau ?
Afin de vérifier que vga_switcheroo est disponible dans le noyau que vous utilisez actuellement, saisissez dans un terminal la commande suivante:
grep -i switcheroo /boot/config-`uname -r`
La réponse devra être
CONFIG_VGA_SWITCHEROO=y
Si vous avez bien cette ligne, vga_switcheroo peut-être utilisé et vous pouvez continuer sans problème. Dans le cas contraire, vérifiez avec la commande
uname -r
que votre noyau est au moins à la version 2.6.34. Dans Ubuntu 10.04 la version de base du noyau étant 2.6.32, vga_switcheroo n'est donc pas disponible. Vous pouvez alors soit:
- mettre à jour votre distribution
- vous diriger vers la page consacrée au kernel sur le wiki pour trouver une autre solution.
/sys/kernel/debug est-il bien monté ?
Maintenant que vous savez que le noyau inclus vga_switcheroo, vérifiez que /sys/kernel/debug est bien monté (en principe sur Ubuntu, aucun problème) avec la commande suivante :
mount | grep /sys/kernel/debug
Qui doit vous renvoyer :
none on /sys/kernel/debug type debugfs (rw)
Si cette ligne s'affiche tout va bien, vous pouvez passer à la partie suivante ! :) Si ce n'est pas le cas (ça ne renvoie rien), éditez avec les droits d'administration le fichier /etc/fstab pour y insérer cette ligne:
none /sys/kernel/debug debugfs defaults 0 0
Ensuite, redémarrez votre ordinateur ou saisissez dans un terminal:
sudo mount -a
.
Utilisation de vga_switcheroo
Un peu de vocabulaire
Pour comprendre ce que vous allez faire, un peu de vocabulaire utilisé par vga_switcheroo :
- La carte intégrée correspond à votre chipset graphique (souvent un Intel), peu puissant mais très peu gourmand en énergie.
- La carte discrète correspond à votre carte graphique. Plus puissante que le chipset (utile pour jouer, décoder des vidéos HD, faire de l'infographie 3D,…), cette carte consomme beaucoup de ressources, et réduit donc l'autonomie de votre ordinateur.
Le fichier switch
Pour basculer entre les cartes graphiques, vga_switcheroo utilise le fichier /sys/kernel/debug/vgaswitcheroo/switch.
Pour l'utiliser plus simplement et faciliter les modifications, attribuez-vous les droits sur ce fichier pour qu'il vous appartienne dès le démarrage. Pour faire cela, il suffit d' éditer avec les droits d'administration le fichier /etc/rc.local (juste avant le exit 0
) pour y ajouter cette ligne:
chown nom_utilisateur:nom_utilisateur /sys/kernel/debug/vgaswitcheroo/switch
Vous pouvez également ajouter "une règle par défaut" qui sera exécutée à chaque lancement. Par exemple, pour désactiver directement votre carte graphique inutilisée, ajoutez dans le fichier /etc/rc.local :
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
Les commandes disponibles
Éteindre la carte graphique non utilisée :
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
Allumer la carte graphique non utilisée :
echo ON > /sys/kernel/debug/vgaswitcheroo/switch
Active la carte graphique intégrée : (aucun effet si X est démarré)
echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
Active la carte graphique discrète : (aucun effet si X est démarré)
echo DIS > /sys/kernel/debug/vgaswitcheroo/switch
Malheureusement, le serveur X ne gèreant pas la changement de carte graphique "à chaud", il faut le redémarrer pour pouvoir changer de carte graphique. Les commandes suivantes permettent de le forcer à redémarrer sur une ou l'autre des cartes :
Active la carte graphique intégrée au prochain démarrage de X :
echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch
Active la carte graphique discrète au prochain démarrage de X :
echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
Contributeurs: minishooter