J'ai eu entre les mains un pc portable Dell Inspiron 3521 qui refusait de démarrer.
J'ai tout tenté, et puis j'ai trouvé la solution. Récit d'une réparation positive.
Symptômes
Quand j'appuie sur le bouton de mise en route l'écran reste noir, puis un bip court retentit toutes les 2,5 secondes.
Le bios n'apparaît pas, pas d'erreur non plus, bref l'écran ne s'allume pas. J'ai simplement le lecteur CD qui fait son bruit classique car il est alimenté.
Bon, je me dis que la CM est sûrement morte, mais peut-être que ce bip indique que tout n'est pas perdu. Une carte mère HS donne souvent aucune phase de boot, ni buit, juste un ventilo qui tourne à fond. Ce qui n'est pas le cas ici.
Diagnostic
Première chose à faire : retirer un maximum de périphériques pour vérifier si l'un d'entre-eux empêche le démarrage. Lecteur CD, disque dur, 1 barrette de mémoire si vous en avez 2 (essayer l'une puis l'autre).
J'ai voulu tester l'écran : maintenir la touche D et démarrez le PC. Et là j'avais bien les tests de couleurs qui fonctionnaient. Je ne le savais pas comment mais si j'avais démarré sans maintenir D le pc aurait probablement démarré. Il se trouve que le PC doit démarrer une fois sur 20... Mais je ne le savais pas encore.
J'ai donc enlevé une barrette de RAM, et là bingo le PC démarre. Je me dis facile, ça fait des années que les barrettes sont ultra fiables, mais bon pourquoi pas... Pour savoir si ça vient du slot je mets la barrette qui marche dans le second slot. Et là : bip... je me dis alors que le slot a peut-être cramé la barrette, et que je viens de flinguer celle qui marchait...
Mais non, j'arrive de nouveau à faire démarrer le PC à force d'essayer.
La (fausse) piste de la pile CMOS CR2032
Je retire la pile CR2032 du BIOS, heureusement accessible sans démontage complet. Et là j'ai 5 bips, donc le problème ne vient pas de là. Malheureusement le cache plastique un peu vieux se brise, donc je mets de la colle à chaud temporairement.
Mais la colle ne semble pas fonctionner comme attendu, parfois j'ai encore ces 5 bips. Donc je dois maintenir la pile avec mon doigt pour bien faire contact. Et c'est à c'est moment là que je me suis rendu compte que le PC avait tendance à démarrer quand j'avais le doigt sur la pile... étrange non ? la pile est bonne, elle donne 3 volts au multimètre.
Je continue mes essais et je me rends compte que finalement ce n'est probablement pas lié à la pile... mais plus à la fermeture puis ouverture du capot. Dans le doute je maintiens aussi le doigt sur la pile ^^ j'arrive à faire démarrer le PC une fois sur 10 environ, c'est mieux.
La piste du bios
Je ne comprends toujours pas la cause de la panne, et ça m'énerve. Comme le PC démarre une fois sur 10 je me dis que je devrais déjà commencer par mettre à jour le BIOS de A14 vers A16.
Mais... la batterie est HS donc l'assistant refuse de mettre à jour ce foutu BIOS. Et j'ai beau tester tous les switchs trouvés sur le net :
3521A16.exe /forceit 3521A16.exe /writehdr 3521A16.exe /writeromfile
La seule chose que j'arrivais à faire c'est utiliser une vieille version de BIOS qui supportait la lecture du platform.ini. Mais je me prends un beau message qui dit que ça ne peut pas aller plus loin. Probablement parce que le "vieux" InsydeFlash ne supporte pas le format du bios plus récent.
Du coup, j'ai voulu récupérer le bios "isflash.bin" pour le flasher sous freedos. Pour ça il faut utiliser universal extractor (7zip retourne une erreur) ou bien le récupérer dans %temp% quand l'erreur de batterie apparaît.
Mais l'utilitaire insydeflash.exe ne fonctionne que sous Windows et pas sous dos/freedos (ni celui de Dell 3521A16.exe). Damned!
Bon, comme le PC ne redémarrait jamais 2 fois de suite, je ne suis même pas sûr que le flash aurait fonctionné, même si j'avais acheté une batterie.
Démonter le PC
Du coup je me dis que mort pour mort... autant tenter de reprogrammer la puce du bios directement, électroniquement. Cette vidéo m'a d'ailleurs conforté dans l'idée :
J'ai donc suivi une vidéo pour démonter le PC sans difficulté particulière si ce n'est de la minutie et de la patience :
Conseils pour démonter :
- prenez régulièrement des photos
- notez l'emplacement des vis sur une feuille de papier (ou mieux dans une boite)
Et voilà la fameuse puce de bios Winbond W25Q32FVSSIQ (p.95 pour les différences de puce).
J'ai essayé de lire la puce en circuit avec la pince adaptée, et je n'ai jamais réussi. J'ignore si c'est à cause des contacts approximatifs ou des composants autour qui perturbent la communication.
https://twitter.com/xhark/status/1177109524823588865
Dessouder la puce
Impossible de l'extraire au fer à souder, à moins d'avoir 2 fers et d'être particulièrement rodé. Donc dessoudage à l'air chaud après protection avec du kapton sur les autres composants voisins pour ne faire fondre que l'étain de la puce du bios :
https://twitter.com/xhark/status/1176980979803656192
Et voilà la puce extraite.
Lire la puce et la sauvegarder
J'ai utilisé un lecteur USB TL866A pour lire la puce avec Windows, grâce à un petit adaptateur (soic8 dip8) qui vient appuyer sur les pattes de la puce winbond. Je l'avais acheté il y a plusieurs années en me disant que ça me pourrait me sauver la mise sur un bios de pc fixe car il sont plus gros et extractibles, et finalement c'est sur un pc portable que je m'en sers pour la première fois 🙂
https://twitter.com/xhark/status/1176977759991734273
Première étape, lire le contenu de la puce et faire une sauvegarde dans un fichier bios-original.bin (peut importe l'extension, *.rom sinon) :
https://twitter.com/xhark/status/1176977936337035264
J'ai utilisé UEFITool (UEFITool_NE_xyy_win32.zip) pour voir si le dump était cohérent mais j'ai eu une erreur : "image is truncated", j'ignore pourquoi car j'ai refais le dump à 2 reprises. J'ai ouvert le fichier avec HxD pour comparer le format et c'est à ce moment là que j'ai compris que isflash.bin n'était pas dans le format binaire comme mon dump. L'utilitaire de flash Insyde H2O décompacte isflash.bin à la volée d'un format "MZ" propriétaire pour le transformer en fichier binaire pur et dur (lien utile). Ce format MZ contient le binaire que l'on cherche mais également d'autres choses inutiles qui ne font pas parties du bios.
Mise à jour 11/2022 : UEFITool sait maintenant ouvrir les images packagées et il se peut que n'ayez pas ce message d'erreur (voir plus loin pour distinguer les 2).
Extraire le bios du fichier "isflash.bin"
Pour extraire le bios vous avez 2 options :
- InsydeImageExtractor (windows/mac)
- un script python (installez python depuis le microsoft store)
Personnellement j'ai utilisé la méthode 1 sous Windows avec succès :
extractor.exe isflash.bin outfile.bin File outfile.bin successfully extracted
Le script python fait la même chose sauf qu'il ajoute une ligne "600000" inutile à la fin composée de "00". Je n'ai pas testé de flasher avec cette ligne en plus, mais il est possible que ça marche aussi. Dans le doute, virez cette ligne pour vous éviter des problèmes (et vérifiez avec notepad++ que le dernier caractère est "ôÿ").
Une fois le fichier converti au format outfile.bin sachez qu'il est possible de l'ouvrir avec 7zip (sans erreur) et également UEFITool :
Notez que le fichier est détecté comme "Intel Image" et non "UEFI Image" comme c'est le cas si j'ouvre isflash.bin (qui n'est pas au bon format, même si UEFITool sait le lire depuis quelques versions). Cela permet de distinguer quel fichier correspond à quel format.
Ensuite il reste à écrire ce fichier bios dans la puce winbond :
https://twitter.com/xhark/status/1176980501216804864
Reste à mettre de l'étain sur le PCB et ressouder la puce sur place, sans oublier de mettre un paquet de flux pour éviter que la soudure n'accroche sur 2 pattes en même temps.
Test final
Je remets la carte mère en place, avec juste ce qu'il faut pour voir si ça boot (écran, clavier, ram, hdd).
J'allume, sans grande confiance, et pourtant :
https://twitter.com/xhark/status/1177109981075841025
ça marcheeeeeeeeee 🙂 ! Nous sommes bien en bios A16 au lieu de A14, ce qui témoigne que le flash du bios a fonctionné. Plus de bip au démarrage, tout roule. J'ai simplement un "check media fail" car le bios essaie de démarrer sur la stack réseau (ipv6 et ipv4), il suffit de modifier l'ordre de boot UEFI pour ne plus voir le message.
Conclusion
Je voulais vous faire ce petit retour d'expérience, parce qu'avant de commencer tout ça j'étais sceptique sur la réparation. Et c'est vrai que c'est souvent décourageant, mais dans ce cas précis le PC était juste en panne à cause d'une puce qui coûte probablement 1€...
D'ailleurs sur eBay il est possible d'acheter cette puce déjà programmée, en demandant de la flasher avec votre bios, ça peut dépanner.
Bref, un happy ending, ça fait du bien car c'est loin d'être systématique dans le domaine de la réparation 💪 Après le flash du bios à l'aveugle avec une disquette (BM n'existait pas) cette réparation aura sa place dans les réparations mythiques ^^
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
11 commentaires
Trop fort 👍 belle leçon de persévérance, pour ma part, il y a longtemps que le portable serait parti à la benne...
Visiblement, le composant n'était pas en cause puisque la flash SPI reprogrammée est celle d'origine!
C'est donc plutôt un problème de corruption du BIOS, le plus probablement par lui-même vu que a chaque démarrage des écritures y sont faites. Même pas forcément par le BIOS lui-même, mais les firmwares qu'il embarque et en premier lieu le ME/SPS (Management Engine).
Il faut juste espérer que le bug ait été corrigé dans la nouvelle version, ou ne pas retomber dedans (arrêt pile au mauvais moment)...
Il faut savoir qu'Intel offre un mécanisme de double BIOS (CI=Current Image upgradable ; KGI=Known Good Image de secours, non ugradable, au cas ou CI ne boot pas) mais que, particulièrement sur les laptops, il n'est bien souvent pas utilisé.
Raison: Les emmerdes les plus probables c'est une coupure d'alim en plein upgrade BIOS. Et comme les laptops ont une batterie, imposer de l'avoir pleine et d'être connecté au secteur est jugé suffisant.
Au final, des économies: Pas tant la flash SPI de démarrage, qui ne coute pas grand chose, que payer une image BIOS supplémentaire à Insyde/AMI/Phoenix... En effet, le fabricant paye pour chaque MoBo le nombre d'images qu'il embarque!
Sauf que les bugs BIOS il y en a et qu'une KGI permet aussi de reflasher une CI crouillée le cas échéant !
L'UEFI, par sa complexité (et son mauvais design), n'a pas amélioré les choses: Comparer le nombre de lignes de source de l'implémentation de référence d'intel (EDK2) et du kernel Linux. On est sur le même ordre de grandeur pour une fraction de la fonctionnalité.
Tout cela pour embarquer les phases démarrage (SEC/PEI, incluant secure boot, autre complexité dont je parle plus loin) un driver model DXE (les drivers "complexes" type adaptateur réseau sont souvent à part et fourni sous forme binaire), l'énumération PCI (qui pourrait être faite plus tard, comme Linux sur toute archi hors x86, mais windows aime se faire mâcher le boulot), une stack réseau simplifiée (UDP seul pour le TFTP/PXE du boot réseau) et un antique file-system FAT, pas bien lourd, pour lire le loader windows (ou grub) dans la partition EFI ainsi formatée.
Dire que certains veulent mettre cela sur ARM. Bon, en fait, c'est toujours Microsoft qui pousse, persistant dans ses windows sur ARM et n'a jamais su se passer d'un boot loader offrant des services à l'OS derrière (les "interruptions BIOS" d'antan, nids à virus de boot du fait de leur existence même et d'y intérêt à s'y loger de manière bien persistante, sont devenus les "runtime services" EFI... qui pour éviter de retomber dans les problèmes précédents ont nécessité la complexité autrement évitable, au moins à ce niveau, du secure boot).
Sympa, le résultat, quand on mets Microsoft et Intel ensemble! Ca fait des jolis articles de blog!
@myl: Un grand merci pour tes explications et précisions, finalement c'est toujours pareil, économies de bouts de ficelles !
Un grand merci pour cet article qui m'a permis, à mon tour, de faire revivre un 3521 (la puce était très légèrement différente mais ça n'a joué en rien sur la méthodologie) !
Et je confirme : la pince ne fonctionne pas. Il faut dessouder la puce (chip) sinon impossible de la faire reconnaître par XGpro (fourni avec le lecteur Minipro).
Et maintenant, plus de "bip" étrange au démarrage du PC et il démarre 100% du temps (contre 1 fois sur 50 avant le flashage). Pourvu que ça dure ! 🙂
@KoD87: excellente nouvelle, bravo !
Bonjour, et félicitation ! Mon Dell était depuis longtemps dans un placard pour la même raison. N'étant pas équipée pour faire les soudures et la programmation, je cherche à acheter un BIOS déjà programmé. Auriez-vous un lien à me communiquer (celui sur ebay ne fonctionne plus).
Merci !
@Eva: Bonjour Eva, merci! est-ce que votre PC s'allume et si oui au bout de combien de tentatives et quel est le modèle exact ?
Pour la soudure du BIOS il vous faudra également trouver quelqu'un capable de réaliser l'opération (sinon en repair café). Le démontage n'est pas forcément évident lorsque l'on ne connait pas ce domaine, je préfère vous prévenir.
Si vous démontez votre PC regardez la référence de la puce de votre BIOS, il en existe plusieurs.
@Mr Xhark: C'est un Inspiron 3721. Je l'ai entièrement démonté grâce à des vidéos que j'ai trouvé sur Youtube et j'ai commandé les puces sur Ebay (il y en a 2 à changer pour ce modèle, en UH6 et UH2. J'ai trouvé quelqu'un qui m'a fait les soudures, et devinez quoi ? ça MARCHE !!! Je suis super contente ! Encore un grand MERCI !
@Eva: Merci pour votre retour, ça fait plaisir de sauver une machine de la déchetterie 👍😉
Bonjour,
Comme vous, j'ai des pbs d'erreur aléatoires au démarrage ( ecran noir mais bip différents selon différents tests).
A un moment de coup de bol, le pc a démarré et j'ai re flashé le bios en A16. Cependant cela n'a malheureusement pas marché au redémarrage suivant....
J'aimerai procédé au changement de la puce en recevant directement celle-ci directement flashé comme il se doit.Mon pc est un dell inspiron 3521 (Carte mère LA9101P). j'ai noté WINBOND W25Q32BV plus haut mais je ne sais pas s'il y a en a des plus fiables ou autres. merci d'avance pour vos aides et vos liens.
@Louis: Bonjour, il est important de mettre la même référence de puce que celle d'origine. Si cela ne règle pas votre problème il est peut-être ailleurs (carte mère, etc), c'est déjà bien d'avoir tenté !