Upgrading HP Proliant iLO2 Firmware with Ubuntu Server

4.20 avg. rating (83% score) - 5 votes

I downloaded the firmware from HP site. It was named CP019022.scexe. I tried uploading it in the iLO2 web interface, but it was rejected. Next, I copied it to the server, gave it execute permissions and ran it:

Not working. This is a fresh installation of Ubuntu Server 12.04.2 LTS x86_64. So I had to start looking closer. The file is a bash script but the hashbang is #!/bin/sh, which puts bash into old Bourne shell mode. No pushd/popd there.Second try with bash proper:

Still not working. Looking at the code, after the script comes a gzipped binary blob, which seems to be a tar archive. This is unpacked by the script before the blob. The lines to discard before binary starts are in this variable:

Let’s decompress it:

Then take a look at the contents:

There’s the “flash_ilo2” tool and the “ilo2_215.bin” file which seems to be the actual firmware. Unpack archive:

The readme file says you could actually take the .bin file and use the web interface to upgrade using that. So that’s one possibility.

Trying the flash_ilo2 command:

Doesn’t seem to run. Examine the file a bit further:

So it is a 32-bit executable. Ubuntu server has no 32-bit ELF loader installed by default. That can be fixed with:

And:

It works! So seems like the easy fix is installing 32-bit libc. The original .scexe seems to work as well, although there are a couple of error messages.

9 thoughts on “Upgrading HP Proliant iLO2 Firmware with Ubuntu Server”

  1. Just a small update about installing Smart Array P410 firmware to be able to recognize 3TB disks. This is very similar to the description above (I used it to fix it on my server with a few changes) so I’ll make it plain without any description. Download FW update file run those commands and it’s done 🙂
    Thanks for the blog because it helped me with my problem.

    sudo apt-get install libc6-i386
    sudo apt-get install ia32-libs
    chmod o+w CP019316.scexe
    sudo -i
    bash CP019316.scexe

  2. Hi, also tried this with Smart Array P420i on Ubuntu14.04 LTS, but Package ia32-libs is not available?

    apt-get install libc6-i386

    tail -n +371 CP022978.scexe > CP022978.tgz
    tar -zxvf CP022978.tgz

    ./ccissflash
    ./ccissflash: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

  3. thank you,
    regarding this guide i succesfully upgraded P400 firmware on proxmox server (debian based)

  4. Hi everyone, I have hard time deciding whether it is possible to update with this firmware from Firmware Version: 1.66 to the latest on a Smart Array P410i ( Hardware Revision: C ). Would it kill the raid currently running or it is safe to update on a prod system?

  5. Many thanks for the checklist, as this is the only one I have found anywhere for use on x64 Fedora Core 21.

    Worked fine on DL380G6, from iLO2 2.20 to 2.22 for ILO firmware CP023549.scexe

  6. Worked great to update a SAS P440 controller to the latest firmware on a Proliant ML350 gen 9. Did an “rpm2cpio .rpm | cpio -ivh”, moved all the files to one directory and then did a ./hpsetup and it worked fine on x86_64. The tar was already untared in the RPM, and the executable was already 64-bit.

  7. Thank you so much for your instruction! Sucessfully updated iLO2 under CentOS, installed libc as following:

    yum install glibc.i686
    and then flash_ilo2 started working!

    Thank you again

  8. Thank you!
    E200i upgrade on debian buster
    tail -n +346 CP019402.scexe | gunzip > CP019402.tar
    mkdir CP019402
    tar xvf CP019402.tar -C CP019402/
    cd CP019402/
    sudo apt install libc6-i386 lib32stdc++6
    sudo ./hpsetup
    sudo reboot

Leave a Reply