In my previous post I talked about how HP locks down their hard drives (made by Seagate) with custom firmware that is exclusive to HP and with the huge caveat that if you do not have an HP storage controller the software update package provided by HP won’t work for you at all.
I spent the past 48 hours researching and trying different things. I unpacked the official HP firmware and tried to find the binary/firmware dump from within the .scexe file provided by HP on their website to no avail. I even contacted HP for help and they would not be willing to help if the drives were not connected to HP hardware.
After some research I discovered that the HP MB2000EAMZF 2TB drive I had was almost exactly the same (part number) as the official Seagate ST32000644NS drive after failing to be able to flash HPs firmware using HP’s bootable Firmware Update 8.3 (injecting the .scexe files inside this live CD) – I decided I really had nothing to lose but try the method I will explain below.
The information provided below is provided to you with no guarantees it will work for you. By following my steps you are risking bricking your hard drive and I won’t be liable for it. Continue at your own risk.
The tale of two drives
*Seagate original* Constellation ES ST32000644NS has part number: 9JW168-039
*HP enterprise* MB2000EAMZF has part number: 9JW168-280
It is possible that these two drives have different PCB control boards (basically what controls the disk heads and communicates to the physical disk). If I load a firmware that is written for a different PCB – my drive will most likely be bricked.
The part numbers were too close to eachother, only the last three digits were different. I did not find any other information online from anyone trying what I was about to attempt. HP had issued a *Critical* firmware update for these drives and my only choice was to take the risk now or put this drive on my ZFS array and wait for it to fail short term.
Tools needed and where to get the firmware
- I had another ST32000644NS drive around and used it’s serial number on seagate’s website. It provided me with firmware version SN12 (ConstellationES1-Muskie-StdOEM-SATA-SN12.zip). Download to your desktop, unpack the zip and look inside the firmware folder SN12.lod file.
- Download and make a bootable CD of system-rescue live cd – or if you have a Dell iDRAC like me boot from the .iso remotely 🙂
- Ensure that only the hard drive to be flashed is connected to the server/system.
- Boot into the linux live CD, once in console check drive smart data to see the current model and version with smartct -x /dev/sda (or whatever the /dev/ name of your drive is)
- Once you have verified the smart data of the drive you want to flash (it will have a name of /dev/sda or /dev/sdb or /dev/sd$)
- Make sure to have a USB thumb drive with the SN12.lod file from step one – plug it in and mount the drive (if its linux formatted it will be as simple as mount /dev/sdb1 /mnt/windows)
- Now we have the files and we’re ready to flash. Make sure disk is idle (no smart tests running in background). Push the firmware with hdparm –fwdownload SN12.lod –yes-i-know-what-i-am-doing –please-destroy-my-drive /dev/sdb
- Reboot the server.
You can repeat steps 4 to 5 and check smart data report and you should see the drive running the firmware you just flashed. In my case here you can see my firmware changed to SN12 on my HP hard drive.