Skip to content

Firmware update of Seagate harddisk from iso using Linux

Galen Seitz edited this page Feb 15, 2018 · 1 revision

Problem

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.


Steps to perform

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

Update Process

Extracting firmware LOD files from the iso image

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.

Updating the firmware

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.

Detail transcript of sample update session

$ 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".