Comment (presque) flasher un MacBook Core Duo en MacBook Core 2 Duo

Dans mon labo, j’ai un MacBook de première génération qui traîne, une machine avec un CPU Core Duo et 2 Go de RAM. Et je me suis dit « Pourquoi ne pas passer à 3 Go de RAM ? ». Petit problème, ce modèle n’accepte que 2 Go. Mais comme il est possible de faire évoluer officieusement certains Mac mini, je me suis dit que ce serait possible avec le MacBook. Mais en fait… non.

La première génération de Mac Intel chez Apple utilise un processeur Core Duo (Yonah, 32 bits) et limite généralement la capacité de la mémoire à 2 Go (MacBook, iMac, MacBook Pro, Mac mini). Mais comme la seconde génération, à base de Core 2 Duo, utilise le même design interne, certains ont essayé de flasher le firmware. Dans la pratique, la modification permet de gérer plus de mémoire (4 Go physiquement, 3 Go en pratique) et – avec un processeur adapté – d’installer Mac OS X Lion. Elle a donc surtout de l’intérêt sur un Mac mini ou un iMac, deux machines dont le processeur peut être remplacé par un Core 2 Duo. La manipulation existe aussi pour le premier Mac Pro, avec la possibilité d’installer Lion et d’utiliser certains CPU Xeon. Sur un MacBook, changer la version de l’EFI ne transforme pas le Core Duo en Core 2 Duo, mais elle permet la gestion de plus de mémoire.

Sur un MacBook, je n’ai pas trouvé beaucoup d’informations, parce que le changement de firmware ne permet pas d’installer Lion, faute de CPU compatible. J’ai commencé par ce sujet sur les forums de MacBidouille, qui donne la marche à suivre. Je vous mets dans le bain direct : la marche à suivre n’est pas complète, je vais résumer. Pour suivre, petit rappel : Apple donne des noms de code à ses machines et le MacBook en Core Duo est le MacBook1,1, la version en Core 2 Duo (identique ou presque) est le MacBook2,1.

Premièrement, il faut la mise à jour d’EFI du MacBook1,1. Le lien dans la liste d’Apple n’est pas le bon, sinon ce n’est pas drôle, la bonne page est ici. Ensuite, il faut aussi la mise à jour EFI du MacBook2,1. Le flash fonctionne parce qu’Apple propose les fichiers pour le faire (enfin, en tout ça simplifie les choses).

Ensuite, il faut extraire quatre fichiers. Vous pouvez passer par Pacifist, ou sinon une suite de clic secondaires avec « Afficher le contenu du paquet » marche aussi. Vous devez garder EfiUpdaterApp2.efi (le programme de flash du MacBook2,1), EfiUpdaterApp.efi (la même chose pour le 1,1), LOCKED_MB21_00A5_07B.fd et LOCKED_MB11_0061_03B.fd (les firmware). L’idée va donc être d’utiliser le programme de flash du MacBook1,1 pour appliquer le firmware du 2,1 et le programme de flash du 2,1 pour appliquer le firmware du 1,1 (pour le retour en arrière).

Première étape, flasher. Il faut modifier le programme de flash, qui attend deux choses : un fichier dont il connaît la somme de vérification (CRC) et un firmware. Par défaut, et c’est ce qui manque dans le tutorial sur MacBidouille, le programme n’acceptera de flasher une machine que si elle a un firmware précis, celui d’origine. Sur une machine déjà à jour, il ne se lance donc pas.

Pour le CRC, il faut calculer le CRC des deux firmware (avec la commande crc32 nomdufirmware) et changer les valeurs dans le fichiers. Attention, la commande donne une valeur en little endian, le programme attend du big endian. Le firmware du 1,1 a normalement un CRC de d51cc825, qui – une fois converti – donne 25c81cd5. Le firmware du 2,1, lui, a un CRC de 321cdb73, soit 73db1c32. Il faut donc ouvrir le fichier EfiUpdaterApp.efi et remplacer le 25c81cd5 par un 73db1c32 avec un éditeur hexadécimal.

