Linuxspicker

Admins kleiner Zettelkasten für die Lösung von Linuxproblemen

Bios-Update bei HP-Notebook unter Linux

Bios-Updates sind meistens nicht wirklich notwendig, aber mitunter sind die versprochenen Fehlerbehebungen oder die Unterstützung von neuer Chips doch ein ausreichender Anreiz das System-Bios upzudaten. Früher gab es dafür mitunter vom Hersteller des entsprechenden Computers oder Mainboards eine Unterstützung zumindest über eine Flashtool unter Freedos, das recht leicht auf einen USB-Stick zum Booten übertragen werden kann. Inzwischen ist es wohl üblich in das BIOS bzw. UEFI-System eine Möglichkeit einzubauen, einfach ein neues Image von einem USB-Stick zu flashen.

Bei dem vorliegenden HP-Notebook 15-db1096ur ist das nicht so. Auf der Serviceseite von Hewlett-Packard findet sich zwar auch noch jetzt eine herunterladbare Datei namens sp100616.exe mit dem letzten Bios-Update F.15 Rev.A vom 10. Dezember 2019, aber diese sieht unterstützt nur Windows. Entpacken lässt sich diese einfach mit 7z, doch das hilft auch nicht weiter. Mittels Wine lassen sich die zwei Imagedateien 085EA.bin und 085EA.s12 extrahieren. Doch gibt es im BIOS-Menu weder mit ESC, F1, F2 noch F10 irgendeine Option, um ein Update durchzuführen.

Ein Start der heruntergeladenen sp100616.exe mit Wine lässt zwar kein direktes Flashen zu, aber verrät, dass es auch eine Option für einen irgendwie bootbaren USB-Stick gibt. Leider scheitert die Ausführung mit Wine wine-5.0 (Ubuntu 5.0-3ubuntu1) unter Ubuntu 20.04. Vermutlich ist es unter neueren Versionen das Gleiche.

Wie es eigentlich laufen soll, ist beispielsweise hier zu sehen. Das gilt allerdings nur für Windows-Rechner.

Eine Beschreibung, wie sich ein Update von einem vorbereiteten USB-Stick starten lässt, findet sich hier. Im Kern muss beim Start die Kombination aus Windows-Taste + B gedrückt werden. Bei einigen Modellen soll es auch mittels Windows-Taste + V gehen.

Bleibt nur die Vorbereitung des Sticks. Neu formatiert werden muss dieser nicht. Bei einigen Quellen muss er HP_TOOLS heißen. Bei anderen HP_RECOVERY. Der Befehl "dosfslabel /dev/sdc1 HP_TOOLS" bzw. "dosfslabel /dev/sdc1 HP_RECOVERY" schafft bei einem beliebigen unter /dev/sdc1 verorteten und mit VFAT formatierten USB-Stick Abhilfe.

Das Entpacken von sp100616.exe mittels "7z x sp100616.exe" fördert eine weitere EXE-Datei namens 85EAF15.exe zutage.
Nach einem "7z x 85EAF15.exe" bekommt man dann diese Dateien.

./H2OFFT.inf
./CrisisFolder
./CrisisFolder/HpBiosMgmt.s09
./CrisisFolder/HpBiosUpdate.s12
./CrisisFolder/HpBiosUpdate.sig
./CrisisFolder/HpBiosUpdate.s14
./CrisisFolder/CryptRSA.efi
./CrisisFolder/HpBiosUpdate.efi
./CrisisFolder/CryptRSA32.efi
./CrisisFolder/HpBiosUpdate.s09
./CrisisFolder/HpBiosMgmt.s14
./CrisisFolder/HpBiosMgmt.s12
./CrisisFolder/HpBiosMgmt.efi
./H2OFFT64.sys
./CrisisKeyDLL_x64.dll
./platform.ini
./h2offt.cat
./FWUpdLcl.exe
./DEVFW
./DEVFW/DevFwUpdate.efi
./DEVFW/DevFwUpdate32.s12
./DEVFW/ReleaseNote.txt
./DEVFW/HpDevFwUpdate.s12
./DEVFW/HpDevFwUpdate32.s12
./DEVFW/ReadMe.txt
./DEVFW/HpDevFwUpdate.efi
./DEVFW/HpDevFwUpdate32.efi
./DEVFW/DevFwUpdate32.efi
./DEVFW/DevFwUpdate.s12
./iscflashx64.dll
./HPFlashWinx64.exe
./FormatFatx64.dll
./085EA.bin
./FlsHook.exe
./FlsHookDll.dll

