2019/02/13

HP Elitebook 8470w firmware upgrade from Linux

Just kidding, this is actually about upgrading without Windows, directly from EFI. HP apparently offers some Linux support in this regard, but the firmware was several years older than what was offered for Windows users so I didn't even bother checking what abominations that download would have offered. Whole process went (for me at least, YMMV) roughly like this:

First, I downloaded firmware upgrade (for Windows, sp91622.exe) from HP support site and extracted files from downloaded executable self-extracting archive).

I then extracted correct CAB for my laptop. You will need to find out what chip your laptop uses. It can be read from firmware system info. CAB with matching filename is the right one.

$ 7z x sp91622/68ICF.CAB

I was initially overly positive and thought I could just copy everything to USB-stick and upgrading would just work from current firmware. Well, things don't work like that in HP land. After some trial and error I found out that files need to be in particular paths, with particular filenames which of course are nothing like they are in the archive because reasons.

$ mkdir -p EFI/HP/BIOS/New
$ mv efibios.sig Rom.* ver.* EFI/HP/BIOS/New/
$ cp -R sp91622/BIOSUpdate EFI/HP/
$ cd EFI/HP/BIOS/New/
$ cp Rom.bin 68ICF.bin
$ cp efibios.sig 68ICF.sig
$ cp Rom.sig 68ICF.s12

After all that nonsense, I copied EFI directory to USB-stick, rebooted the laptop in question and entered boot menu with F9. From there I ran EFI/HP/BIOSUpdate/HpBiosUpdate.efi and the upgrade finally worked. I suppose these upgrade files could also be copied to system EFI-partition and run from there, but I didn't have one so, USB-stick it was.

This process should work for other Elitebook models too, and possibly Probooks etc. but you need to be careful when renaming/copying files to not to mess up anything. This model and many others do not have socketed flash so.. be careful. If something goes wrong, there should be file EFI/HP/BIOSUpdate/HpBiosUpdate.log which will tell you what happened. That's how I figured out those new filenames.