Updating the firmware of an HP msa1500/msa1000 using Debian
For RHEL and SLES, HP supplies a utility for doing "in-band" (that is via the FC) firmware updates of the msa1500/msa1000, delivered as an RPM. While it may be possible to convert this RPM using alien and run it (it seemed to run, I didn't risk trying to use it) the utility is graphical and requires several gnome libraries and their whole dependency stack to be installed, which is not something I usually have installed on my servers. I noticed in the msa1500/msa1000 Command Line Interface User Guide and the Firmware Updating Guide documents, that there is a way to update the firmware via serial. Here is what I did:
- Goto http://hp.com/go/msa1500cs
- In the documents section, get the firmware release notes, firmware update guide, and command line overview documents. Read the sections about updating firmware. All the warnings about data loss and doing backups, etc apply here, you've been warned.
- In the software and downloads section, you have the option of choosing a bunch of different O/Ses, including RHEL/SLES. If you look at those you will see that they offer ISO downloads and downloads of the RPMs I mentioned above, but no raw firmware images you can use via serial. The trick is to select Tru64 as your O/S, and then they are listed. Thanks to John Kufrovich in this HP ITRC forum posting for the idea.
- From the Tru64 page, download the msa1500 firmware. It says it's two parts, the other part is an msa20 firmware image. So I guess if you have one of those connected to the msa1500, you need to update it somehow too (I didn't).
- Use the special "RJ45Z" serial cable you got with the msa1500 to connect it to a Linux box
- apt-get install minicom lrzsz
- Connect to the serial console with minicom: 19200 8n1 and turn off both hardware and software flow control, this is the key.
- Confirm that the CLI prompt is responding to input and you can run help, etc.
- The manual say that you should use "XMODEM-1K (YMODEM)". The sx manpage explains that this doesn't make sense, but is a common misconception. What you want to use is XMODEM with 1k blocks (rather than the 128 byte default) which is sx command with the -k flag. Go to the minicom configuration menu and select the "File transfer protocols" option, then adjust the entry for sending via xmodem to add the -k flag to the sx command.
- Now from the CLI, run "
download firmware offline". This gets the msa1500 side ready to receive. The difference between offine and online is if it resets at the end. I'd prefer to have it reset(more on that in a minute), but I read in the release notes of the firmware version I was uploading that online wasn't supported.
- Next, hit ctrl-A then S to send, select xmodem, select the msa1500 firmware image, and then hit okay. It should start sending and you should see a status counter. Mine took 10-15 minutes.
- When it's down it should print "Download completed!" on the serial console, and supposedly it prints stuff on the LCD too (I wasn't near the one I was updating), see the manual for more details.
- To get the new firmware to take effect the msa1500 needs to be reset. I couldn't determine if there was a way to do that from the CLI, the manual recomments hitting the power button.
- After hitting the reset button, if you have two controllers the LCD on the front will ask if if you want to "CLONE ROM (Y/N)?". Select yes to have it copy the firmware to the other controller. That takes ~5mins.
- You should be done, you can check the firmware version from the CLI with the "show version" command.
I had problems updating a particular msa1000 that was running 4.32, no matter what I tried the xmodem transfer failed. So I grabbed the GUI update utility for RHEL4/amd64 and used alien to convert it to a deb. As mentioned above I had to install a ton of X Windows libraries and use ssh X forwarding to run the application remotely, so I used a freshly installed machine that I could just easily reinstall (using d-i preseeding). It ran ok and I was able to update the firmware. After updating the firmware, just as a test, I tried the serial method of updating and it still failed. So I suspect that it was something with my setup rather than a limitation of the 4.32 firmware.
Thanks to bkero for help debugging.
Matt Taggart <firstname.lastname@example.org>