Go to menu

Installing HP UEFI Diagnostics from Linux

2024-07-20

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.