J'ai un MacbookPro 5,1/5,2/5,3 qui vient avec deux cartes graphiques, et par défaut j'obtiens le 9600M GT qui consomme plus de batterie que l'autre. Je ne sais pas comment le désactiver et activer le second.
Plus de détails après la réponse de Bruno:
J'utilise Ubuntu:
J'ai installé rEFIt 0.14 et GRUB2 EFI64
J'ai modifié l'entrée du fichier /boot/grub/grub.cfg en ajoutant
outb 0x750 0
même si en haut du fichier, il est dit:
DO NOT EDIT THIS FILE
It is automatically generated by grub-mkconfig using templates
from /etc/grub.d and settings from /etc/default/grub
J'enregistre le fichier, démarre, sélectionne l'entrée puis j'ai un écran noir et rien de plus ne se passe.
J'ai essayé https://help.ubuntu.com/community/UEFIBooting#Selecting_the_graphic_card aussi, avec le même résultat.
Je vous remercie.
Pour désactiver le Nvidia 9600M GT, vous devez ajouter ce qui suit à l'entrée du menu grub outb 750x0
, c'est à dire:
menuentry 'Ubuntu, with Linux 3.0.0-12-generic' --class ubuntu --class gnu-linux --class gnu --class os {
outb 0x750 0
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd0,gpt5)'
search --no-floppy --fs-uuid --set=root bc495raf-515r-4r2b-b3de-0ec679a7303a
linux /boot/vmlinuz-3.0.0-12-generic root=UUID=bc495raf-515r-4r2b- b3de-0ec679a7303a ro hpet=force
initrd /boot/initrd.img-3.0.0-12-generic
}
De plus pour la mise hors tension après la reprise après la suspension:
À la reprise, le contrôleur graphique discret sera allumé et actif. Nous devons l'éteindre et revenir au GPU intégré.
Cela peut être fait avec un petit programme très simple:
#include <stdio.h>
#include <sys/io.h>
#define PORT_SWITCH_DISPLAY 0x710
#define PORT_SWITCH_SELECT 0x728
#define PORT_SWITCH_DDC 0x740
#define PORT_DISCRETE_POWER 0x750
static int gmux_switch_to_igd()
{
outb(1, PORT_SWITCH_SELECT);
outb(2, PORT_SWITCH_DISPLAY);
outb(2, PORT_SWITCH_DDC);
return 0;
}
static void mbp_gpu_power(int state)
{
outb(state, PORT_DISCRETE_POWER);
}
int main(int argc, char **argv)
{
if (iopl(3) < 0) {
perror ("No IO permissions");
return 1;
}
mbp_gpu_power(0);
gmux_switch_to_igd();
return 0;
}
Enregistrez cela dans un fichier appelé igd.c. Compilez-le avec gcc -O2 igd.c -o igd
. Cela créera un exécutable appelé igd
. Exécutée avec des privilèges de superutilisateur, elle éteindra le contrôleur discret et basculera vers le contrôleur intégré.
Maintenant, nous devons l'exécuter à la reprise. Créez un fichier appelé /etc/pm/sleep.d/10igd
Il doit contenir:
#!/bin/sh
#
/path/to/igd
Où/chemin/vers est le chemin vers lequel vous placez l'exécutable igd
que nous avons créé à l'étape précédente.
chmod +x /etc/pm/sleep.d/10igd
Ce fichier sera exécuté lors de la suspension et de la reprise. Bien fait, ce script 10igd vérifierait s'il s'agit d'une suspension/reprise/gel/dégel et ne s'exécuterait qu'en cas de besoin. En l'état, il s'exécute sur chacun d'eux. Ce n'est pas grave, cela ne fera pas de mal de l'exécuter pendant le gel ou la suspension.
J'ai tout fait fonctionner sur mon mbp5,1: son, LCD rétro-éclairage, rétro-éclairage du clavier, ventilateurs bas (depuis la désactivation du 9600M GT), Apple comme raccourci (CMD + C pour copier), Flash (presque stable) ... Alors demandez simplement si vous avez besoin de plus d'aide