Modifying older drivers to support newer video card releases?

dderidex

Supreme [H]ardness
Joined
Oct 31, 2001
Messages
6,328
I recall back in the day modifying a driver or two, to add lines to its .inf allowing support of a video card that was released after the driver was. Either my memory is getting worse, or the 'how' of this has changed a lot, as I'm drawing a blank on trying that, now.

Specifically, I'm running a Radeon 6600xt and want to use it for Folding @ Home. Only, AMD has a driver bug past the 21.3.2 drivers which cuts Folding performance down massively. So advice on the Folding forums is 'just roll back to 21.3.2 for AMD cards!' Great, except...the 6600xt didn't exist in retail channels at the time the 21.3.2 driver was out, so it isn't in the drivers as a supported card.

I'd suspect it should work with the drivers - the card was certainly being tested at the time the driver was the latest official release (the card only came out a month or so later) - but not sure how to modify the driver file to see that possibility...if it's possible at all, that is.
 
find the .inf file for the driver for Windows, the version that you are trying to make work, and open it with notepad. (If you need to do this for Linux, I don't know how to do that). If it's just an .exe file, go into c:\Users\<your user name>\appdata\temp\ first, and delete everything it will let you delete. Just skip anything in-use. Once its mostly cleaned up, it will make finding the extracted driver easier. Keep this folder open, and run the .exe, then look in temp for a new folder. Once found, copy it out to another location to use as a working directory. Once you find the extracted driver files, search for .INF files.
Look for a section heading similar to:
[INTEL.NTamd64]
look at the existing lines
%PCI\VEN_8086&DEV_1C00.DeviceDesc%=pciide_Inst,PCI\VEN_8086&DEV_1C00

Copy one of the lines so we can keep the syntax, but enter your cards' DEV numbers. there may be a SUBSYS number also, just follow the pattern of the lines already in the file. You can find your card's DEV number from device manager - select the newer card, right-click, properties - Details tab - from the drop down list, look at both "Device Instance path" and "Hardware IDs" to see which is displaying something that most closely resembles the existing entries in the INF. Either should contain the information needed.

So lets say for example, the above line was an existing line in the INF, but you are seeing that the new card is a device 1C07. Your newly added line would look like:
%PCI\VEN_8086&DEV_1C07.DeviceDesc%=pciide_Inst,PCI\VEN_8086&DEV_1C07

Next, Look for the section:
[Strings]
PCI\VEN_8086&DEV_1C00.DeviceDesc="Intel(R) 6 Series/C200 Series Chipset Family 4 port Serial ATA Storage Controller - 1C00"
this is the description that will be shown in Device manager for your card. same as above, copy one of the existing lines, update the description with the model number, and update the DEV number in each location using your cards' number.

Example:
PCI\VEN_8086&DEV_1C07.DeviceDesc="Intel(R) 7 Series/C200 Series Chipset Family 8 port Serial ATA Storage Controller - 1C07"

You should do a text search in the INF for the device id of one of the existing devices, example 1C00, to make sure there are not any other sections that you need to duplicate with the newer card's device id 1C07. There are different ways the INF file can be written. As long as you duplicate everything with your cards device ID, Windows will think the driver is for your hardware.
Save the INF file, then try installing the new card, then use this hacked inf for the driver. You can even install the modified INF ahead of the hardware. If this exact driver is already installed, you might want to modify the DriverVer= line in the INF, bump the last digit by 1, and the date by 1 day, so that windows interprets it as a newer driver.

If the card is too new, this method will not work, and your OS might bluescreen. Be sure you have an older video card handy in case you need to swap back to something else to get into the OS to remove the hacked driver. You might even need to reinstall the OS, so be prepared just in case it goes sideways.
In regards to AMD GPU's, as long as the driver you wants to use supports something that is RDNA2 or whatever the 6800xt is, this hack will probably work. If the older driver you want to use only supported say GCN based GPU's, then this probably will not work.

If you need to remove the driver, if you can get into windows with a different card, go into device manager, set it to "Show hidden devices" which will show all drivers present, even for missing hardware. Find the new item description you put in the INF, and remove the device. You should also remove the customized INF from C:\Windows\INF chances are it will be named OEM123.inf (oem, followed by a number). Sort the folder by date, it will be the most recent one with either the date/timestamp of the customized INF, or with the date/time that the driver was installed. Open the suspected file in Notepad to verify it was the one you edited. Once confirmed, delete the file, along with the same named .PNF file. Reboot, you are back where you started.

Let me know if it works.
 
Last edited:
find the .inf file for the driver for Windows, the version that you are trying to make work, and open it with notepad. (If you need to do this for Linux, I don't know how to do that). If it's just an .exe file, go into c:\Users\<your user name>\appdata\temp\ first, and delete everything it will let you delete. Just skip anything in-use. Once its mostly cleaned up, it will make finding the extracted driver easier. Keep this folder open, and run the .exe, then look in temp for a new folder. Once found, copy it out to another location to use as a working directory. Once you find the extracted driver files, search for .INF files.
Look for a section heading similar to:
[INTEL.NTamd64]
look at the existing lines
%PCI\VEN_8086&DEV_1C00.DeviceDesc%=pciide_Inst,PCI\VEN_8086&DEV_1C00

Copy one of the lines so we can keep the syntax, but enter your cards' DEV numbers. there may be a SUBSYS number also, just follow the pattern of the lines already in the file. You can find your card's DEV number from device manager - select the newer card, right-click, properties - Details tab - from the drop down list, look at both "Device Instance path" and "Hardware IDs" to see which is displaying something that most closely resembles the existing entries in the INF. Either should contain the information needed.

So lets say for example, the above line was an existing line in the INF, but you are seeing that the new card is a device 1C07. Your newly added line would look like:
%PCI\VEN_8086&DEV_1C07.DeviceDesc%=pciide_Inst,PCI\VEN_8086&DEV_1C07

Next, Look for the section:
[Strings]
PCI\VEN_8086&DEV_1C00.DeviceDesc="Intel(R) 6 Series/C200 Series Chipset Family 4 port Serial ATA Storage Controller - 1C00"
this is the description that will be shown in Device manager for your card. same as above, copy one of the existing lines, update the description with the model number, and update the DEV number in each location using your cards' number.

Example:
PCI\VEN_8086&DEV_1C07.DeviceDesc="Intel(R) 7 Series/C200 Series Chipset Family 8 port Serial ATA Storage Controller - 1C07"

You should do a text search in the INF for the device id of one of the existing devices, example 1C00, to make sure there are not any other sections that you need to duplicate with the newer card's device id 1C07. There are different ways the INF file can be written. As long as you duplicate everything with your cards device ID, Windows will think the driver is for your hardware.
Save the INF file, then try installing the new card, then use this hacked inf for the driver. You can even install the modified INF ahead of the hardware. If this exact driver is already installed, you might want to modify the DriverVer= line in the INF, bump the last digit by 1, and the date by 1 day, so that windows interprets it as a newer driver.

If the card is too new, this method will not work, and your OS might bluescreen. Be sure you have an older video card handy in case you need to swap back to something else to get into the OS to remove the hacked driver. You might even need to reinstall the OS, so be prepared just in case it goes sideways.
In regards to AMD GPU's, as long as the driver you wants to use supports something that is RDNA2 or whatever the 6800xt is, this hack will probably work. If the older driver you want to use only supported say GCN based GPU's, then this probably will not work.

If you need to remove the driver, if you can get into windows with a different card, go into device manager, set it to "Show hidden devices" which will show all drivers present, even for missing hardware. Find the new item description you put in the INF, and remove the device. You should also remove the customized INF from C:\Windows\INF chances are it will be named OEM123.inf (oem, followed by a number). Sort the folder by date, it will be the most recent one with either the date/timestamp of the customized INF, or with the date/time that the driver was installed. Open the suspected file in Notepad to verify it was the one you edited. Once confirmed, delete the file, along with the same named .PNF file. Reboot, you are back where you started.

Let me know if it works.

Hmmm - promising start, as I was able to find much of that and work with it. Having the card in the newer drivers works a treat in giving me sections to verify after copy over.

Obviously have to bypass the non-WHQL message, but still - an error I haven't seen before. "The hash for the file is not present in the specified catalog file. The file is likely corrupt or the victim of tampering."

Google search on that phrase suggests this is a policy thing, so tried "BCDEDIT /set nointegritychecks ON"...to no effect. Hmmmm. May have to tinker some more...

:(
 
mobility modifier is still around, it might work for this but ive only ever used it to add gpus to current drivers.
 
I recall back in the day modifying a driver or two, to add lines to its .inf allowing support of a video card that was released after the driver was. Either my memory is getting worse, or the 'how' of this has changed a lot, as I'm drawing a blank on trying that, now.

Specifically, I'm running a Radeon 6600xt and want to use it for Folding @ Home. Only, AMD has a driver bug past the 21.3.2 drivers which cuts Folding performance down massively. So advice on the Folding forums is 'just roll back to 21.3.2 for AMD cards!' Great, except...the 6600xt didn't exist in retail channels at the time the 21.3.2 driver was out, so it isn't in the drivers as a supported card.

I'd suspect it should work with the drivers - the card was certainly being tested at the time the driver was the latest official release (the card only came out a month or so later) - but not sure how to modify the driver file to see that possibility...if it's possible at all, that is.
Are you sure the bug affects the 6600XT? I mean....does it seem to have relatively low folding performance? And.....is that unusual?----because Navi 2 has relatively less emphasis on GPU compute, compared to Polaris and Vega.
 
So as an update...the special boot option 'Disable driver signing enforcement' did the trick, and allowed me to install the modified drivers. Unfortunately...they do not work. Windows seems to think they are okay, no errors reported, just...no desktop, the display keeps switching on and off until reboot. Safe mode works, boot screen works, just...full-resolution Windows desktop? Nope. I guess navi23 is just too different from navi22 to work.

Are you sure the bug affects the 6600XT? I mean....does it seem to have relatively low folding performance? And.....is that unusual?----because Navi 2 has relatively less emphasis on GPU compute, compared to Polaris and Vega.

That's a fair question - I'd assume it must do, as folding performance on this card is...well...terrible. In games, ballpark performance of this card puts in line with a GeForce 3060. Now, I have no illusions it would come close to that Folding, as nVidia is both better focused on compute, and the recent CUDA optimizations of F @ H are reported to make a significant (20%-ish?) difference. Still, I'd expect them to be...vaguely comparable.

Yet the 6600xt I have 'upgraded' to struggles to get 800k ppd. The GeForce 1650 I had was pulling 650k ppd easily in the same system. For less than half the power, nevermind comparative cost.

No 3060 for me to personally compare with, as if you could buy those, THAT is what would be in my system instead of the 6600xt.

Still, Folding.lar.systems reporting appears to show a similarly-extreme disparity:
Geforce 3060: ~1.8 million ppd (https://folding.lar.systems/gpu_ppd/brands/nvidia/folding_profile/ga106_geforce_rtx_3060)
Radeon 6600xt: ~770k ppd (https://folding.lar.systems/gpu_ppd/brands/amd/folding_profile/navi_23_radeon_rx_66006600_xt6600m) - as noted above, that's about what I get on it myself

I'd have expected a 30-50% (?) performance advantage to the 3060, sure. But...234%?? That's gotta be a driver issue...

For others using other Navi (21/22) Radeon cards for folding, they have reported drivers beyond 21.3.2 cut their Folding performance in half. If that is true of the 6600xt, as well, then I should be getting (doubling my current numbers) about 1.5 million ppd? Still a strong advantage to the nVidia 3060, but more in line with expected differences than I'm seeing.

So...tl;dr -> I dunno? Probably, I think?
 
Last edited:
On a hunch - wondered if just the OpenCL components of the older driver might be the issue, so copied the 5 OpenCL files from the 21.3.2 driver into the newer driver folder. Felt like a long shot - installs fine, but F @ H is all:
Code:
*********************** Log Started 2021-10-18T19:41:08Z ***********************
19:41:08:WARNING:FS01:No CUDA or OpenCL 1.2+ support detected for GPU slot 01: gpu:3:0 Navi 23 [Radeon RX 6600/6600 XT/6600M].  Disabling.
19:45:01:FS01:Paused
 
Back
Top