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:
1 2 3 4 |
root@host:~# ./CP019022.scexe ./CP019022.scexe: 153: ./CP019022.scexe: pushd: not found ./CP019022.scexe: 158: ./CP019022.scexe: popd: not found ./CP019022.scexe: 96: ./CP019022.scexe: ./flash_ilo2: not found |
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:
1 2 |
root@host:~# bash CP019022.scexe CP019022.scexe: line 96: ./flash_ilo2: No such file or directory |
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:
1 |
_SKIP=347 |
Let’s decompress it:
1 |
root@host:~# tail -n +347 CP019022.scexe | gunzip > cp019022.tar |
Then take a look at the contents:
1 2 3 4 5 |
root@host:~# tar tvf cp019022.tar -rw-rw-rw- root/root 322387 2013-01-18 16:36 CP019022.xml -rwxr-xr-x root/root 76812 2009-09-01 18:46 flash_ilo2 -rw-r-xr-x root/root 3145728 2013-01-17 23:03 ilo2_215.bin -rw-r-xr-x root/root 5565 2013-01-18 16:20 README.TXT |
There’s the “flash_ilo2” tool and the “ilo2_215.bin” file which seems to be the actual firmware. Unpack archive:
1 2 3 4 5 6 |
root@host:~# mkdir cp019022 root@host:~# tar xvf cp019022.tar -C cp019022 CP019022.xml flash_ilo2 ilo2_215.bin README.TXT |
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:
1 2 |
root@host:~/cp019022# ./flash_ilo2 ./flash_ilo2: No such file or directory |
Doesn’t seem to run. Examine the file a bit further:
1 2 |
root@host:~/cp019022# file flash_ilo2 flash_ilo2: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped |
So it is a 32-bit executable. Ubuntu server has no 32-bit ELF loader installed by default. That can be fixed with:
1 |
root@host:~/cp019022# sudo apt-get install libc6-i386 |
And:
1 2 3 4 5 6 7 8 9 10 11 12 |
root@host:~/cp019022# ./flash_ilo2 FLASH_iLO2 v1.12 for Linux (Aug 31 2009) Copyright 2009 Hewlett-Packard Development Company, L.P. Firmware image: ilo2_215.bin Current iLO 2 firmware version 2.05; Serial number ILOCZC7402XR0 Component XML file: CP019022.xml CP019022.xml reports firmware version 2.15 This operation will update the firmware on the iLO 2 in this server with version 2.15. Continue (y/N)? |
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.
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
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
great, after “apt-get install lib32stdc++6” it works with Ubuntu14.04 🙂
thank you,
regarding this guide i succesfully upgraded P400 firmware on proxmox server (debian based)
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?
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
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.
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
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