Ein Boot mit dieser Verzeichnisstruktur brachte keinen Erfolg. Diverse Sucherei brachte Hinweise. Auf dem erfolgreichen Stick waren diese Dateien dann letztendlich so angeordnet. 085EA.s12 wurde beim Kopiervorgang auf einen USB-Stick nach dem Aufruf "wine sp100616.exe" erhalten.

./Hewlett-Packard/
./Hewlett-Packard/BIOS
./Hewlett-Packard/BIOS/Current
./Hewlett-Packard/BIOS/Current/085EA.bin
./Hewlett-Packard/BIOS/Current/085EA.s12
./Hewlett-Packard/BIOSUpdate
./Hewlett-Packard/BIOSUpdate/CryptRSA.efi
./Hewlett-Packard/BIOSUpdate/CryptRSA32.efi
./Hewlett-Packard/BIOSUpdate/HpBiosMgmt.efi
./Hewlett-Packard/BIOSUpdate/HpBiosMgmt.s09
./Hewlett-Packard/BIOSUpdate/HpBiosMgmt.s12
./Hewlett-Packard/BIOSUpdate/HpBiosMgmt.s14
./Hewlett-Packard/BIOSUpdate/HpBiosUpdate.efi
./Hewlett-Packard/BIOSUpdate/HpBiosUpdate.s09
./Hewlett-Packard/BIOSUpdate/HpBiosUpdate.s12
./Hewlett-Packard/BIOSUpdate/HpBiosUpdate.s14
./Hewlett-Packard/BIOSUpdate/HpBiosUpdate.sig

Mit dem Stick dann den Rechner mit Windows + B + Powertaste eingeschalten und der Updatevorgang startet automatisch.



Da sah vielversprechend aus. Allerdings gab es zum Schluss eine Fehlermeldung A System BIOS Recovery has occured mit der Nummer 500. Der Schrecken war erst einmal groß, aber das System startete normal und wie sich herausstellte auch mit der neuen BIOS-Version F.15 Rev.A. Erwartungsgemäß waren auch die BIOS-Einstellungen zurückgesetzt worden, wodurch die Action-Keys wieder nur noch über Fn + F1-12 erreichbar waren. Wie dem auch sei, fanden sich auf dem Stick jetzt zwei zusätzliche Log-Dateien.

Einmal war es Hewlett-Packard/BIOSUpdate/Debug.log:

