Pour forcer ses utilisateurs à racheter un PC portable, Lenovo a introduit en 2012 une fonction de *whitelist wifi* (liste blanche des cartes wifi). Lorsque l'ordinateur démarre, il fait une série de tests, dont celui de vérifier que la carte wifi est présente sur une liste pré-établie. Autrement, le BIOS se bloque sur une erreur :
1802: Unauthorized network card is plugged in – Power off and remove the card
À cause de coupures de wifi lorsqu'utilisé en même temps qu'un casque Bluetooth, j'ai voulu changer la carte réseau de mon ThinkPad T540p pour une Intel AX200NGW. Je me suis basé sur cet article de Wolgang. Comme lui, je n'offre aucune garantie de résultat, suivez ma procédure à vos risques et périls. La machine est un **Lenovo ThinkPad T540p** avec un BIOS à la version **2.39** (juin 2021).
Préparatifs
Ce qu'il nous faut :
Un second PC (si possible sous Linux) ;
Un programmateur externe USB CH341a avec une pince à 8 pins (j'ai acheté celui-ci).
Assembler le programmateur
Il suffit d'alignez le fil rouge de la pince avec le numéro « 1 » de l'adaptateur, lever le levier du programmateur, brancher l'adaptateur et baisser le levier.
! **Attention : lorsque l'on se sert du programmateur, toujours veiller à brancher la pince *avant* d'insérer dans le port USB, au risque d'endommager la puce.**
Installer les logiciels
Sur le second ordinateur :
`sudo apt install flashrom`
Télécharger la dernière version de UEFIPatch, placer l'exécutable dans un dossier et supprimer les fichiers .txt qui l'accompagnent.
Télécharger le fichier xx40_xx50_patches_v7.txt et le placer à côté de UEFIPatch (au cas où ce fichier disparaitrait, j'en fournis une version en fin d'article).
Cloner ou télécharger le dépôt de thinkpad-uefi-sign, placer le dossier à côté de UEFIPatch.
Vérifier que l'on a bien python3 d'installé et installer pycryptodome : `pip3 pycryptodome`
Faire un dump du BIOS
C'est la partie la plus ~~casse-burnes~~ longue. Lenovo a innové par rapport au T440 : la puce contenant le BIOS n'est plus aussi aisément accessible. Il faut démonter **tout** l'ordinateur, en veillant à débrancher la batterie. La puce se trouve en haut à gauche, sur la partie de la carte-mère en contact avec la plaque d'acier (qui se trouve sous le clavier). Elle est à côté du port pour carte SIM. Il y en a deux, notés sur la carte-mère SPI1 et SPI2. Celle qui nous intéresse est la SPI2, sur laquelle est noté : `MXIC MX25L3273E`.
Il y a une petite fossette ronde dans le coin bas gauche de cette puce. Il faut aligner le fil rouge du programmateur sur cette fossette, et cliper la pince sur la puce. Bien vérifier le positionnement de la pince. Insérer ensuite le programmateur dans un port USB du second ordinateur. Le dump se fait avec cette commande :
En faire plusieurs copies (j'en ai fait 3), et les vérifier avec diff : `diff bios1.img bios2.img`. Si diff ne retourne rien, c'est bon, on peut supprimer les autres copies. **Débrancher le programmateur du port USB pour éviter une erreur de manipulation.**
Patcher le BIOS
Ici, c'est très simple : on applique tout le fichier `xx40_xx50_patches_v7.txt` (le T540p repose sur les patchs du W541 et du T440p, donc il nous faut tout).
Si on flash le BIOS maintenant, le PC se mettra à biper 10 fois à chaque démarrage. Il faut le signer :
On vérifie la signature (« Signatures correct ») :
Flasher le BIOS
Reconnecter le programmateur en USB. **Bien vérifier que la pince est toujours en place avant.** Il n'y a plus qu'à lancer la commande :
Attendre que la commande se termine, **débrancher le port USB**, puis la pince. Remonter le PC, ajouter la nouvelle carte wifi. Et voilà, le ThinkPad est libre !