Upgrading the HP SAS expander is possible using Linux and a SAS HBA.
Note: Flashing firmware to a SAS expander will likely not work when the expander is connected to a SAS RAID controller because that controller might hide all devices behind it from the OS. An example of a SAS HBA is Supermicro SAS2LP-MV8.
In case you haven't got Linux, you can use a Linux Live CD. You could try the most recent Ubuntu Live CD. A 32-bit download will do. 64-Bit will also work.
Start a Linux terminal
That is Ctrl+Alt+T using the Ubuntu LiveCD.
Make sure your internet connection is working
To download and install additional components
Make sure your SAS expander card is detected in Linux
# lsscsi -g | grep HP
Should return something like:
[6:0:0:0] enclosu HP HP SAS EXP Card 2.08 - /dev/sg1
[6:0:1:0] enclosu HP HP SAS EXP Card 2.10 - /dev/sg2
2. Setup utility
sg_write_buffer version ≥ 1.15 to download microcode when the expander is connected to a host bus adapter (HBA). To download and install this utility in 32-bit Ubuntu or Debian, use:
# curl -O http://sg.danny.cz/sg/p/libsgutils2-2_1.39-0.1_i386.deb &&
curl -O http://sg.danny.cz/sg/p/sg3-utils_1.39-0.1_i386.deb &&
dpkg -i *_1.39-0.1_i386.deb
sg_write_buffer utility version ≥ 1.15 — distributed in
sg3_utils version ≥ 1.39 — added a
--bpw option to download in small chunks. An expander might require a small chunk size like 4096 bytes.
3. Get and unpack HP firmware image
Get the expander firmware image file, for example version 2.10 (C) — dated 9 Sep 2014:
# curl -O http://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-array/p6670438/v96061/CP022989.scexe
Although they sound like Windows/DOS executables,
.scexe files from HP are really Linux executable scripts that you can view in a text editor (at least the first part).
Running a 64-bit Linux and having issues with the next command? Then make sure you can run 32-bit executables. The commands in Ubuntu are:
# dpkg --add-architecture i386 && apt-get update && apt-get install libstdc++6:i386
To extract the firmware image from this .scexe file:
# mkdir tmp && chmod +x CP022989.scexe && ./CP022989.scexe --unpack=tmp && mv tmp/PUF21000.bin . && rm -r tmp/
4. Flash SAS expander
When the expander to be upgraded/flashed is named
sg1 (check with
lsscsi -g | grep HP), use:
# sg_write_buffer --mode=dmc_offs_defer --bpw=4096 --in=PUF21000.bin /dev/sg1
# sg_write_buffer --mode=activate_mc /dev/sg1
Older devices might only support
0x7 is also known as
dmc_offs_save, which does download microcode with offsets, save and activate.
5. Remove temporary files
# rm PUF21000.bin
You might need to unload (for instance
modprobe -r mvsas) and load (f.e.
modprobe mvsas) your HBA module again or
reboot to reflect the firmware version changes in
lsscsi -g output.