2023-04-25 10:22:31  [W]> [EfiUtilityLib.c:InitializeEfiUtilityLib:218] LocateProtocol(EFI_SHELL_PROTOCOL'6302D008-7F9B-4F30-87AC-60C9FEF5DA4E', NULL, 0x88008CB8) returned 'Not Found'.
2023-04-25 10:22:31  [L]> EFI_DECOMPRESS_PROTOCOL'D8117CFE-94A6-11D4-9A3A-0090273FC14D' (ProtocolPtr = 0x81BCB360) is found.
2023-04-25 10:22:31  [L]> EFI_LOADED_IMAGE_PROTOCOL'5B1B31A1-9562-11D2-8E3F-00A0C969723B' (ProtocolPtr = 0x8E5C5040) for current image (ImgHandle = 0x8E5C6718) is found.
2023-04-25 10:22:31  [L]> EFI_DEVICE_PATH_PROTOCOL'09576E91-6D3F-11D2-8E39-00A0C969723B' (ProtocolPtr = 0x8E7D2518) for current device (DevHandle = 0x8E7D2398) is found.
2023-04-25 10:22:31  [L]> EFI_SIMPLE_FILE_SYSTEM_PROTOCOL'964E5B22-6459-11D2-8E39-00A0C969723B' (ProtocolPtr = 0x8E7D0030) for current device (DevHandle = 0x8E7D2398) is found.
2023-04-25 10:22:31  [L]> Executable Directory 'HEWLETT-PACKARD\BIOSUpdate\'.
2023-04-25 10:22:31  [L]> Current Working Directory 'HEWLETT-PACKARD\BIOSUpdate\'.
2023-04-25 10:22:31  [W]> [FileIo.c:InitializeFileIO:353] Cannot get debug log path system environment variable 'DEBUGLOGPATH'. (Not Found)
2023-04-25 10:22:31  [L]> Initial Log File 'HEWLETT-PACKARD\BIOSUpdate\Debug.log'.
2023-04-25 10:22:35  [L]> Environment Variable 'HP_DTD_UEFI_LOG_TO_CONSOLE' Not Found. (Not Found)
2023-04-25 10:22:36  [L]> Environment Variable 'HP_DTD_UEFI_LOG_TO_DEBUGLOG' Not Found. (Not Found)
2023-04-25 10:22:37  [L]> Environment Variable 'HP_DTD_UEFI_PROMPT_TO_CONSOLE' Not Found. (Not Found)
2023-04-25 10:22:38  [L]> Environment Variable 'HP_DTD_UEFI_PROMPT_TO_DEBUGLOG' Not Found. (Not Found)
2023-04-25 10:22:39  [L]> Environment Variable 'HP_DTD_UEFI_ERROR_TO_CONSOLE' Not Found. (Not Found)
2023-04-25 10:22:39  [L]> Environment Variable 'HP_DTD_UEFI_ERROR_TO_DEBUGLOG' Not Found. (Not Found)
2023-04-25 10:22:40  [L]> Environment Variable 'HP_DTD_UEFI_WARN_TO_CONSOLE' Not Found. (Not Found)
2023-04-25 10:22:41  [L]> Environment Variable 'HP_DTD_UEFI_WARN_TO_DEBUGLOG' Not Found. (Not Found)
2023-04-25 10:22:42  [L]> Environment Variable 'HP_DTD_UEFI_DEBUG_TO_CONSOLE' Not Found. (Not Found)
2023-04-25 10:22:43  [L]> Environment Variable 'HP_DTD_UEFI_DEBUG_TO_DEBUGLOG' Not Found. (Not Found)
2023-04-25 10:22:44  [L]> StdErr is non-NULL, StdErr is used for Error/Warning message to console.
2023-04-25 10:22:45  [W]> [EfiUtilityLib.c:InitializeEfiUtilityLib:501] LocateProtocol(EFI_CPU_IO_PROTOCOL'B0732526-38C8-4B40-8877-61C7B06AAC45', NULL, 0x88008CC0) returned 'Not Found'.
2023-04-25 10:22:46  [L]> EFI_CPU_IO2_PROTOCOL'AD61F191-AE5F-4C0E-B9FA-E869D288C64F' (ProtocolPtr = 0x9DFA3A80) is found.
2023-04-25 10:22:46  [L]> EFI_UNICODE_COLLATION_PROTOCOL'1D85CD7F-F43D-11D2-9A0C-0090273FC14D' (ProtocolPtr = 0x9DE5E3D0) is found.
2023-04-25 10:22:47  [W]> [EfiUtilityLib.c:InitializeEfiUtilityLib:537] LocateProtocol(EFI_SHELL_ENVIRONMENT2'47C7B221-C42A-11D2-8E57-00A0C969723B', NULL, 0x88008CA8) returned 'Not Found'.
2023-04-25 10:22:48  [W]> [EfiUtilityLib.c:InitializeEfiUtilityLib:557] OpenProtocol(0x8E5C6718, EFI_SHELL_PARAMETERS_PROTOCOL'752F3136-4E16-4FDC-A22A-E5F46812F4CA', 0x88008CB0, 0x8E5C6718, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL) returned 'Unsupported'.

und Hewlett-Packard/BIOSUpdate/HpBiosUpdate.log:

