====== Réparer un disque dur HS ====== {{ informatique:hard-drive-repair-playmobile.jpg?300|}} Vous êtes sur le point de jeter votre disque dur qui ne veut plus fonctionner : * Windows ne veut pas voir le disque dur * Le BIOS ne détecte pas le disque dur Les arrêts/démarrages de l'ordinateur ne change rien au problème : le disque dur est perdu, **invisible** ! Pourtant, vous l'entendez, le moteur fonctionne, les têtes cliquettent au démarrage... tout vous semble correctement fonctionner. Si vous possédez un Maxtor ou un Seagate, vous avez sûrement essayé les outils : * [[http://www.seagate.com/fr/fr/support/downloads/seatools/seatools-win-master/|SeaTools pour Windows]] * [[http://www.seagate.com/fr/fr/support/downloads/seatools/seatools-dos-master/|SeaTools pour DOS]] - le DOS est intégré dans l'image bootable. Mais rien y fait, même l'utilitaire SeaTools ne voit rien. Et pourtant vous avez bien pensé à basculer de AHCI à IDE dans le gestion des disques du BIOS. Il reste encore un moyen. Vous êtes surement tombé sur le bug du BSY State. Concrètement, il s'agit d'un mode dans lequel le micrologiciel (firmware) du disque dur n'arrive plus à se sortir. Ce **bug empêche** le BIOS de détecter le disque dur, et donc, empêche tous les accès de l'ordinateur, y compris Windows, Linux... Pour que le micrologiciel puisse se sortir de la boucle infernale du **BSY State**, il va falloir modifier les informations S.M.A.R.T.. Ces informations sont écrites dans les premiers secteurs du disque dur. Avec un Maxtor STM3500320AS, je viens d'avoir tous ces symptômes : * **disque non reconnu dans le BIOS** * **disque non détecté avec une interface USB** * **pas de bruit suspect à l'arrêt et au démarrage du disque** La méthode que je vais vous détailler et non destructive si vous suivez toutes les instructions, sans mauvaise manipulation. ===== Prérequis ===== Le disque dur possède trois interfaces : * une interface pour une alimentation SATA * une interface pour des transfert des données SATA * une interface série/limiteur de taux de transfert Il va falloir accéder au micrologiciel du disque dur par le port série. Si vous n'avez pas de port série sur l'ordinateur, il va falloir trouver un adaptateur USB/Série appelé également USB/TTL. Pour ma part j'ai utilisé un Arduino Uno qui intègre un convertisseur USB/TTL avec une puce Atmega16U2. La puce 16U2 est programmée avec des pilotes standards COM USB, et il n'est pas nécessaire d'installé un pilote PC pour y accéder. Le bornier série du disque dur est assez étroit et il a fallu que j'adapte des connecteurs pour qu'il y ait un contact propre et sans risque de court-circuit. Pour éviter les courts-circuits j'ai ajouté de la gaîne thermorétractable. Étant donné que le disque dur est sorti de son logement standard, je n'ai plus d'alimentation électrique pour permettre de le faire fonctionner. J'ai utiliser une alimentation fournie avec un kit de connexion de disque dur **USB 2.0 to SATA/IDE**. Je récapitule le matériel nécessaire : * 3 câbles de connexion - entre le convertisseur USB/TTL et le disque dur * convertisseur USB/TTL - Arduino pour moi * alimentation électrique SATA * tourne vis TORX T5 * feuille épaisse ===== Préparation ===== Je vais utiliser **Putty**, comme logiciel de communication série qui a l'avantage d'être disponible sous Windows et Linux. Putty Je prépare l'Arduino pour que les PIN0 et PIN1 deviennent une image parfaite du port USB. La manipulation est toute simple et ne demande aucune programmation dans l'Arduino. Relier le port RESET à la masse (GND) de l'Arduino. Ensuite, il suffit de raccorder le convertisseur au disque dur et le convertisseur à l'ordinateur. Sur l'Arduino : * la broche 0 correspond au **RX** et * la broche 1 au **TX**. Sur le disque dur, PCB vu du dessus, * la broche 2 correspond à la masse, * la broche 3 au **RX** et * la broche 5 au **TX** Relier les 3 fils (masse, TX et RX) entre l'Arduino et le disque dur. ===== Vérification ===== Après avoir connecté le câble USB, l'Arduino se met en route et est tout de suite reconnu par le système. Sous Linux, vous pouvez vérifier qu'un port **tty** a bien été ajouté en tapant la commande : ll /dev/servial/by-id voici le réponse : total 0 lrwxrwxrwx 1 root root 13 15 août 21:13 usb-Arduino_Srl_Arduino_Uno_7543536303835131A090-if00 -> ../../ttyACM0 lrwxrwxrwx 1 root root 13 15 août 20:15 usb-Sierra_Wireless__Incorporated_Dell_Wireless_5570_HSPA+__42Mbps__Mobile_Broadband_Card-if00-port0 -> ../../ttyUSB2 lrwxrwxrwx 1 root root 13 15 août 20:15 usb-Sierra_Wireless__Incorporated_Dell_Wireless_5570_HSPA+__42Mbps__Mobile_Broadband_Card-if02-port0 -> ../../ttyUSB0 lrwxrwxrwx 1 root root 13 15 août 20:15 usb-Sierra_Wireless__Incorporated_Dell_Wireless_5570_HSPA+__42Mbps__Mobile_Broadband_Card-if03-port0 -> ../../ttyUSB1 La ligne qui nous intéresse contient la phrase ''usb-Arduino_Srl_Arduino_Uno'', et le résultat qu'il faut retenir est ''ttyACM0''. Cette indication va nous permettre d'indiquer à Putty sur quel canal dialoguer. Configurer Putty pour communiquer sur le port **/dev/ttyACM0**, avec une vitesse de **38400** {{ informatique:putty_serial_maxtor.png?600 |}} Ouvrir un session Putty sur le port série. Ensuite, alimenter le disque dur et au bouts de quelques secondes, le résultat suivant apparait : LED:000000CC FAddr:0025BF67 Ce code indique bien que le disque dur est dans un état BSY (Busy). ===== Réparer ===== La réparation va se dérouler en 3 temps : * isoler le micrologiciel des données SMART * détruire la partition contenant les données SMART * recréer la partition des données SMART 1. Hors alimentation, convertisseur déconnecté de l'ordinateur, démonter le PCB et insérer entre le PCB et les connecteurs des têtes la feuille d'isolation. Celle-ci doit pouvoir être retirée lorsque le PCB sera de nouveau en place. Revisser uniquement les deux vis de droite afin de ne pas bloquer la feuille entre le PCB et le connecteur. Lancer le session Serial de Putty et connecter le convertisseur à l'ordinateur, alimenter le PCB du disque dur. Au bout quelques secondes, appuyez sur ''Ctrl+z'' Réponse : F3 T> Accéder au level 2 en tapant ''/2'' Le moteur du disque dur s'arrête et réponse : F3 2> Attendez au moins 20 secondes pour que le disque dur s'arrête. Normalement, il s’arrête au bout de 10 secondes, mais il vaut mieux être prudent. Nous allons informer le micro logiciel d'un arrêt du moteur en tapant la commande ''Z'' Ayant isolé les têtes de lecture, le micrologiciel répond : Spin Down Complete Elapsed Time 0.147 msecs F3 2> Manipulation délicate, mais réalisable Enlever minutieusement le papierentre le PCB et le connecteur des têtes de lecture. Replacer les 3 vis en veillant à ne pas faire court circuit avec le PCB. 2. On demande au moteur de démarrer en tapant la commande ''U'' Le micrologiciel nous répond : Spin Up Complete Elapsed Time 7.093 secs F3 2> Maintenant, nous accédons au level 1 en tapant la commande ''/1'' Réponse : F3 1> Maintenant, il faut effacer les secteurs du SMART en tapant la commande ''N1'' Réponse : Réponse : F3 1> Vous pouvez arrêter l'alimentation SATA et attendre une vingtaine de seconde avant de mettre de nouveau l'alimentation électrique du SATA. 3. Appuyer de nouveau sur les touches ''Ctrl + z'' pour revenir en mode édition. Réponse ; F3 T> Il faut réécrire les informations SMART avec la commande ''m0,2,2,0,0,0,0,22''. Réponse : Max Wr Retries = 00, Max Rd Retries = 00, Max ECC T-Level = 14, Max Certify Rewrite Retries = 00C8 User Partition Format 10% complete, Zone 00, Pass 00, LBA 00004339, ErrCode 00000080, Elapsed Time 0 mins 05 secs User Partition Format Successful - Elapsed Time 0 mins 05 secs Attendez bien ce message pour pouvoir de nouveau arrêter l'alimentation. Vous pouvez dès à présent brancher votre disque dur à son emplacement prévu et vérifier que tout fonctionne bien. Après ces opérations, je vous invite fortement à effectuer une sauvegarde de vos documents et de jeter ce disque dur. ===== Quelques liens ===== * https://www.guillaume-leduc.fr/surveillez-la-sante-de-vos-disques-sous-linux-avec-smartmontools.html * https://fr.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology