Dónde está la avería
Lo primero que hice fue determinar si la causa del problema era la placa base o el disco duro. Afortunadamente, tengo varios ordenadores y simplemente pinché el disco en otro, para comprobar que la BIOS tampoco era capaz de reconocer el disco. Evidentemente, el problema está en el disco.
La última copia de seguridad realizada apenas tenía dos o tres días, pero se encontraba en otra partición del mismo disco; la última copia realizada en otro disco tenía tres semanas de antigüedad (mucho tiempo, si te dedicas a desarrollar software).
Decidí buscar una solución antes de comprar otro disco y recuperarme del problema con una copia de seguridad tan antigua.
Googleando...
Comencé por intentar averiguar si otros usuarios habían tenido el mismo problema, para intentar encontrar una solución más cómoda que recuperarme usando la vetusta copia de seguridad.
Como anteriormente ya he tenido malas experiencias con Seagate, se me ocurrió buscar por "seagate no reconoce", y hubo suerte.
El segundo resultado de la lista fue muy revelador:
Cuidado con los HD SEAGATE 500MB, 1TB, 1.5TB de 2008...
(elotrolado.net)
Leyendo el hilo, encontré que Seagate ha fabricado una serie defectuosa de discos SATA, y que se puede descargar una versión del firmware desde su página web, para evitar que se produzca la avería.
No obstante, esta solución requiere que el disco todavía esté funcionando.
Por lo que pude averiguar leyendo el hilo, y buscando un poco más por la red, cuando el disco ya está averiado, se puede intentar recuperarlo usando un puerto serie, compatible con el protocolo RS232, que el disco incorpora para el servicio de mantenimiento.
Conectar usando RS232
Encontré varios artículos que detallan paso a paso cómo conectar el disco duro por el puerto serie, y el proceso a seguir para recuperarse del error BSY de Seagate.
En todos los artículos que encontré era necesario un cable especial para comunicarse con el disco duro, no a través de la interfaz SATA de trabajo, sino a través del puerto serie de servicio.
Algunos usaron un cable de datos del teléfono Nokia que incorpora un modem (modelo CA-42), otros usaban un circuito integrado especial para adaptar las señales de un puerto serie al otro: MAX232.
Una vez conectados disco y ordenador con el cable serie, la comunicación se realiza con la utilidad Hyperterminal que incorpora Windows XP, o cualquier otra utilidad de terminal, si usas Linux. Se introducen unas órdenes a través del terminal, y el disco se puede recuperar, sin pérdida de datos.
Conseguir el cable
Como no me resultó posible encontrar el dichoso cable de Nokia en ninguna tienda de teléfonos de Ibiza, y tampoco hay grandes tiendas de electrónica donde comprar el circuito integrado, tuve que fabricar el cable con medios más primitivos: un par de transistores, un diodo y cuatro resistencias para adecuar el nivel de tensión de la interfaz RS232 al nivel de tensión de la interfaz TTL del disco duro.
En una web de electrónica y microcontroladores (tecnotopia.com), encontré este esquema:
Conversor de señales RS232 a TTL
Básicamente, la función que debe realizar el circuito es reducir la tensión de las señales de la interfaz RS232 (12-15V) a los niveles de operación de la interfaz TTL (5V) del disco duro, y esto se consigue con unos cuantos componentes electrónicos fáciles de encontrar, y una fuente externa de tensión regulada.
Buscando las características del transistor BC547, comprobé que su frecuencia de conmutación máxima es de 300Mhz, muy por encima de lo necesario para nuestros propósitos, así que el montaje tenía posibilidades de funcionar.
Compré todo lo necesario en una tienda de electrónica, aproximadamente por 5€, y fabriqué el cable serie más extraño de todos los que he construído hasta la fecha.
Preparar el disco
Como tengo varios ordenadores, usé uno para proporcionar tensión a todo el montaje, y otro para acceder al disco usando el programa Hyperterminal.
Para empezar, hubo que desatornillar la controladora que está fijada al bloque, usando un destornillador con punta TORX, que se puede comprar también en una tienda de electrónica.
Observamos que hay dos juegos de contactos que comunican la placa con el disco; uno de ellos acciona el motor, y el otro sirve para intercambiar los datos.
Colocamos una tarjeta para impedir el contacto de la controladora con la interfase de datos, y dejamos los tornillos próximos algo flojos para poder retirar la tarjeta con el disco en marcha, más tarde, durante el proceso. El resto de tornillos quedan suficientemente apretados para fijar la interfase del motor.
Retiramos el jumper que limita la velocidad de transferencia, si está presente, y conectamos con cuidado el cable RS232 al puerto de servicio, y el cable de alimentación al disco y al ordenador, dejando a un lado el habitual cable de datos SATA, sin conectar.
Comunicar con el terminal
Una vez que todo está conectado alrededor del disco, conectamos el extremo con el conector DB9 al puerto serie del ordenador que usaremos para comunicar con el disco.
En mi caso, la BIOS decide cuál es el número de puerto COM que se asigna al conector serie, así que durante el proceso de arranque, comprobé que estaba configurado el COM1.
Una vez en marcha, iniciamos el Hyperterminal, y establecemos las opciones de conexión, para usar el puerto serie COM1, a una velocidad de 38400 baudios, con 8 bits de datos, sin paridad, con 1 bit de parada y sin ningún control de flujo.
Pulsamos el botón de encendido del otro ordenador, y escuchamos cómo intenta arrancar el disco averiado.
Entonces pulsamos la combinación de teclas <control> + z, y el disco responde en la pantalla del terminal con el indicativo:
F3 T>
Ahora tenemos comunicación con el disco.
Es muy importante no equivocarse al pulsar las teclas, porque las pulsaciones se envían directamente desde la terminal al disco: no se pueden corregir los errores de pulsación.
Manipular la controladora
Una vez que hemos comprobado que el cable funciona, estableciendo comunicación con el disco, podemos comenzar a introducir las órdenes que conseguirán recuperar el disco.
Para empezar, tecleamos /2, y pulsamos intro.
A continuación, el indicativo cambia a F3 2>, y entonces tecleamos Z y pulsamos intro de nuevo.
F3 T>/2 <intro>
F3 2>Z <intro>
LED:000000CE FAddr:0027CF31
LED:000000CE FAddr:0027CF31
...
Primer contratiempo
Debería aparecer un mesaje indicando que el motor del disco se ha detenido, pero no es lo que sucede, sino que aparece otro mensaje totalmente inesperado.
De nuevo, googleamos un poco y encontramos el remedio: vamos a empezar otra vez, y en lugar de teclear Z y pulsar intro, vamos a esperar unos segundos entre ambas pulsaciones.
Así pues, apagamos el disco; esperamos unos segundos, y volvemos a conectarlo. Entonces tecleamos <control> + z, y aparece el indicativo F3 T>; tecleamos /2; pulsamos intro y aparece el indicativo F3 2>; y ahora, tecleamos Z y esperamos unos segundos.
Observamos que el motor se para; entonces pulsamos intro, y aparece el mensaje que esperábamos:
F3 T>/2 <intro>
F3 2>Z esperamos; el motor se para, y pulsamos <intro>
Spin Down Complete
Elapsed Time 0.153 msecs
Continuamos recuperando el disco
Con el motor parado, y el disco conectado a la tensión de alimentación, retiramos la tarjeta para que la interfase de datos de la controladora entre en contacto con el bloque del disco.
Entonces, con mucho cuidado, volvemos a colocar el tornillo que falta y apretamos los demás para fijar bien la controladora y el bloque.
Borrar errores S.M.A.R.T.
Una vez retirada la tarjeta, y con la controladora bien atornillada al bloque del disco para asegurar un buen contacto eléctrico para la interfase de datos, proseguimos con la recuperación.
Nos dirigimos al terminal, tecleamos U y pulsamos intro; observamos que el motor del disco comienza de nuevo a girar.
Ahora vamos a borrar los errores S.M.A.R.T.
Tecleamos /1 y pulsamos intro para acceder al menú anterior; entonces tecleamos N1 y pulsamos intro, para realizar el borrado.
F3 2>U <intro> el motor comienza a girar...
Spin Up Complete
Elapsed Time 2.117 secs
F3 2>/1 <intro>
F3 1>N1 <intro>
F3 1>
Borrar la lista de defectos del disco
Ahora, con mucho cuidado de no teclear mal, introduciremos los comandos que borrarán la lista de defectos del disco. Este paso es opcional, pero si falla el proceso, hay que repetir todo incluyendo este paso.
Primero cambiamos al menú con /T y la tecla intro; entonces tecleamos i4,1,22 y pulsamos la tecla intro:
F3 1>/T <intro>
F3 T>i4,1,22 <intro>
F3 T>
Una vez que hemos borrado los errores, desconectamos con cuidado la corriente del disco; esperamos unos segundos (hasta que el disco deja de girar), y volvemos a conectarla.
Regenerar la partición
Sólo falta regenerar la partición que el firmware utiliza para gestionar el funcionamiento del disco; esto no afectará en nada a los datos del usuario, si todavía están ahí.
Antes de regenerar la partición, es necesario que hayamos desconectado el disco unos segundos de la tensión de alimentación, para reiniciar el disco sin errores.
Una vez que hemos conectado de nuevo la tensión, tecleamos <control> + z en el terminal para restablecer la conexión con el disco, y aparece el indicador F3 T> habitual.
Introducimos el comando m0,2,2,,,,,22 y pulsamos la tecla enter. Observamos actividad en el disco, y comienzan a transcurrir los segundos. Es importante no desconectar el disco en este momento.
En mi caso, tardó más de un minuto en completar la orden.
F3 1>/T <intro>
F3 T>m0,2,2,,,,,22 <intro>
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
F3 T>
Cuando veamos el mesaje que indica el éxito de la operación, podemos desconectar todo, y montar de nuevo el disco.
Si todo ha ido bien, volverá a funcionar con normalidad; si continua bloqueado y se omitió el borrado de defectos del disco, se puede volver a intentar incluyendo ese paso.
Una vez desbloqueada la unidad, es el momento de aplicar el nuevo firmware, para impedir que esto suceda de nuevo.
Conclusiones
Cuando sucede un fallo de este tipo, es fácil no estar preparado. Suelo confiar más en el buen funcionamiento de las unidades de disco duro, que en cintas, disquettes, cd's o dvd's.
En todos los años de profesión, he visto desastres con todos los medios que anteriormente he citado, y he aprendido que el dispositivo más seguro de todos es el disco duro.
Soy consciente que todos los dispositivos pueden fallar, y por eso suelo hacer copias de seguridad en varios discos, aunque en ocasiones también en el propio disco. Esto último no es muy recomendable, pero permite hacer una copia rápidamente, y más tarde hacer un volcado a otra unidad.
En cualquier caso, en 29 años de profesión, es el primer caso de estas características que se me presenta.
Para saber más sobre este tema: http://www.msfn.org/board/topic/128807-the-solution-for-seagate-720011-hdds/