Recently I had trouble with a DR box at a remote site. This server needed to be updated from ESX 3.5 (yeah that old) to a more recent ESXi 5.0. Needless to say this should have been a no-brainer, if not for one small problem – iLO was broken! That’s right, iLO web based console would respond, but prior to presenting the Authorization page, it would immediately redirect to “Page cannot be displayed”. Uh oh!
I was still able to SSH into the box. I did so and immediately performed a reset of iLO -> reset /system1
That did not work, so I started my research. After finding nothing concrete. I decided that I wanted to try updating the iLO firmware. This is always a challenge when working for a bank. Physical access to the datacenters is difficult at best. I figured there must be a way to update via SSH, and I was correct.
On the web I read that iLO 2 supports HTTP, HTTPS, FTP & TFTP. Now since I was trying to manage everything from a via an RDP connection to a jump server in the DC I decided to keep everything as lightweight as possible. I had used TFTP32 many times before and really like it for it ease of use, simplicity, and not having to be installed. I started it up, pointed it to my directory with the latest version of the iLO .bin file and that was it. I established a new SSH connection to the server and after logging in issued the following command.
load -source tftp://<servername>/ilo2_215.bin /map1/firmware1
I was immediately presented with the following:
status=2 status_tag=COMMAND PROCESSING FAILED error_tag=COMMAND ERROR-UNSPECIFIED Invalid property value
What happened? It turns out that my source on the internet was incorrect. After scouring the HP iLO 2 documentation I came across this one small tidbit:
“protocol field is mandatory and must be either HTTP or HTTPS”
Well that is not the end of the world, but I did not have a web server running on this jump server, nor did I want to install/configure one for such a trivial task. That is where mongoose came in. For those of you that don’t know, mongoose is an open source web server in an executable. You can find a link to it on my tools page. So I proceeded to download it (it’s tiny) and run it. By default it starts running on port 8080, and the base directory is the once from which it is run.
I was now ready to update the firmware so I again entered the command, but this time I changed the protocol and added the port.
load -source http://<servername>:8080/ilo2_215.bin /map1/firmware1
It appeared to not be doing anything, but after a couple of minutes my SSH connection was severed. This was iLO resetting itself and loading the new version of the firmware. I logged back in and noticed that the disclaimer text had changed and the version had indeed been updated. SUCCESS!!
Well not so far. In my case this did not solve the root problem. I still ended up contacting HP, and they are currently scheduling an onsite to replace the iLO controller. I only hope that this helps someone else in the future as tracking down all of the commands and tools was cumbersome.