2023-04-25 10:22:49  EFI HP BIOS Update 3.6.4.r31880 Started
2023-04-25 10:22:52  System ID: 85EA
2023-04-25 10:22:53  HP BIOS Image Interface Protocol Version 2.0
2023-04-25 10:22:54  [L]> EFI_HP_BATTERY_CONTROL_PROTOCOL_2010 is present.
2023-04-25 10:22:55  Found 1 Absolute Pointer Protocol(s)
2023-04-25 10:22:56  0 UART device path node found.
2023-04-25 10:22:57  All Required Protocols Located
2023-04-25 10:22:58  HpBiosUpdate.Mode = 4
2023-04-25 10:22:59  Current Directory = HEWLETT-PACKARD\BIOSUpdate\
2023-04-25 10:23:00  System ID: 85EA
2023-04-25 10:23:01  SMBIOS Init Success
2023-04-25 10:23:02  SystemFamily = 2
2023-04-25 10:23:03  PlatformLang reported as en-US.
2023-04-25 10:23:03  Language Selected is currently (eng).
2023-04-25 10:23:04  Starting BIOS Update Process
2023-04-25 10:23:05  Setting BIOS Update Token
2023-04-25 10:23:06  Getting BIOS Detail Information
2023-04-25 10:23:07  BIOS Returned BiosID '085EA'
2023-04-25 10:23:08  Loading BIOS Image
2023-04-25 10:23:09  File name constructed: Hewlett-Packard\BIOS\Current\085EA.bin
2023-04-25 10:23:11  Reading New BIOS Image Hewlett-Packard\BIOS\Current\085EA.bin
2023-04-25 10:23:11  Getting BIOS version from file image
2023-04-25 10:23:12  Bios Version = F.15
2023-04-25 10:23:13  Verifying AC or Battery Power Status
2023-04-25 10:23:14  Verifying Binary match
2023-04-25 10:23:15  Loading Signature File
2023-04-25 10:23:16  Failed Reading BIOS Signature File Hewlett-Packard\BIOS\Current\085EA.sig
2023-04-25 10:23:17  Failed Reading .sig file. (Not Found)
2023-04-25 10:23:20  Bios Verify Signature Success (Success)
2023-04-25 10:23:21  Loading Password File if required
2023-04-25 10:23:22  BIOS Password not required.
2023-04-25 10:23:22  Writing BIOS Image
2023-04-25 10:26:19  Verifying Written BIOS Image
2023-04-25 10:26:22  Skipping Verification Block 32 Address 0x0000000000020000 Size 0x0000000000001000
2023-04-25 10:26:23  Next BlockIndex 33, BlockAddress = 0x0000000000021000
2023-04-25 10:26:25  Skipping Verification Block 65 Address 0x0000000000041000 Size 0x0000000000064000
2023-04-25 10:26:25  Next BlockIndex 165, BlockAddress = 0x00000000000A5000
2023-04-25 10:26:29  Skipping Verification Block 292 Address 0x0000000000124000 Size 0x000000000005C000
2023-04-25 10:26:30  Next BlockIndex 384, BlockAddress = 0x0000000000180000
2023-04-25 10:27:01  Skipping Verification Block 2048 Address 0x0000000000800000 Size 0x0000000000001000
2023-04-25 10:27:01  Next BlockIndex 2049, BlockAddress = 0x0000000000801000
2023-04-25 10:27:03  Skipping Verification Block 2080 Address 0x0000000000820000 Size 0x0000000000001000
2023-04-25 10:27:04  Next BlockIndex 2081, BlockAddress = 0x0000000000821000
2023-04-25 10:27:05  Skipping Verification Block 2084 Address 0x0000000000824000 Size 0x00000000003EB000
2023-04-25 10:27:06  Next BlockIndex 3087, BlockAddress = 0x0000000000C0F000
2023-04-25 10:27:07  Skipping Verification Block 3092 Address 0x0000000000C14000 Size 0x00000000003EC000
2023-04-25 10:27:08  Next BlockIndex 4096, BlockAddress = 0x0000000001000000
2023-04-25 10:27:09  Updating BIOS files
2023-04-25 10:27:09  EfiBiosUpdateLibEntry(): Result is 0x0
2023-04-25 10:27:10  Setting Flash Completion Status
2023-04-25 10:27:11  BIOS Update Process Complete
2023-04-25 10:27:12  BIOS Update Successful

Dem lässt sich entnehmen, dass die Signature-Datei Hewlett-Packard\BIOS\Current\085EA.sig nicht gefunden wurde. Dennoch lief das Update durch. Mutmaßlich ist die Datei Hewlett-Packard/BIOS/Current/085EA.s12 diese Signaturdatei und diese muss lediglich in ./Hewlett-Packard/BIOS/Current/085EA.sig umbenannt werden, um diese Fehlermeldung zu verhindern. Andererseits hieß es nachher Bios Verify Signature Success (Success) und daraus lässt sich vermuten, dass die andere Dateiendung nicht das Problem war. In jedem Fall ein interessantes Experiment. Großartige Leistungsänderungen oder gar Leistungseinbußen wurden nicht verzeichnet.


Stichworte: , , , ,
Kategorien:


Kommentare

Keine Kommentare

Kommentare

Geben Sie Ihren Kommentar hier ein. * Eingabe erforderlich. Sie müssen die Vorschau vor dem Absenden ansehen.