Tuesday, October 28, 2014

Seagate firmware flash using usb created in Linux

I had an older Seagate Barracuda 7200.12 ST31000528AS (1TB SATA) drive that I literally just found laying among my pile of old hardware. I couldn't figure out why I just had a 1TB drive just sitting there so I put it into a handy SATA to USB enclosure, connected it to my system (Xubuntu 14.04)  and fired up GSmartControl. It's a GUI app for testing hard drives and among all the info it shows that there's newer firmware for the drive. The GSmartControl log even gave me a handy link to go and find out if in fact there was newer firmware for my Seagate Barracuda 1TB drive.
There was in fact newer firmware I could try out on the drive. I was running firmware version C44 and CC49 was available. Now many people will say if it's not broke don't fix it. Meaning if the drive is performing fine than just leave it be, don't bother flashing it with new firmware but I was feeling adventurous since I had just found it and it was empty. 

Viewing the options for flashing they have a Windows executable (in .exe form) or an ISO but again refers to Windows. Since I don't use Windows I set out to find a way to accomplish this task and I found it after many hours of trial and error. First I downloaded the ISO file and mounted it in my system using the following commands:
Create a mount point for it first
sudo mkdir /mnt/iso

Now let's mount it (this command assumes your current working directory is the same location you saved the downloaded ISO file. You can cd to the directory which is most likely ~/Downloads)
mount -o loop Barracuda12-ALL-CC49.iso /mnt/iso
It may warn you that it's read only which is fine cause we're only interested in copying a file out of the ISO. Open up your preferred file manager like Nautilus or Thunar, navigate to the /mnt/iso folder and grab the PH-CC49.ima file and copy it to somewhere on our system, I put it on my desktop. Now simply rename it from an .ima file to an .img file using (you may need sudo)
sudo mv ~/Desktop/PH-CC49.ima ~/Desktop/PH-CC49.img

Now we need a flash drive, the .img file is only 5.4MB so a 256MB thumb drive should work just fine. I made sure that the thumb drive was empty by using GParted, I deleted all partitions and then made a new partition table with the msdos format. Then ensure you know which device node your thumb drive is by using the command (VERY IMPORTANT STEP, using dd is very dangerous so triple check you're running the dd command onto the correct /dev/sdX drive)
sudo fdisk -l

Which will return a list of all your harddrives that are in your system as well as each of their partition tables. Look for your thumbdrive, mine was /dev/sde. Now let's write the .img file to the thumb drive using the command
dd if=~/Desktop/PH-CC49.img of=/dev/sde bs=512k

After it's done it will output something that resembles the following
33706002+0 records in
33706002+0 records out
17257473024 bytes (17 GB) copied, 34.791 s, 496 MB/s

Now you're done, you now can boot your computer using the thumb drive that you just created and you'll be presented with the Seagate Flashing Utility. If you need some instruction for using the Firmware Flashing Utility you can find that HERE. Things to note are that the drive you want to flash will need to be connected to your motherboard directly, you can't use an external enclosure and usb. Hopefully this was helpful as I spent hours finding out how to accomplish flashing a Seagate hard drive with updated firmware.

-Ubu out
Post a Comment