Firmware update of Seagate harddisk from iso using Linux
Seagate firmware tool dl_sea_fw
does not work with CentOS 7 (and probably most modern distros). This article describes how to do a firmware update of a Seagate harddisk using Linux, and is based on a github wiki by jandelgado. The jandelgado wiki shows how to extract the firmware from a .sg-SFX file. This wiki shows how to find the firmware in a Seagate .iso file.
Successfully tested with an with 500GB Seagate Barracuda 7200.12 disk.
Important: following the steps described here can easily brick your harddisk and/or lead to other serious problems with your computer. Make sure your fully understand every step. Especially the extraction of the firmware may differ. Do a backup of all your data before you start. Double check your backup. I am not responsible for any damage occuring by following this description.
Ok, you have been warned. I successfully updated my firmware as follows:
- make backup of all your data
- unmount disk
- obtain firmware update from Seagate website (in my case: Barracuda12-ALL-CC49.iso)
- extract firmware LOD files
- update disk with linux hdparm tool
The firmware is stored in a CD-ROM .iso image. To extract it, we need to perform two loopback mounts and then unzip the firmware file.
$ mkdir /tmp/iso
$ sudo mount -r -o loop /tmp/Barracuda12-ALL-CC49.iso /tmp/iso
$ mkdir /tmp/image
$ sudo mount -r -o loop /tmp/iso/PH-CC49.ima /tmp/image
$ mkdir /tmp/firmware
$ unzip /tmp/image/LOD.zip -d /tmp/firmware
$ ls /tmp/firmware/
flash-m.bat model.lst PHCC491H.LOD PHCC492H.LOD PHCC494H.LOD PH-CC49.CFS
According some postings found on the web, the 1H|2H|4H in the .LOD filenames refer to the number of heads in the disk. Examining the Seagate specs for the Barracuda 7200.12, I confirmed that my 500GB disk has two heads, so I used the PHCC492H.LOD
file.
The firmware is updated using the hdparm
tool:
$ sudo hdparm --yes-i-know-what-i-am-doing --please-destroy-my-drive --fwdownload /tmp/firmware/PHCC492H.LOD /dev/sdb
........ Done.
$ sudo smartctl -i /dev/sdb
smartctl 6.2 2017-02-27 r4394 [x86_64-linux-3.10.0-693.17.1.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.12
Device Model: ST3500418AS
Serial Number: 5VMLXYDE
LU WWN Device Id: 5 000c50 02ef094b6
Firmware Version: CC46
User Capacity: 500,107,862,016 bytes [500 GB]
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: Thu Feb 15 09:29:12 2018 PST
==> WARNING: A firmware update for this drive may be available,
see the following Seagate web pages:
http://knowledge.seagate.com/articles/en_US/FAQ/207931en
http://knowledge.seagate.com/articles/en_US/FAQ/213891en
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
$ mkdir /tmp/iso
$ sudo mount -r -o loop /tmp/Barracuda12-ALL-CC49.iso /tmp/iso
$ ls /tmp/iso
Autorun.inf drivedetect.exe PH-CC49.ima seglogo.ico
BCDW FreeDOS README.txt
$ mkdir /tmp/image
$ sudo mount -r -o loop /tmp/iso/PH-CC49.ima /tmp/image
$ ls /tmp/image
COMMAND.COM FDCONFIG.SYS HIMEM.EXE LOD.zip SFLASH.ZIP UNZIP.EXE
FDAUTO.BAT FINDTDSK.EXE KERNEL.SYS NANSI.SYS TDSK.EXE
$ mkdir /tmp/firmware
$ unzip /tmp/image/LOD.zip -d /tmp/firmware
Archive: /tmp/image/LOD.zip
inflating: /tmp/firmware/flash-m.bat
inflating: /tmp/firmware/model.lst
inflating: /tmp/firmware/PHCC492H.LOD
inflating: /tmp/firmware/PH-CC49.CFS
inflating: /tmp/firmware/PHCC494H.LOD
inflating: /tmp/firmware/PHCC491H.LOD
$ ls /tmp/firmware/
flash-m.bat model.lst PHCC491H.LOD PHCC492H.LOD PHCC494H.LOD PH-CC49.CFS
$ sudo hdparm --yes-i-know-what-i-am-doing --please-destroy-my-drive --fwdownload /tmp/firmware/PHCC492H.LOD /dev/sdb
/dev/sdb:
fwdownload: xfer_mode=3 min=1 max=1 size=512
.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. Done.
$ sudo smartctl -i /dev/sdb
smartctl 6.2 2017-02-27 r4394 [x86_64-linux-3.10.0-693.17.1.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.12
Device Model: ST3500418AS
Serial Number: 5VMLXYDE
LU WWN Device Id: 5 000c50 02ef094b6
Firmware Version: CC49
User Capacity: 500,107,862,016 bytes [500 GB]
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: Thu Feb 15 10:25:41 2018 PST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
$ sudo umount /tmp/image
$ sudo umount /tmp/iso
As you can see, the Firmware version changed from "CC46" to "CC49".