Installing HP UEFI Diagnostics from Linux
While attempting to update my laptop’s BIOS without a Windows machine (a somewhat unnecessary challenge, given that I do have a Windows VM), I also wanted to try out HP’s “PC Hardware Diagnostic UEFI” tool.
The installer seems to be universal and easily available from the link above. Extracting it is more involved:
The first file, sp153483.exe
in my case, is just a self-extracting 7z archive. The 7z
command makes short work of it.
Inside it is just a single file, Setup.exe
. This is an InstallShield setup file that actually contains a an MSI file. The usual unshield
wanted nothing to do with it, so I extracted it by running wine Setup.exe /bmsi
and cancelling the installer window once it came up.
This created a folder called msi
with HP PC Hardware Diagnostics UEFI.msi
inside. Running msiextract
finally got me to the actual .EFI files I was after, but it also showed an Installer.exe
, meaning we’re now four levels of installers deep.
Now we have to figure out where to put the .EFI files for HP’s UEFI firmware to pick them up automatically. We could probably run the files manually by e.g. creating a boot entry with efibootmgr
, but that’s not as fun as reverse-engineering the whole installer.
Running strings -el
(looking for little-endian UTF-16 strings) revealed two paths: \EFI\HP\SystemDiags\
and \EFI\HP\BIOSUpdate\
. I took a guess, created the two folders in my ESP, and put all files with Diags
in the name in one and all with Bios
in the other.
Now booting with the F2 key pressed started the newly installed diagnostics program, instead of the old built-in text interface version. Sadly, the “Firmware Management” option was not present and running the *Bios*.efi
files from the EFI shell did nothing.