Help Needed: Breaking Change with Drivers #350
Replies: 7 comments 27 replies
-
|
Hello! I tested the new driver mapping version, but still there are a lot of Intel updates available for installation after installing the FFU on a laptop. I think the driver mapping is correct and at least I had network drivers during the OOBE (in order to do Autopilot pre-provisioning). In the UI settings I disabled "Install drivers in the FFU", is there any chance this is why all the Intel drivers weren't installed? In any case it's a much faster imaging process, will check for the next FFU builder updates! |
Beta Was this translation helpful? Give feedback.
-
|
Hi, we have issues with two models so far, where some downloads fail. Additionally FFU does not detect the drivers for "HP Elitebook 830 G9" although it was included and the folder exists: |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for verification, G10 works fine now, G7 still fails. Maybe a HP mirror server issue. |
Beta Was this translation helpful? Give feedback.
-
|
I'm pretty new to FFU and had just run into issues with the drivers not applying properly for some of our HP desktops. I was so happy to see this post. I applied the latest code zip above on 12/23. It worked perfectly for the HP EliteDesk 800 G3 SFF that I was testing with. The only minor issue I had was with models that use multiple IDs. One example is our HP EliteBook 840 G8s. I've found three IDs for that model in our environment (880d, 8ab3, 8ab8). FFU Builder downloads pretty much the same thing for all of them. One difference is the 8ab3 pack didn't include AMD or Nvidia graphics drivers. I manually modified the jsons to point to the same WIM for testing, but as soon as I clicked Build FFU, it reverted my json and downloaded them all again. I COULD ignore it all, but if I add any more models, I'm going to need a larger USB drive. |
Beta Was this translation helpful? Give feedback.
-
|
Not having any luck with automatic driver matching for at least 2 Surface models: 2038 and 2103. I know I can manually modify the DriverMapping.json file, but I expected it to work out of the box. I added ALL Surface drivers to the USB via 2511.1Preview UI. Attaching the ScriptLog.txt for 2038 and will attach for 2103 shortly. Edit: DriverMapping.json file for reference (auto-generated, not manually edited) |
Beta Was this translation helpful? Give feedback.
-
|
I've been testing on our Dell Latitude laptops with v2601.1Preview. The only issue so far is on a Latitude 5410, where the deployment does not complete because a driver fails to inject. Looking at issue #345, this does not appear to be the expected behavior when injecting from the USB drive. Here's the log file: |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.





Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Prior to releasing 2511.1Preview, I need some help testing the commits that I'm syncing today. It's a big one with about a month's worth of commits, primarily dealing with changes to drivers.
The TLDR is that I need people to help with testing driver downloads and the automatic driver mapping as my HP and Dell devices have aged out. I've tested Lenovo. Surface should still work as there shouldn't have been any changes there.
If you don't use git to sync the UI_2510 branch, download the latest code.
Driver Mapping Changes
The
DriverMapping.jsonfile andApplyFFU.ps1file have undergone some major changes. While the model name mapping worked in most cases, there were still some issues with both how vendors store their names in WMI and how model names are written in the various places I retrieve them (HP Image Assistant, Dell Command Update, Lenovo System Update - Surface is just from the Surface website, so it's fairly straightforward).ApplyFFU.ps1now relies onSystemID(HP and Dell), or MachineType (Lenovo) values and grabs those values from WMI. In order to use those values, I also had to get those values. I had MachineType already for Lenovo, but for HP and Dell I wasn't using them from their XML files. So what you'll find now in theDriverMapping.jsonfile areSystemIDandMachineType.Here's an example of the new
DriverMapping.jsonformat. Notice theSystemIdandMachineTypeproperties. Surface doesn't have this as this hasn't become a problem (and yes, I'm aware of System SKU - may introduce this in the future, but wanted to get HP and Dell done first)If you use an older DriverMapping.json file with the new code, it's likely to break. You'll need to use the new format.
This means you'll also need to know where to find the SystemId for Dell and HP in the BIOS/UEFI.
For HP, either under Main or System Information (it's going to be different depending on the model) you're looking for the System Board ID and it should be a four-character code.
Via PowerShell -
(Get-CimInstance -Namespace 'root\WMI' -Class MS_SystemInformation).BaseboardProductFor Dell, I'm not sure if it's possible to get the System ID from the BIOS/UEFI. I seem to recall in some BIOS screenshots that System SKU is listed in some BIOS/UEFI implementations, but it may not be consistent.
Via PowerShell you can run -
(Get-CIMInstance -ClassName "MS_SystemInformation" -NameSpace "root\WMI").SystemSkuorThanks to the MSEndPointMgr folks and Johan for the pointers - https://github.com/MSEndpointMgr/ModernDriverManagement/blob/master/Invoke-CMApplyDriverPackage.ps1
Dell and HP Driver changes
In switching to using the SystemID for both HP and Dell, you'll see a lot more models for each
Here are the Dell Models

And the HP Models

~1600 Dell and ~900 HP devices. The model list also has the SystemID in parenthesis at the end of the model name.
The model names come directly from the XML files (productList.xml for HP; CatalogIndexPC.xml for Dell).
Dell has a lot of room for improvement (these are the nicest words I could possibly type) when it comes to consistency, which makes parsing their XML data pretty frustrating. So if you notice some really long and really short model names, those names are coming directly from their XML data (commas and slashes included!). There's further cleanup that can be done, but for now I think things work pretty well when downloading.
In most cases you should notice smaller driver packages for Dell devices. One of the issues I had with CatalogPC.xml was dealing with model numbers that are used across different brand names (e.g. Latitude, Inspiron, etc). CatalogIndexPC.xml kind of solves for this in that it provides a cab file to download for each systemID, but they don't do a good job in cleaning up the XML of the cab file, so you end up with a XML file that has a lot of old, outdated drivers in it. There's code that filters older drivers out, however you'll probably notice multiple video drivers per model download (e.g. multiple nvidia or AMD drivers; it's expected to have a single Intel and a single nvidia or AMD driver due to having an integrated and dedicated GPU). If you see this behavior, I'm aware and have tried a number of things to solve for it. This comes down to inconsistencies in their driver information in the XML files. I'll come back to this at some point to see if there's a better way to solve for it, but for now you can either remove the video drivers you don't need, or can manually download the drivers you want from Dell and bypass what I'm doing.
Let me know if you see any issues with Dell/HP drivers as these have undergone the most significant changes (in a good way).
Driver folder structure on the USB drive
Since the beginning, my guidance has been to put your drivers in model folders underneath the Drivers folder on the deploy partition of the USB drive (e.g.
D:\Drivers\Lenovo 300w).This worked well in the early days when we were doing a handful of devices and driver downloads via the BuildFFUVM.ps1 script were for a single model.
Now that the UI and BuildFFUVM.ps1 script have evolved to being able to download multiple models at a time, the Drivers folder needs better structure.
The new structure is
Drivers\Make\Model(e.g.D:\Drivers\Lenovo\Lenovo 300w). This structure is consistent with how the UI and BuildFFUVM.ps1 script download and store drivers and automatically copy them. So if you've been following that, then no changes are required. But for those of you who have been manually copying your drivers to the USB drive and using the oldD:\Drivers\<Model>format, you'll notice that when manually selecting the drivers to install from the menu during deployment that it shows the subfolders within your model folder. For example:To fix this, just make sure use the
Drivers\Make\Modelfolder structure.Skip drivers when manually selecting drivers
You can now type 0 or just enter without selecting drivers to bypass driver installation (as per the screenshot above)
BITS Priority Setting in Build Tab
You can now set the BITS Priority (default is Normal) in the Build tab. This will set a new parameter named BitsPriority in the script. Prior, BITS downloads were done in Foreground since priority wasn't specified. Changing this to Normal actually caused an issue where parallel driver downloads stopped working since when not in Foreground priority BITS downloads happen sequentially. This meant that downloading multiple driver models went significantly slower.
So if you want downloads to happen really fast, set the BITS priority to Foreground. If you need to be a good network user, set them to Normal/High/Low.
HTTP Fallback for BITS Downloads as Standard User
As a standard user elevating PowerShell as admin, BITS downloads will now fail once and then fallback to HTTP. This works around the errors people were having when signed in as a standard user.
Those are the big changes. Let me know if things work or don't. Sorry for potentially breaking current processes, but these changes should help moving forward.
If you don't use git to sync the UI_2510 branch, download the latest code.
I plan to publish the 2511.1Preview Release first week of December.
Beta Was this translation helpful? Give feedback.
All reactions