3

I have a Dell PowerEdge R710 server, fitted with Hitachi HUS156045VLS600 450Gb SAS drives.

Unfortunately the disks are running NetApp NA02 firmware. I'd like to apply Dell E770 firmware so the drives run better with the MegaRAID/PERC H700/PERC 6i controller and the rest of the Dell system.

The Dell linux/rpm download package SAS-Drive_Firmware_YC07T_LN_E770_A00.BIN is a combo shell script and binary archive. Running the --extract option creates a directory with all the files. The script is very sophisticated and dense (and beyond my skills to decode).

I'd like to initiate the firmware download manually, as the scripted process fails the pre-requisite check, probably on prior firmware version not matching, which is to be expected, being NetApp to Dell.

Which app actually delivers the firmware to the drives or makes a HAPI call?

What command line should I run on the extracted directory to send E770.fwh to the drives?

David McNeill
  • 196
  • 1
  • 10
  • It will not brick your HDD ? That system is almost 9 yr old, I would check more for perc memory or such or getting the right disk off ebay – yagmoth555 Jan 26 '19 at 23:31
  • Thanks. Sure could brick the drive, but it is an exact match on model number, and the drive is otherwise worthless anyway. Sure there are Dell disks on eBay, but why waste these ones if a simple command will save them. – David McNeill Jan 28 '19 at 01:49
  • Another option might be to modify the script to force return true to relevant pre-flight sanity checks, thereby achieving the same download result. Any suggestions in this area welcome. – David McNeill Feb 02 '19 at 22:44

3 Answers3

1

My recommendation is to sell those drives on ebay (maybe stating what firmware they run, somebody might be looking for that) and buy new ones from eBay with the required firmware. The reason the updater fails is because there's a lot of variants out there for drives, and even though the model number matches, there's no guarantee that the Netapp drives are identical to Dell drives, since both are a custom drive in itself.

Stuggi
  • 3,366
  • 4
  • 17
  • 34
1

Do you also have a Windows OS available for the firmware update? I only had a look at the windows update tool for a different Dell system, but the update mechanism seems to be the same for all Hitachi/Toshiba/Seagate drives. Maybe it's worth a shot to replace the hardware id 20578 for HUS156045VLS600 with your current drives' hardware id in E770.fwh and run the SASDUPIE.exe update tool manually.

Hexdump of the first 256 bytes of the firmware binary payload/E770.fwh

ibm@x250:/mnt/c/Users/ibm/AppData/Local/Temp/cb868bcd-1f9f-476a-a137-6bf2ea998e23$ xxd -l 256 payload/E770.fwh
00000000: 2020 2020 2020 2020 0945 3737 3020 2020          .E770
00000010: 2078 0100 0000 0000 0000 0000 0000 0000   x..............
00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0003  ................
00000040: 2020 2032 3035 3737 2020 2020 2020 2020     20577
00000050: 2020 2020 2020 2020 2020 2020 2020 2020
00000060: 2048 5553 3135 3630 3330 564c 5336 3030   HUS156030VLS600
00000070: 2020 2032 3035 3738 2020 2020 2020 2020     20578
00000080: 2020 2020 2020 2020 2020 2020 2020 2020
00000090: 2048 5553 3135 3630 3435 564c 5336 3030   HUS156045VLS600
000000a0: 2020 2032 3035 3739 2020 2020 2020 2020     20579
000000b0: 2020 2020 2020 2020 2020 2020 2020 2020
000000c0: 2048 5553 3135 3630 3630 564c 5336 3030   HUS156060VLS600
000000d0: 0e80 0000 0000 0000 0000 0000 0000 0000  ................
000000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000f0: 4869 7461 6368 6920 476c 6f62 616c 2053  Hitachi Global S

See my answer in Using non-certified hard drives in Dell MD3220 storage array.

Freddy
  • 1,999
  • 5
  • 12
  • Making this change (20578 ... 00000) allows the model check to succeed, however `sasdupie -u -f -debug debug.log` then complains with _The operation failed due to an invalid image file_ which is most likely checksum on the modified E770.fwh file. The invalid image error comes out of sasdupie binary, not any external calls. – David McNeill Mar 11 '19 at 04:21
0

As I don't have access to a similar hardware, all of my findings are opinions and NOT to be considered as working instructions. Modifying firmware of hardware devices flashing ALWAYS involves the risk of bricking hardware.

The Linux packge contains the following files which are most likely relevant, comments noted with #:

├── framework64
│   ├── duppmdatacollector.bin
│   ├── getSystemId
│   ├── hapi
│   │   ├── funcs
│   │   │   ├── instsvc-uninstall.sh
│   │   │   ├── srvadmin-hapi.sh
│   │   │   └── srvadmin-omilcore.sh
│   │   └── hapi64.tgz
│   └── sputility.bin
├── l64
# sasdupie seems to be the flasher executable, tries to run dupdisneyinstall.sh
# which seems to install hapi64.tgz, but didn't try to run that with sufficient priviledges.
│   ├── sasdupie
# RPM contains some LSI libraries, which will be installed in /opt/lsi/
# these files are NOT the same as in the directory
│   └── srvadmin-storelib-sysfs-7.2.0-4.1.1.el4.x86_64.rpm
# the xml contains the information:
# 4. If this is a BIOS update package, install any necessary Embedded Systems
# Management firmware prior to this BIOS update. Otherwise, go next step.
# could be related to dupdisneyinstall.sh
├── package.xml 
├── payload
# this looks to be the actual drive firmware file
│   └── E770.fwh
# PIEConfig.sh holds information for the firmware, and looks to describe the sasdupie call
├── PIEConfig.sh
# PIEInfo.txt describes required the steps for the installation.
├── PIEInfo.txt

Calling l64/sasdupie prints the help message, if not run as root there the script dupdisneyinstall.sh fails with insufficent privileges.

Running strace -e file l64/sasdupie shows that sasdupie tries to load libraries that are not part of this firmware file. Most likely these are part of the mentioned Embedded Systems Management firmware in package.xml.

So a way forward can be to:

  • install the Embedded Systems Management firmware
  • run l64/sasdupie as root and see if dupdisneyinstall.sh succeeds
  • in case it works, use the options from PIEConfig.sh to execute l64/sasdupie

Should your system be a 32-bit system, use l32 instead of l64.

hargut
  • 3,848
  • 6
  • 10