Il y a quelques jours, j’expliquais comment installer une carte Wi-Fi Broadcom dans un MacBook blanc pour obtenir la compatibilité AirDrop. Ca fonctionne plutôt bien, mais — petit problème — la carte n’est pas reconnue comme une carte AirPort Extrême mais comme une carte sans fil de tierce partie.
Comme ça ne me plaît pas, j’ai cherché un peu. Et il est en fait possible de transformer une carte Wi-Fi Broadcom en carte AirPort Extrême, grâce à GNU/Linux. Ca reste assez compliqué à mettre en place si vous ne connaissez pas un minimum Linux, mais si la ligne de commande ne vous fait pas peur, c’est faisable. Dans la suite, je vais donc vous expliquer comment flasher une carte Broadcom (ici la BCM4322 utilisée pour la bidouille AirDrop).
On va dire que vous savez lancez Linux (dans mon cas Ubuntu) sur une machine. Il est a priori possible de le faire directement sur le Mac, en installant Linux, mais comme ma machine n’a qu’un SSD de 32 Go, j’ai utilisé un autre ordinateur. Il est possible d’utiliser un Live CD ou une distribution sur clé USB, mais ça m’a posé des problèmes pour la mise à jour du noyau (qui était dans une version trop ancienne) et j’ai donc installé Ubuntu 11.04 sur le disque dur.
Attention : si la carte est une BCM4322, il faut au moins un noyau 2.6.39 pour que ça fonctionne.
J’ai utilisé le tutorial que vous pouvez trouvez ici, avec quelques petites différences.
D’abord, il faut lancer le Terminal. Une fois dedans, il faut taper lspci
et vérifier que la carte Broadcom est bien reconnue. Une ligne comme la suivante devrait apparaître :
Network Controler : Broadcom Corporation BCM4322, etc.
Ensuite, on doit installer quelques logiciels.
sudo apt-get install build-essential
sudo apt-get install curl
sudo apt-get install git-core
Quelques minutes dans mon cas.
Ensuite les commandes suivante :
sudo apt-get install b43-fwcutter
sudo apt-get install firmware-b43-installer
(obligatoire avec Unbuntu 11.04)
sudo modprobe b43
sudo git clone git://git.bu3sch.de/b43-tools.git
cd b43-tools/ssb_sprom
sudo make
sudo cp ssb-sprom /usr/sbin/
sudo chmod 755 /usr/sbin/ssb-sprom<
sudo chown root:root /usr/sbin/ssb-sprom
SSB_SPROM=$(find /sys/devices -name ssb_sprom)
Puis
echo $SSB_SPROM
Si la commande renvoie un truc comme /sys/device/pci/ des nombres /ssb_sprom
, c'est bon. Si c'est vide, c'est que la carte n'est pas reconnue par le pilote b43 et qu'il faut s'arranger (si possible) pour que ça passe. Avec une BCM4322, comme ici, un noyau 2.6.39 (au moins) est nécessaire.
sudo cat $SSB_SPROM > ssb_sprom_copy
sudo ssb-sprom -i ssb_sprom_copy -P
Cette commande devrait vous donner une liste d'informations sur la carte Wi-Fi. Selon la carte, il va falloir changer les valeurs subv
(fabricant), subp
(produit), ccode
(pays) et regrev
(validation, 0x0001
pour les USA et 0x0002
pour l'Europe). Dans mon cas, j'ai indiqué que la carte était un modèle FR
au lieu d'un modèle DE
.
Pour les valeurs, elles dépendent de la carte utilisée. Voici les valeurs pour les cartes Broadcom classiques :
• BCM4311 - Vendor 0x106b
/ Product 0x0087
• BCM4321 - Vendor 0x106b
/ Product 0x008c
• BCM4322 - Vendor 0x106b
/ Product 0x0093
• BCM4328 - Vendor 0x106b
/ Product 0x008b
sudo ssb-sprom -i ssb_sprom_copy –-subv 0×106b –-subp 0×0093 --ccode FR --regrev 0x0002 -o new_ssb_sprom_copy
On tape la commande suivante pour vérifier que les valeurs subp
et subv
ont bien été changées.
sudo ssb-sprom -i new_ssb_sprom_copy -P
La dernière commande va permettre de flasher la carte, donc on met l'ordinateur sur secteur et on attend bien que ce soit terminé.
sudo cp new_ssb_sprom_copy $SSB_SPROM
Il faut attendre un peu que le système flashe la carte, et ensuite c'est bon. Plus qu'à remettre la carte dans un MacBook et ça a fonctionné.