Introduction
Chez beaucoup de fabricants de PC portables, on n’aime pas que les utilisateurs « jouent » avec le matériel. Et la solution la plus courante est d’interdire l’ajout des cartes tierces en bloquant la reconnaissance de ces dernières au niveau du BIOS.
Si un utilisateur veut changer sa carte Wi-Fi pour une raison x ou y — la carte ne fonctionne plus, il veut un modèle performant, etc. —, il est obligé de prendre un modèle vendu à prix d’or par le constructeur. Le fonctionnement de ce bridage est assez simple : le BIOS vérifie que la carte est bien dans une « whitelist » contenant uniquement les cartes connues avant de l’activer. Après quelques recherches, nous avons découvert que deux constructeurs sont spécialistes de cette technique : Lenovo et HP. D’autres, comme Apple, acceptent les cartes tierces, mais les cartes « AirPort Extrême » offrent parfois plus de fonctions, alors que les puces utilisées restent identiques.
Dans ce dossier, nous allons expliquer comment « remarquer » une carte Broadcom pour qu’elle soit acceptée par les ordinateurs portables HP, Lenovo ou Apple et qu’elle soit reconnue comme une carte officielle.
Flash de BIOS et autres Whitelist
La méthode que nous allons expliquer, si elle est fonctionnelle, a un défaut : il faut que le BIOS original contienne une référence à une carte Broadcom pour que ça fonctionne. Ce n’est pas toujours le cas, HP et Lenovo travaillant beaucoup avec Intel, mais quand c’est le cas, la méthode est fonctionnelle.
Dans nos tests, nous avons flashé une carte pour un MacBook et une carte pour un HP Mini 100, un netbook. La manipulation devrait fonctionner avec les machines Lenovo, sans que nous ayons pu tester directement. Chez Lenovo, les cartes Broadcom sont rares et un modèle comme le T400 ne supporte directement que des cartes Intel et quelques modèles Atheros et Realtek : c’est donc inutilisable sur ce modèle, par exemple.
Pour les personnes motivées et n’ayant pas peur de l’anglais, il est possible de « remarquer » des cartes Atheros de la même façon que les cartes Broadcom, comme expliqué sur ce forum.
Enfin, il existe une méthode plus efficace que la notre pour les machines Lenovo et HP, mais elle a un défaut : elle nécessite de modifier le BIOS original. Le fonctionnement est simple, la détection des cartes est simplement supprimée du BIOS original. Le problème est que d’une part flasher un BIOS n’est jamais anodin et que d’autre part la manipulation est à refaire à chaque mise à jour du BIOS de la part du constructeur.
De notre côté, nous ne sommes pas fans des solutions qui peuvent rendre inutilisable un PC complet. En flashant uniquement la carte Wi-Fi, la perte dépassera rarement quelques dizaines d’euros — le prix d’une carte Wi-Fi — en cas de problème. Pour les personnes sûres d’elles, le forum de BIOS Mods explique comment modifier le BIOS, même si nous déconseillons cette solution.
Le choix de la carte
Le point le plus important est finalement le choix de la carte elle-même. Si les cartes Broadcom sont courantes sur eBay, à des prix assez faibles — notre carte a coûté moins de 15 € —, il faut bien choisir la puce, en fonction de ce que l’ordinateur accepte.
Chez HP
Pour le HP Mini 100, le BIOS ne reconnaît que les cartes Broadcom à base de BCM4312, une puce compatible 802.11a, 11b et 11g. Soit vous avez de la chance et la carte est déjà reconnue par la machine — ce qui est possible —, soit il faut la flasher. Pour la manipulation dans le HP, la carte n’était pas reconnue, mais quand nous avons commandé une carte pour un MacBook, la carte était de marque HP.
Pour flasher, il va falloir changer le Vendor ID et le Product ID de la carte. Le Vendor ID est un code hexadécimal qui permet de déterminer le fabricant de la carte, alors que le Product ID est le code hexadécimal qui permet de définir le modèle exact de la carte.
Pour le HP Mini 100, il faut utiliser les couples suivant : 0x103c/0x1507, 0x103c/0x1508 ou 0x14e4/0x4315. Ils correspondent tous à une carte Broadcom à base de BCM4312.
Chez Apple
Notre manipulation avec un MacBook avait pour but d’apporter la compatibilité AirDrop à la machine, une fonction qui n’est accessible qu’avec des cartes Wi-Fi récentes alors que notre machine de test date de 2006. Il est possible d’utiliser différentes cartes, mais nous avons jeté notre dévolu sur un modèle à base de BCM4322.
Comme chez HP, il va falloir modifier la carte pour qu’elle soit reconnue comme une carte « Apple AirPort Extreme ». Les codes Vendor ID et Product ID sont les suivants.
BCM4311 : 0x106b/0x0097.
BCM4321 : 0x106b/0x008c.
BCM4322 : 0x106b/0x0093.
BCM4328 : 0x106b/0x008b.
Passons au flashage. Bien évidemment, on suppose que vous êtes capables de démonter l’ordinateur portable et d’accéder à la carte Wi-Fi, ce qui est assez trivial dans nombre de machines, la carte étant sous une trappe.
L’achat
Pour la carte, il suffit de faire une recherche eBay sur le nom de la carte (par exemple BCM4322) et d’acquérir une carte compatible physiquement avec l’ordinateur. Attention, le format a de l’importance : si les ordinateurs récents travaillent en Mini Card (PCI-Express), certains modèles n’acceptent que les cartes « half size », moins hautes. Et s’il est possible de monter une carte « half size » dans un emplacement « full size », un adaptateur est souvent nécessaire. Dans la pratique, le mieux est d’acheter une carte du même format que le modèle original.
Le matériel
Pour flasher, vous aurez besoin d’un peu de matériel.
Premièrement, un ordinateur portable où il est possible d’installer Linux, les Live CD n’étant pas nécessairement utilisables. L’ordinateur en question doit avoir une interface réseau fonctionnelle, filaire ou sans fil. Dans notre cas, la machine de test avait deux connecteurs Mini Card (et donc deux cartes Wi-Fi) et nous sommes restés en Wi-Fi sur la première carte, mais il est préférable de disposer d’une connexion Ethernet : la carte à flasher n’est évidemment pas utilisable.
Deuxièmement, il faut une distribution Linux, dans notre cas Ubuntu 11.04. S’il est théoriquement possible de travailler avec un Live CD ou une distribution sur clé USB, nous avons dû installer directement la distribution : le noyau 2.6.38 du Live CD ne supportait pas la carte BCM4322, un noyau 2.6.39 étant le minimum. Pour le test, nous avons donc utilisé le noyau 3 directement.
Une fois que le matériel est prêt, la carte installée et Ubuntu fonctionnel, avec un accès à Internet qui fonctionne — dans notre cas, ça a fonctionné directement — passons en ligne de commande.
Le flash
Première chose, dans le Terminal d’Ubuntu, une commande à taper pour vérifier que la carte est reconnue matériellement. Le tutorial est une adaptation de celui de Prasys, avec quelques corrections.
lspci
Si ça fonctionne, une ligne indiquant « Network Controler : Broadcom Corporation BCM43… » doit apparaître dans le listing.
Il faut ensuite installer quelques outils qui vont permettre d’installer les logiciels adaptés au flashage.
sudo apt-get install build-essential
sudo apt-get install curl
sudo apt-get install git-core
Une fois que c’est fait, on va installer les pilotes « b43 », des pilotes libres pour les cartes Broadcom.
La première ligne est obligatoire, la seconde n’est nécessaire qu’avec Ubuntu 11.04, la dernière est obligatoire.
sudo apt-get install b43-fwcutter
sudo apt-get install firmware-b43-installer (obligatoire avec Unbuntu 11.04)
sudo modprobe b43
Ensuite, on va installer un programme permettant de modifier le firmware des cartes Broadcom et qui nécessite les pilotes b43 installés précédemment.
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
Maintenant, on va vérifier si ça fonctionne. Dans notre premier essai, nous avons eu un problème à ce moment : la carte n’était supportée qu’en noyau 2.6.39 et nous étions en 2.6.38.
SSB_SPROM=$(find /sys/devices -name ssb_sprom)
echo $SSB_SPROM
Si une valeur du type « /sys/device/pci/ des nombres /ssb_sprom » est renvoyée, c’est bon. Si la commande ne renvoie rien, il y a un problème.
Maintenant, on va sauver le firmware de la carte sur le disque dur.
sudo cat $SSB_SPROM > ssb_sprom_copy
La commande suivante va modifier la carte. Nous allons modifier la valeur Product id (subp), Vendor id (subv), ccode (le pays) et regrev (la validation, comme pour la FCC). Dans notre cas, nous avons validé la carte pour la France et validée en Europe.
sudo ssb-sprom -i ssb_sprom_copy –-subv 0×106b –-subp 0×0093 –ccode FR –regrev 0×0002 -o new_ssb_sprom_copy
Les valeurs subv et subp sont à adapter en fonction de la carte, des valeurs « exemples » sont proposées dans la page précédente. Il s’agit ici des valeurs pour une BCM4322 dans un MacBook.
La commande suivante permet de vérifier que les valeurs ont été changées : on doit retrouver dans le listing en sortie les valeurs qu’on a ajoutées.
sudo ssb-sprom -i new_ssb_sprom_copy -P
Si tout est valable, on peut maintenant flasher la carte, la dernière étape. Pensez à brancher le portable à une prise, flasher le firmware peut prendre quelques minutes.
sudo cp new_ssb_sprom_copy $SSB_SPROM
Si tout se passe bien, la carte devrait maintenant être reconnue comme une carte d’origine Apple. Nous avons placé la carte dans le MacBook et tout a bien fonctionné, on espère que pour vous aussi…
Conclusion
Si la manipulation n’est pas triviale et demande un peu de temps, elle permet de pallier certaines limitations, qu’elles soient techniques ou marketing, et de réparer du matériel défectueux sans passer par le constructeur, qui a souvent une marge élevée sur les composants.
Ce n’est pas une solution miracle et il y a quelques contraintes, mais ça fonctionne dans l’ensemble, donc pourquoi s’en priver ?
Si vous effectuez la manipulation, ne vous privez pas de venir indiquer le modèle d’ordinateur et le modèle de carte que vous avez utilisé dans les commentaires du dossier.