Adventures in updating hard drive firmware

Posted on Fri 06 January 2012 in Sysadmin

I decided to update the firmware of two of my hard drives. The drives in question are both Seagate Barracuda 7200.11, model ST3500320AS, and smartctl gave me the following warning:

==> WARNING: There are known problems with these drives,
see the following Seagate web pages:

http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207931
http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207951
http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207957

For one of the drives (with firmware SD15, the other had SD04), the warning included “AND THIS FIRMWARE VERSION IS AFFECTED”!

Updating the firmware of anything is non-trivial on a non-Windows system, but luckily Seagate provides bootable ISO images for such systems. Problem with my server is that it doesn’t have a DVD drive, though.

Extracting the files from the ISO image wasn’t helpful. There are two files. One is README.TXT, which refers to a non-existent flash.bat file, and the other is DriveDetect.exe, a Windows application for detecting hard drives. But booting the image in a virtual machine reveals that there is indeed a flash utility lurking in there!

So how to boot the ISO on a server without a DVD drive? Enter my trusty bootable USB stick, which was created using MultiBootISOs USB Creator. The USB stick uses Grub to boot various ISOs. Inspecting menu.lst revealed that different ISOs are launched using slightly different boot entries. My first attempt was to use the variant below, and it was successful!

title Seagate Firmware Update
    find --set-root /MooseDT-SD1A-2D-8-16-32MB.ISO
    map --mem /MooseDT-SD1A-2D-8-16-32MB.ISO (hd32)
    map --hookroot (hd32)
    chainloader (hd32)

After booting, I was greeted with the following screen:

Seagate flash utility screenshot

Here, I pressed S to scan for devices, to ensure that both hard drives were detected correctly. They were! I then pressed A to update the firmware. My plan was to update the firmware for only one of the drives first and then boot the system to verify that the update didn’t brick the drive. Why? Well, the drives are part of a RAID5 array, so I could afford losing one of them but not both. But the flash utility didn’t give me a choice - it happily went about to update both drives! So all I could do was to hold my breath and hope that everything worked out (my mind jumped back to the time I bricked an Asus P5B motherboard during a BIOS update and I had to re-flash it using SPI).

After a power cycle, the server booted without problem, and both drives were working perfectly fine with the new SD1A firmware!