Comments (16)
Hi, I have the same problem on X13 Gen 3. It looks like Lenovo is going to use another .exe file in the future but is not available in the BIOS packages I have checked so far. It would be nice if the Invoke-LenovoBIOSUpdate.ps1 could be updated to work with the new "WinPEuptp.exe" file (when Lenovo releases it).
from modernbiosmanagement.
We are encountering the same "issue" on Lenovo X1 Carbon Gen 10, is there any timeline for this issue to be addressed ?
From Lenovo forum: https://forums.lenovo.com/t5/Enterprise-Client-Management/Missing-WINUPTP64-exe-from-L14-T14-Gen-3-BIOS/m-p/5171737?page=1#5779523
"The latest version of the WINUPTP tool was given a modern user interface using WPF which unfortunately is not supported in WinPE. A new release of that tool has been made which will include a new file: WinPEuptp.exe. This file will work in a WinPE 64-bit environment. Normally the next release of a model's BIOS update will pick up the new tool and include the new file. We will look into when that will be for L14 and T14 and expedite if necessary."
Get latest bios from download site, your model is supported now.
Change your TS like below.
Make copy of lenovo bios script and rename like this.
Change for new lenovo bios script to use WinPEUPTP.exe
Make wmi queries in TS to use the old lenovo bios script and new lenovo bios script to update bios for the correct lenovo model.
from modernbiosmanagement.
I also ran into that link, bad from Lenovo they should inform in Readme file for bios file, that winuptp.exe wont work in Winpe. I have spend a few day to figure out the problem.
from modernbiosmanagement.
We are encountering the same "issue" on Lenovo X1 Carbon Gen 10, is there any timeline for this issue to be addressed ?
from modernbiosmanagement.
Thank you so much ! @Muri-dk
from modernbiosmanagement.
This issue can be easily resolved by making the modification to line 129 in the code as specified. No additional changes are required.
$WinUPTPUtility = Get-ChildItem -Path $Path -Filter "*.exe" -Recurse | Where-Object { $_.Name -like "WinUPTP64.exe" -or $_.Name -like "WINPEUPTP.EXE" } | Select-Object -First 1 -ExpandProperty FullName
from modernbiosmanagement.
Big thanks to Keniem for getting me on the right track, only issue with that simple solution is that it does not work in the live OS. So if you also use it to update already running machines it will fail.
Another issue is that the WinPE file is missing from most BIOS packages I've tried .. and have had a case with Lenovo support for a while now. Finally got the file today... but this issue is soooo F*****ing dumb, why even change the BIOS packages and why add the new winPE file sometimes .. other times just forget it... DUUUUMB!!
Anyhow, I've added a permanent fix to the script with a new switch -PXE that needs to be added to the TS for it to run in winPE mode and I've also added some more code so it will prefer the WinUPTP64(if it's there) when running in the live OS.
As you can see on the below image, you just add the -PXE switch to your windows installtion TS and just don't add it to the update TS if you use it.
So how to use the new modifications is rather easy.
- Replace old script(remove the _v2 from the file..)
- The WINPEUPTP.exe file just needs to be pasted into one of the new BIOS packages mysteriously missing it...(Thanks Lenovo...)
- Change your TS that installs windows so it has the -PXE switch in it.
- Done
If you use it and find any bugs, do let me know! I've moved this to production in my setup, as did not find anything out of order.
I've uploaded the changed script and the WINPEUPTP file as a zip so everyone can still run in winPE, I take no credit for the script... but who knows when there will be an official fix.
Invoke-LenovoBIOSUpdate_V2.zip
from modernbiosmanagement.
Big thanks to Keniem for getting me on the right track, only issue with that simple solution is that it does not work in the live OS. So if you also use it to update already running machines it will fail.
Another issue is that the WinPE file is missing from most BIOS packages I've tried .. and have had a case with Lenovo support for a while now. Finally got the file today... but this issue is soooo F*****ing dumb, why even change the BIOS packages and why add the new winPE file sometimes .. other times just forget it... DUUUUMB!!
Anyhow, I've added a permanent fix to the script with a new switch -PXE that needs to be added to the TS for it to run in winPE mode and I've also added some more code so it will prefer the WinUPTP64(if it's there) when running in the live OS.
As you can see on the below image, you just add the -PXE switch to your windows installtion TS and just don't add it to the update TS if you use it.
So how to use the new modifications is rather easy.
1. Replace old script(remove the _v2 from the file..) 2. The WINPEUPTP.exe file just needs to be pasted into one of the new BIOS packages mysteriously missing it...(Thanks Lenovo...) 3. Change your TS that installs windows so it has the -PXE switch in it. 4. Done
If you use it and find any bugs, do let me know! I've moved this to production in my setup, as did not find anything out of order. I've uploaded the changed script and the WINPEUPTP file as a zip so everyone can still run in winPE, I take no credit for the script... but who knows when there will be an official fix. Invoke-LenovoBIOSUpdate_V2.zip
Hello,
Thanks for sharing 👍
I got error when using your fix (WinPEUPTP error code -1) when i'm trying to update bios on T14 Gen 3 (Intel Processor).
I launch the update step after The partition Step.
Any idea ?
from modernbiosmanagement.
Can you send a screen of the Invoke-lenovoBIOSupdate step? I think you're either missing the parameter or might be a typo.
Also I usually run mine after the Drivers(after windows has been applied) but before the config manager installs and restarts. So still WinPE
from modernbiosmanagement.
This is the parameters : -PXE -Path '%ASPackageLocation01%'
Should I put the Update BIOS step elsewhere like this ?
from modernbiosmanagement.
Have you changed the previous script to spit out %ASPackageLocation01% as a value? Also I think your issue might be the " '' " around your variable.
from modernbiosmanagement.
As a side note, I have mine after the Drivers yes. No reason not to. It needs to reboot soon after anyhow. So less reboots overall.
from modernbiosmanagement.
Don't know why i'm getting exitcode -1 from winPEuptp process.
The BIOS Update step was run Before "Installation of Drivers" Step and After "Applying Windows Image"
The value of %ASPackageLocation01% seems correct.
I will try with that this afternoon :
"BIOS Update" step run after "Drivers" Step
from modernbiosmanagement.
Oh I tought you were getting the -1 error code from powershell in the TS. If it's from the actual BIOS log it's usually means the BIOS is already up to date.
But it looks like the script is working. There's a lot of custom stuff going on in your TS not standard to the MSendpoint documentation.. so I don't really know about the variables and the custom download script you got going :(
Normally you would have Invoke-CMDownloadBIOSPackage.ps1 checking through the SCCM for BIOS packages and then returning 1 package, then adding the path to the %OSDBIOSPackage01% variable.
As you're running something 100% custom I can't really say what might go wrong, but I would check if the BIOS even needs updating on the machine you're trying to test on :)
from modernbiosmanagement.
You were right .... The machine has already the lastest bios version :/ Dummy LENOVO, there is multiple BIOS Type for 1 modele ...
from modernbiosmanagement.
Just a quick update, found some wierd inconsitancy with older gen 2 BIOS upgrades in PXE... not sure why, but it seems to get stuck. So I made an update.. not pretty put it works. It now looks for WinUPTP64.exe before explicitly choosing witch BIOS format to use, the new or the old.
This has fixed the getting stuck issue for me :) let me know if anyone finds any other issues.. as it seems we won't be getting any official fixes...
Invoke-LenovoBIOSUpdate_V3.zip
from modernbiosmanagement.
Related Issues (20)
- Script 'bails out' when multiple packages are added to the BIOS package list HOT 11
- -BareMetal deployment on dell fails "This script is supported on Dell, Lenovo and HP systems only at this point, bailing out"
- bios version comparaison not exact
- Support for multiple BIOS passwords HOT 2
- HP BIOS Update Failing
- Invoke-CMDownloadBIOSPackage - Multiple matches problem HOT 1
- Getting error code 1 when running Invoke-CMDownloadBIOSPackage.ps1 HOT 2
- Get-ItemPropertyValue : Property XMLURL does not exist at path HKEY_LOCAL_MACHINE\SOFTWARE\MSEndpointMgr\DriverAutomationTool.
- LENOVO BIOS packages are not downloading - [Error] - Unable to find extract command HOT 5
- Detects TS is running in WinPE when it's not HOT 1
- Lenovo BIOS date in DriverAutomationTool packages don't match installed BIOS date HOT 1
- Reboot variable not set HOT 2
- HP BIOS exe problems extracting HOT 2
- multiple package sorting doesn't work HOT 1
- January 2021 versions are not being downloaded
- Invoke-DellBiosupdate.ps1 causes TS to freeze HOT 4
- Unable to determine a matching BIOS package from list since an unsupported count was returned from package list HOT 2
- ModernBIOSManagement HOT 13
- Lenovo BIOS part is looking in wrong variable for description Invoke-CMDownloadBIOSPackage.ps1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from modernbiosmanagement.