Updating SmartArray controllers on 64-bit Ubuntu 14.04

Want to install a firmware update on one of your HP SmartArray controllers while running a 64-bit OS? Turns out, the binaries distributed by HP seem to be 32-bit only – running for example Ubuntu 14.04, here’s what you gotta do…

root@host:~#./CP021971.scexe 
./CP021971.scexe: 153: ./CP021971.scexe: pushd: not found
./CP021971.scexe: 158: ./CP021971.scexe: popd: not found
./ccissflash: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

 

But libstdtc++6 seems already installed, hmpf… 32-bit maybe?

root@host:~# dpkg --add-architecture i386
root@host:~# apt-get update
root@host:~# apt-get install libstdc++6:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libc6:i386 libgcc1:i386
[...]

 

Let’s try that again…

root@host:~#./CP021971.scexe                                                                                                                                               
./CP021971.scexe: 153: ./CP021971.scexe: ./CP021971.scexe: 158: ./CP021971.scexe: popd: not found
pushd: not found

        This program consists of two phases: device discovery and device update.
        No device will be updated until you answer.

Do you want to run device discovery?
(yes/no) yes
Finding hardware. This may take a few minutes.
Found 1 devices.

Do you want to upgrade the device that has older ROM?
(yes/no) yes
1 devices will be updated.
Updating: P410i Slot: 0 from [5.70] to [6.40]
Updating: P410i Slot: 0 from [5.70] to [6.40]

As part of the reboot process, you must power cycle the server and any external array storage devices.

Well, that was rather easy…

6 thoughts on “Updating SmartArray controllers on 64-bit Ubuntu 14.04”

  1. and i have:
    root@pve:~# ./CP008474.scexe

    gzip: stdin: unexpected end of file
    ./CP008474.scexe: Cannot decompress ./CP008474.scexe
    :(

    1. > gzip: stdin: unexpected end of file

      (For anyone else delivered to this page as a result of searching for that error message: )

      I hit this problem when trying to use a copy of the P400 controller firmware updater from the page linked in Dave’s post (CP017698.scexe in my case).

      It turned out that when I had used vim to edit the file (changing the “#!/bin/sh” line to “#!/bin/bash” in order to get the the pushd/popd commands found in the script to work — needed on Ubuntu where /bin/sh is dash instead of bash), an LF character was appended at the end of the script file… but the end of that script file is actually binary data that gets passed directly to gzip, and the extra character results in gzip’s decompression algorithm getting out of sync with the file data.

      As soon as I removed that unwanted trailing LF from the file, the gzip error went away (and the firmware upgrader was extracted and then executed successfully).

      1. For those wondering, you can remove the trailing LF from the file with this: truncate -s -1 filename

  2. Thanks! I just got one of these G5 servers and the 20.x ubuntu would hang at trying to find the driver for CSIS. got 14.04 on it, and tried to run it and ran into this issue too. this helped me get it flashed!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.