Ensuite, la vérification du firmware. Le programme contient une chaîne de caractère et effectue une comparaison entre le firmware de la machine et ce qu’il attend. Par défaut, il cherche donc le firmware précédent. Si votre machine n’a jamais été mise à jour, ce n’est pas nécessaire mais dans le cas contraire (si elle possède la version MB11.0061.B03), il faut effectuer une modification. Le fichier EfiUpdaterApp.efi contient les références de pas mal de machines, et il faut donc mettre la bonne en utilisant un éditeur de texte. Attention, les chiffres et les lettres sont séparés par des .. Il faut bien indiquer la chaîne d’identification complète (MB11.88Z.0061.B03.0610121324 pour un MacBook à jour). Le plus simple consiste à passer par les résultats de Geekbench, qui contiennent les données.

Enfin, avant de flasher, il faut déplacer les fichiers au bon endroit. Première étape, renommer LOCKED_MB21_00A5_07B.fd en LOCKED_MB11_0061_03B.fd (nous allons remplacer le fichier du 1,1 par celui du 2,1). Le EfiUpdaterApp.efi et le firmware doivent ensuite être copié dans /System/Library/CoreServices/Firmware Updates. Enfin, une ligne de commande doit être lancée dans le terminal.

sudo bless -mount / -firmware /System/Library/CoreServices/Firmware\ Updates/EFIUpdaterApp.efi -payload /System/Library/CoreServices/Firmware\ Updates/LOCKED_MB11_0061_03B.fd -options "-x efi-apple-payload0-data" --verbose

Le flash proprement dit nécessite d’éteindre le Mac et de presser quelques secondes le bouton d’allumage. Pensez à bien charger la batterie avant et ne pas tenter ça pendant un orage. La LED à l’avant devrait clignoter et le Mac devrait émettre un bruit aigu. Ensuite, il va essayer de flasher le firmware. Si une barre de progression apparaît quelques secondes et que le Mac redémarre… vous avez fait une erreur. Si tout se passe bien, la barre va avancer (compter quelques minutes) et le Mac va redémarrer avec le nouveau firmware.

Là, c’est mon #FAIL.

Maintenant, vous allez comprendre le (presque) dans le titre. L’écran ne fonctionne pas. Je me suis senti idiot devant une machine avec un écran noir. Après quelques essais, je me suis rendu compte (notamment en branchant un écran) que la machine n’était pas morte mais que l’écran ne fonctionnait pas. Avec un externe, le Mac affiche la … et c’est tout. Je me suis connecté via le partage d’écran (j’expliquais hier comment l’activer quand on n’a pas accès à l’interface…) et j’ai donc fait les tests. La bonne nouvelle, c’est que le flash a fonctionné et que le MacBook accepte bien 4 Go de RAM. La mauvaise, donc, c’est que la batterie ne charge pas et que l’écran n’est pas reconnu. C’est visiblement des soucis liés au SMC et (malheureusement) Apple ne propose pas de mise à jour du contenu de la mémoire du SMC pour les MacBook2,1.

Core Duo et 4 Go

Core Duo et 4 Go


2x 2 Go

2x 2 Go


MacBook2,1 et Core Duo

MacBook2,1 et Core Duo


Pas d'écran

Pas d’écran


Pas de batterie détectée

Pas de batterie détectée

Une fois quelques captures effectuées, j’ai donc effectué le chemin inverse. Flasher le MacBook2,1 en MacBook1,1 (downgrade).

Le fichier EfiUpdaterApp2.efi contient plusieurs références au CRC, il faut remplacer les 73db1c32 par 25c81cd5 en hexadécimal. Même chose pour l’identification du firmware, mais cette fois à deux endroits avec la valeur MB21.88Z.00A5.B07.0706270922. Enfin, il faut renommer LOCKED_MB11_0061_03B.fd en LOCKED_MB21_00A5_07B.fd (attention à bien utiliser l’original) et placer le tout dans /System/Library/CoreServices/Firmware Updates. La commande qui permet de préparer le flash n’est pas exactement la même, mais les étapes suivantes, si. Pensez à remettre 2 Go de RAM au maximum (sous peine de ne pas démarrer).

sudo bless -mount / -firmware /System/Library/CoreServices/Firmware\ Updates/EFIUpdaterApp2.efi -payload /System/Library/CoreServices/Firmware\ Updates/LOCKED_MB21_00A5_07B.fd -options "-x efi-apple-payload0-data" --verbose

Bonne nouvelle, le downgrade fonctionne. La machine récupère son écran et fonctionne comme au premier jour. Mais avec seulement 2 Go de RAM, dommage.

A noter quand même qu’une mise à jour du SMC doit sûrement exister : une partie des MacBook en Core 2 Duo dispose d’un SMC en version 1.13f3 et d’autres utilisent une version 1.17f0.