MSEndpointMgr / ConfigMgr

Microsoft Endpoint Configuration Manager scripts and tools
633 stars 281 forks source link

Error when updating HP BIOS #129

Closed trev2000 closed 5 years ago

trev2000 commented 5 years ago

Hi Im getting the following error when trying to update HP BIOS on various models both as a bare metal build and withing the OS. I believe i have followed the guide correct my task sequence steps are as follows image

Parameters 1st step of the task sequence is as follows image

2nd Step of the TS is image

The error in the task sequence log is as follows image

Believe the above is all correct any guidance or suggestions to try would be appreciated. We only have HP models so unable to test on other devices

Many thank is advance

10Toes commented 5 years ago

Mine dies at the same place yours is but is only happening with the HP 800 series 35w Desktop Mini PC. All are other HP models are updating the BIOS without an issue. I'm using 2.0.7 Invoke-CMDownloadBIOSPackage.ps1 and 1.7.0 ConfigMgr WebService.

Ginolard commented 5 years ago

I think this might be caused by the fact that some older models (in our case 2570p) do not use the HPBIOSUPDREC.exe. Instead they still use HPQFLASH.

The BIOS Update script expects to find HPBIOSUPDREC/HPBIOSUPDREC64 executable

10Toes commented 5 years ago

The model machine I'm having an issue with uses the HPBIOSUPDREC/64.exe.
The ApplyBIOSPackage.log ends here

image

It will normally have all the info on what version it will be flashing with after that line.

image

Ginolard commented 5 years ago

Yeah, looks like you are having the same issue that I've been having. It doesn't parse the version number of the BIOS correctly. I'm not sure why he chose to do it the way he did. I modified the script to make work for us. Maybe it will work for you.

In the Invoke-CMDownloadBIOSPackage script, you need to replace the entire Switch statement in the Compare-BIOSVersion function with this.

You can see I've added some logic to handle the REALLY old HP BIOS versioning that used the F.XX format (yeah - we have some VERY old laptops....)

        switch -wildcard ($($CurrentBIOSProperties.SMBIOSBIOSVersion)) {

"ver" { $RealCurrentBIOSVersion = ($CurrentBIOSProperties.SMBIOSBIOSVersion -split "Ver.")[1].Trim() If ($RealCurrentBIOSVersion -like "F.") { $AvailableBIOSVersion = "00." + $AvailableBIOSVersion.Split(".")[1] $CurrentBIOSVersion = "00." + $RealCurrentBIOSVersion.Split(".")[1] } Else { $CurrentBIOSVersion = $RealCurrentBIOSVersion

                }

} default { $CurrentBIOSVersion = "$($CurrentBIOSProperties.SystemBiosMajorVersion).$($CurrentBIOSProperties.SystemBiosMinorVersion)" } }

On Mon, 29 Apr 2019 at 15:35, 10Toes notifications@github.com wrote:

The model machine I'm having an issue with uses the HPBIOSUPDREC/64.exe. The ApplyBIOSPackage.log ends here

[image: image] https://user-images.githubusercontent.com/50030385/56899428-08931000-6a59-11e9-90a7-e671383cc5b8.png

It will normally have all the info on what version it will be flashing with after that line.

[image: image] https://user-images.githubusercontent.com/50030385/56899667-a1299000-6a59-11e9-809c-d87a26b1be64.png

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/SCConfigMgr/ConfigMgr/issues/129#issuecomment-487582038, or mute the thread https://github.com/notifications/unsubscribe-auth/ACD4K5ERHQ7IJOLUQI3X7P3PS32TFANCNFSM4HD2VYTQ .

NickolajA commented 5 years ago

Invoke-HPBIOSUpdate.ps1 now has a fix for the HPQFlash.exe and HPQFlash64.exe. As for the BIOS version matching, let me get back about that.

NickolajA commented 5 years ago

We've asked HP for a full list of possible BIOS version standards and will update the script in order to support them all once we know what to look for.

NickolajA commented 5 years ago

See fix from this issue that will be implemented in an upcoming version. #113