Actualizar firmware de disco Seagate a la fuerza desde Linux

Actualizar firmware de disco Seagate a la fuerza desde Linux

Artículo aleatorio que espero que sea útil a alguien en el futuro.

Esta tarde ha vuelto a mis manos un disco duro Seagate de 1TB antiguo que me venía genial para mi servidor (ST31000528AS)

Antes de fiarme de él, vi su estado SMART usando smartmontools. Había un aviso de que podría existir firmware nuevo para el disco y un par de links a la web de Seagate.

smartctl -a /dev/sdc

En la web de Seagate se ofrece un EXE para Windows y una ISO iniciable en BIOS con *DOS. Antes de hacer nada, es 100% recomendable utilizar estos métodos para actualizar el firmware. La ISO funciona perfectamente, incluso en macs.

Es extremadamente importante actualizar el firmware de cosas así, los fabricantes no sacan firmware a no ser que su vida dependa de ello. Este disco en concreto es famoso por su poca fiabilidad.

Pero  ahora viene el problema, y el por qué de este post

Mi disco está sacado de un iMac allá por 2012. Lleva firmware customizado para Apple (AP25) en vez del firmware normal (CC49). El firmware de Apple reporta la temperatura del disco a través de los pines de detrás, emulando un termistor.

La cuestión es, el disco hacía excesivo ruido y francamente parecía que iba a romperse.

El actualizador de Seagate se negaba a tocarlo ni con un palo. El soporte de Seagate me decía que un nuevo firmware debería venir de Apple, no de ellos.

En aquel entonces conseguí un disco nuevo y fin, este estando en un cajón desde entonces.

Nota extra hablando del firmware especial, la gente que ha cambiado su HDD por un SSD en su iMac de la época conoce el famoso problema de los ventiladores al 100%. Con puentear ambos pines del sensor se soluciona el problema y el "disco" está a "0 grados"

Muy bonito todo, pero el disco sigue con su firmware antiguo y parece que se va a desintegrarse. Hay que des-appleizar el disco duro y devolverlo a ser un disco normal, con su firmware actualizado que arregle lo que tenga que arreglar.

La operación es bastante sencilla:

  1. Extraer el EXE de actualización.
  2. Conocer que firmware casa con nuestro disco en concreto
  3. Usar hdparm para flashear el nuevo firmware
  4. Apagar completamente el ordenador y volverlo a encender

Para extraer el EXE hay mil formas, yo simplemente lo abrí con el visor de archivos comprimidos "file-roller".

Dentro hay muchos archivos, pero solo necesitamos los .LOD (firmware) y el .CFS. El CFS define en cada línea un número de modelo, su versión (versiones) válidas, el LOD que le corresponde y la nueva versión que tendrá al acabar.

No obstante, va encriptado, o más bien, codificado de forma extraña. Hay herramientras para desencriptar el archivo, pero lo más sencillo es simplemente buscarlo en la gran G.

Yo encontré que mi ST31000528AS quería el firmware PHCC494H.LOD. La diferencia entre los LOD de este release de firmware es su número de cabezales. Teóricamente, con un disco igual abierto y contando podríamos saber que firmware es el adecuado.

Nuevos firmwares van nombrados por número de TB, en cuyo caso el firmware adecuado es obvio.

El updater stock fallaba porque la versión de firmware de Apple no está en ningún lugar de la lista del CFS. Podríamos, en teoría, modificar el CFS para que el actualizador stock colaborara.

Para realizar el flash usando herramientas Open Source que no dictan lo que tienes que hacer:


# hdparm --yes-i-know-what-i-am-doing --please-destroy-my-drive --fwdownload PHCC494H.LOD /dev/sdX


Parecerá congelarse al final, simplemente hay que dejarlo más tiempo. Acabará saliendo un "Done"

Después hay que apagar el ordenador completamente, dejarlo unos segundos, y al volver a iniciar el disco tendrá el firmware normal, que podremos comprobar con smartctl.

smartctl -a /dev/sdc                                                                                                                                                 :(
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-4.19.79] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.12
Device Model:     ST31000528AS
LU WWN Device Id: 5 000c50 02cba891f
Firmware Version: CC49
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Sun Oct 13 20:26:37 2019 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled



Éxito, CC49!

Ahora bien, el ruido parece ser el mismo. En cuanto a la fiabilidad, ya se verá. Pero ya no hay firmware de Apple raro en el servidor, y eso siempre está bien.


Posted on