Jump to content

Intel HID Event Filter driver with modded ACPI Windows 7.


Jakob99

Recommended Posts

I installed Windows 7 to a Dell Precision 7530 with 8th Gen Coffee Lake, but to do so, I had to mod ACPI.sys to get past A5 BSOD. Unfortunately, this causes the Intel HID Event Filter driver to throw a 7E BSOD when I try to install it (after it reboots, everything is fine, but no driver) even though it works fine under 8.1 (which did not need a modded ACPI file). Without this, the Intel Serial IO drivers throw a code 31 error and the touchpad doesn't work. I would appreciate it if anybody figured out a way to get the Intel HID Event Filter Driver to install sans 7E BSOD when you have modded ACPI.

Link to comment
Share on other sites

  • 3 months later...

I may be closer to solving this problem! It appears that the issue is this: https://winraid.level1techs.com/t/win-7-64-not-working-touchpad/94960/19?u=moline

I can gather that the check on this laptop checks if you have Windows 8.1 or above, and if you do, the touchpad will be enabled and allow successful installation of the HID Event Filter Driver, and thus, the Serial IO drivers. If you have Windows 7, the check will fail and disable the touchpad entirely, meaning Windows 7 won't know it exists, and one of two things will happen when you try to install the HID Event Filter driver: 1. The setup.exe will tell you your computer doesn't meet the requirements (This computer does not meet the minimum requirements for installing this software), which is expected as the OS, and thus the app, do not know that the touchpad exists, or 2. you get a 7E BSOD with IntelHidEventFilter.sys identified in the stop screen when you try to install it over a HID driver from an external device, like USB Wireless Mouse.

To fix it, the following will need to be done: https://winraid.level1techs.com/t/win-7-64-not-working-touchpad/94960/33?u=moline

I'm still working on deciphering this. Basically, if the DSDT table is extracted, we can modify the check so that Windows 7 will pass and allow the touchpad to be seen within the OS, and allow it to function after installing the aforementioned drivers. The way to do this is commonly used for Hackintosh installs as Macintosh will fail the check no matter the version, meaning you'd have to edit the check so that Darwin (Macintosh) pass and allow the touchpad to work under it; since I'm not dealing with Hackintosh, we just have to adapt the tutorial for Windows use.

I'll report back later.

Link to comment
Share on other sites

10 hours ago, Jakob99 said:

I may be closer to solving this problem! It appears that the issue is this: https://winraid.level1techs.com/t/win-7-64-not-working-touchpad/94960/19?u=moline

I can gather that the check on this laptop checks if you have Windows 8.1 or above, and if you do, the touchpad will be enabled and allow successful installation of the HID Event Filter Driver, and thus, the Serial IO drivers. If you have Windows 7, the check will fail and disable the touchpad entirely, meaning Windows 7 won't know it exists, and one of two things will happen when you try to install the HID Event Filter driver: 1. The setup.exe will tell you your computer doesn't meet the requirements (This computer does not meet the minimum requirements for installing this software), which is expected as the OS, and thus the app, do not know that the touchpad exists, or 2. you get a 7E BSOD with IntelHidEventFilter.sys identified in the stop screen when you try to install it over a HID driver from an external device, like USB Wireless Mouse.

To fix it, the following will need to be done: https://winraid.level1techs.com/t/win-7-64-not-working-touchpad/94960/33?u=moline

I'm still working on deciphering this. Basically, if the DSDT table is extracted, we can modify the check so that Windows 7 will pass and allow the touchpad to be seen within the OS, and allow it to function after installing the aforementioned drivers. The way to do this is commonly used for Hackintosh installs as Macintosh will fail the check no matter the version, meaning you'd have to edit the check so that Darwin (Macintosh) pass and allow the touchpad to work under it; since I'm not dealing with Hackintosh, we just have to adapt the tutorial for Windows use.

I'll report back later.

Dump your ACPI tables with acpidump from iASL and send them in a zip. Changing _OSI values to allow unsupported OSes is easy enough. Then the modified table will have to be injected with something like OpenCore which can be used for Windows as well.

Link to comment
Share on other sites

  • 3 weeks later...
On 6/24/2023 at 6:41 AM, ExtremeXT said:

Dump your ACPI tables with acpidump from iASL and send them in a zip. Changing _OSI values to allow unsupported OSes is easy enough. Then the modified table will have to be injected with something like OpenCore which can be used for Windows as well.

Sorry for the late response. Got sidetracked by the 4th of July holiday. Anyhow, I have uploaded the ACPI table (dsdt.dsl and dsdt.aml) here: http://windowsenthusiasts1.epizy.com/Downloads/dsdt.zip

There were dumped from the Windows 11 install on the same laptop (as opposed to the Windows 7 installation), but I see no reason these shouldn't work. If, for some reason, you need them dumped from the 7 install, please do let me know and I will do so.

EDIT: If you get a "File not downloaded, potential security risk" message when downloading this, just ignore it and allow the download to continue. Idk if Chrome will throw this error, but Firefox can/will.

Edited by Jakob99
Link to comment
Share on other sites

23 hours ago, Jakob99 said:

EDIT: If you get a "File not downloaded, potential security risk" message when downloading this, just ignore it and allow the download to continue. Idk if Chrome will throw this error, but Firefox can/will.

Hello, on my testing with downloading this file Chrome and Firefox, I didn't get that error message when downloading it on Chrome nor Firefox.

Link to comment
Share on other sites

5 hours ago, mina7601 said:

Hello, on my testing with downloading this file Chrome and Firefox, I didn't get that error message when downloading it on Chrome nor Firefox.

Great! Idk why mine threw the message then.

Link to comment
Share on other sites

There's a DSDT & SSDT editor (IDE) on Github for this purpose:
https://github.com/ic005k/Xiasl (block it in the firewall to prevent its Internet check)

Another older DSDT Editor:
http://web.archive.org/web/20161108180259if_/http://olarila.com/dsdt/DSDTEditor_Linux_Windows.zip

You should then be able to edit your SSDT/DSDT and load patched versions using a boot-time loader:
https://github.com/jslegendre/ACPIPatcher

Or you can also use Clover, OpenCore, or other loader of choice.

Some quick tips:

  • CondRefOf function is also used to verify the return of _OSI
  • "Windows 2009" is Windows 7 & "Windows 2013" is Windows 8.1
  • Lookup "If (_OSI" or "If ((_OSI" to quickly locate the blocks that have a system check
  • WIN7 is a constant that cans also be searched
  • ACOS & ACSE variables seem to matter, they have to also be modified
  • OSYS is the variable that gets checked the most in the OS installed locks
  • Vista is named with the WLG constant
  • There's a DRS3 variable but only set for Windows 10 RS3 & later

I made a patched version of your DSDT that makes Windows 2006 & 2009 (Vista & 7) behave as if it was Windows 8.1 (2013).

It also returns Windows 8.1's OSYS value for Vista & 7 which will be able to unlock more ACPI objects.
https://www.udrop.com/Kn0y/dsdt-patched.zip (md5: 4d22eb9bedc63efb618aaeef84ffb9db)

Try using the normal version and if any problem then the 'no-optimization' one.

I also compiled GeorgeK1ng's version of NTOSKRNL_Emu incase you need to mod the Intel HID driver.
https://www.udrop.com/Kn0H/NTOSKRNL_Emu-GeorgeK1ng-version.zip (md5: a054a8ba9d05e587f3ac0f409d9e25e5)

dsdt-patched.zip NTOSKRNL_Emu-GeorgeK1ng-version.zip

Link to comment
Share on other sites

On 7/19/2023 at 1:19 PM, kar1 said:

There's a DSDT & SSDT editor (IDE) on Github for this purpose:
https://github.com/ic005k/Xiasl (block it in the firewall to prevent its Internet check)

Another older DSDT Editor:
http://web.archive.org/web/20161108180259if_/http://olarila.com/dsdt/DSDTEditor_Linux_Windows.zip

You should then be able to edit your SSDT/DSDT and load patched versions using a boot-time loader:
https://github.com/jslegendre/ACPIPatcher

Or you can also use Clover, OpenCore, or other loader of choice.

Some quick tips:

  • CondRefOf function is also used to verify the return of _OSI
  • "Windows 2009" is Windows 7 & "Windows 2013" is Windows 8.1
  • Lookup "If (_OSI" or "If ((_OSI" to quickly locate the blocks that have a system check
  • WIN7 is a constant that cans also be searched
  • ACOS & ACSE variables seem to matter, they have to also be modified
  • OSYS is the variable that gets checked the most in the OS installed locks
  • Vista is named with the WLG constant
  • There's a DRS3 variable but only set for Windows 10 RS3 & later

I made a patched version of your DSDT that makes Windows 2006 & 2009 (Vista & 7) behave as if it was Windows 8.1 (2013).

It also returns Windows 8.1's OSYS value for Vista & 7 which will be able to unlock more ACPI objects.
https://www.udrop.com/Kn0y/dsdt-patched.zip (md5: 4d22eb9bedc63efb618aaeef84ffb9db)

Try using the normal version and if any problem then the 'no-optimization' one.

I also compiled GeorgeK1ng's version of NTOSKRNL_Emu incase you need to mod the Intel HID driver.
https://www.udrop.com/Kn0H/NTOSKRNL_Emu-GeorgeK1ng-version.zip (md5: a054a8ba9d05e587f3ac0f409d9e25e5)

dsdt-patched.zip 423.82 kB · 1 download NTOSKRNL_Emu-GeorgeK1ng-version.zip 83.56 kB · 1 download

Hi! I tried your modded DSDT table. The Intel HID Event Filter driver now shows up as an Unknown Device within Device Manager, however, I still get the 0x07E BSOD when attempting to install the driver. This happened with Snappy Driver Install, as well as the official Intel installer (which no longer throws "This computer does not meet the minimum requirements" when launching it). Below is what should be BSOD logs as well as the Intel driver, which is unmodded as it already supports my device and Windows 7 (as nothing has changed with the device from Skylake to 8th Gen Coffee Lake). And yes, I even tried the GeorgeKing thing, and no changes :(

BSOD logs: https://www.mediafire.com/file/l9cpkpm0adh1k4c/73BSODEVENTFILTER.zip/file

Intel HID Event Filter driver, unmodded: https://www.mediafire.com/file/7y8y4i36t71qtqr/HIDEventFilterDriver-1.1.1.318-Windows_RS1_Certified.zip/file

Any help on figuring out why the driver still BSOD's even after using your modded DSDT is greatly appreciated!

Edited by Jakob99
Link to comment
Share on other sites

I looked it up deeper and the driver fails to load likely because of the lack of a KB3125574 Windows update:
https://www.catalog.update.microsoft.com/Search.aspx?q=KB3125574

This update brings a WdfLdr.sys driver that the Intel HID Event Filter relies on.
However it should work without the KB3125574 update by taking it from a Windows 8.1 system.

I took your Intel HID Event Filter drivers and modified them, the list is as follows:

  • Removed all invalid INF comment prefixes // and replaced them with ; instead
  • Added my compiled ntoskrn8.sys & WdfLdr.sys from Windows 8.1 to the INF files section
  • For HidEventFilter.sys & WdfLdr.sys I modified the EXE/SYS file headers to use MajorVersion 6 & MinorVersion 1
    Because it was MajorVersion 10 & MinorVersion 0 (6.1 vs. 10.0 for Win10)
  • Modified the import filename in both HidEventFilter.sys & WdfLdr.sys from ntoskrnl.exe to ntoskrn8.sys
  • Modified the __security_cookie in both SYS files & bypassed the security cookie check in driver code as well
  • Removed the Security Directory information from EXE/SYS headers for both HidEventFilter.sys & WdfLdr.sys
  • Updated all the EXE/SYS file checksums in the headers for all files
  • Created a new unsigned HidEventFilter.cat file with '6.1' OS attribute (verifies all .sys files & the .inf file)
  • Included dpinst64.exe from Microsoft (version 2009 for Windows 7 64-bit)

Prior to installing the modified drivers, you need to remove all the previous Intel HID Event Filter drivers with DriverStore Explorer:
- https://github.com/lostindark/DriverStoreExplorer

This allows for removing old drivers that otherwise get reinstalled again instead of the newest modified drivers.

The modified Intel HID Event Filter drivers (version 3):
- https://www.udrop.com/KopH/HidEventFilter-Win7-testing-3.zip (md5: 765c950f421cd7a9b7a353e8e980487c)

For the 0x0000007E BSOD error code, it doesn't actually mean much other than 'Windows had a trouble while running this program/driver'.
It's a generic Windows error code rather than one that actually gets sent by the Intel HID Event Filter itself.

Try the modified version after having removed all previous ones with DriverStore Explorer, I think it should work.

You can also enable testsigning & easily self-sign the drivers yourself with Driver Signature Enforcement Overrider:
https://www.softpedia.com/get/Tweak/Video-Tweak/Driver-Signature-Enforcement-Overrider.shtml

Just sign the HidEventFilter.cat file only if needed.

 

HidEventFilter-Win7-testing-3.zip

Edited by kar1
INF file verified again & corrected all install errors, improved driver package.
Link to comment
Share on other sites

13 hours ago, kar1 said:

I looked it up deeper and the driver fails to load likely because of the lack of a KB3125574 Windows update:
https://www.catalog.update.microsoft.com/Search.aspx?q=KB3125574

This update brings a WdfLdr.sys driver that the Intel HID Event Filter relies on.
However it should work without the KB3125574 update by taking it from a Windows 8.1 system.

I took your Intel HID Event Filter drivers and modified them, the list is as follows:

  • Removed all invalid INF comment prefixes // and replaced them with ; instead
  • Added my compiled ntoskrn8.sys & WdfLdr.sys from Windows 8.1 to the INF files section
  • For HidEventFilter.sys & WdfLdr.sys I modified the EXE/SYS file headers to use MajorVersion 6 & MinorVersion 1
    Because it was MajorVersion 10 & MinorVersion 0 (6.1 vs. 10.0 for Win10)
  • Modified the import filename in both HidEventFilter.sys & WdfLdr.sys from ntoskrnl.exe to ntoskrn8.sys
  • Modified the __security_cookie in both SYS files & bypassed the security cookie check in driver code as well
  • Removed the Security Directory information from EXE/SYS headers for both HidEventFilter.sys & WdfLdr.sys
  • Updated all the EXE/SYS file checksums in the headers for all files
  • Created a new unsigned HidEventFilter.cat file with '6.1' OS attribute (verifies all .sys files & the .inf file)
  • Included dpinst64.exe from Microsoft (version 2009 for Windows 7 64-bit)

Prior to installing the modified drivers, you need to remove all the previous Intel HID Event Filter drivers with DriverStore Explorer:
- https://github.com/lostindark/DriverStoreExplorer

This allows for removing old drivers that otherwise get reinstalled again instead of the newest modified drivers.

The modified Intel HID Event Filter drivers (version 3):
- https://www.udrop.com/KopH/HidEventFilter-Win7-testing-3.zip (md5: 765c950f421cd7a9b7a353e8e980487c)

For the 0x0000007E BSOD error code, it doesn't actually mean much other than 'Windows had a trouble while running this program/driver'.
It's a generic Windows error code rather than one that actually gets sent by the Intel HID Event Filter itself.

Try the modified version after having removed all previous ones with DriverStore Explorer, I think it should work.

You can also enable testsigning & easily self-sign the drivers yourself with Driver Signature Enforcement Overrider:
https://www.softpedia.com/get/Tweak/Video-Tweak/Driver-Signature-Enforcement-Overrider.shtml

Just sign the HidEventFilter.cat file only if needed.

 

HidEventFilter-Win7-testing-3.zip 397.69 kB · 0 downloads

Alright, so I tried your driver, and Intel HID Event Filter driver installs successfully with no error! Unfortunately, the touchpad still does not work as the Intel Serial IO drivers do not want to install. I tried the ones here https://www.mediafire.com/file/23np1m85w5za00a/Serial_IO_7th_Gen%2B_Win_7.zip/file but when I install them, I get a Code 31 error (Windows cannot load the driver for this hardware) or whatever that error is called. These are Skylake Serial IO drivers modded to include my 8th Gen Serial IO. Idk why this Windows 7 Skylake Serial IO driver isn't working as the Windows 8.1 Skylake drivers I modded work just fine under 8.1, so theoretically, the linked drivers should work, too! This should be the last hurdle in getting the touchpad to work under 7. I appreciate anyone's help in getting those drivers to work without producing a Code 31 error.

 

EDIT: PCI\VEN_8086&DEV_A368&SUBSYS_08311028&REV_10 and PCI\VEN_8086&DEV_A369&SUBSYS_08311028&REV_10 (Intel Serial IO A368 and A369). Forgot to include my Device ID's for reference.

Edited by Jakob99
Link to comment
Share on other sites

It's potentially normal behavior that the modified Skylake Intel Serial IO driver of Windows 7 didn't work because of the modded DSDT.
I'm just making a guess about the DSDT & this Intel Serial IO error code 31, but it might very well really be because of this.

On Windows 8.1 the driver might already behave correctly with a DSDT that returns the "Windows 2013" profile.
In this case it's a matter of manually adding the missing HWIDs as you did, and it should work.

But if the driver runs on Windows 7 and the DSDT returns a "Windows 2013" profile, the driver will still try to run as if it was "Windows 2009".
It's best to use a Windows 8.1 Intel Serial IO driver, and it needs to initially be intended for Windows 8.1.

If the Intel Serial IO driver doesn't care about Windows 7, then it will directly use the proper code for your DSDT's "Windows 2013" profile.
Then it's just a matter of modifying the Windows 8.1 Serial IO driver to work on Windows 7 anyway.

I found a Windows 10 driver that already supports PCI\VEN_8086&DEV_A368 & PCI\VEN_8086&DEV_A369 natively (very early version from 2017).
There's also a Windows 8.1 driver that doesn't directly support these HWIDs but it comes with PDB files (debug symbols).

I'm going to sort these out to select the best one for Windows 7 backporting, it shouldn't take very long.

Another note is that MediaFire blocked your download link because of DMCA.

MediaFire really seems to dislike the upload of Intel driver files (it's not the first time this happens).
MEGA.nz also sometimes blocks Intel driver downloads.

Next time you will need to password-protect driver uploads with any archiver of choice that supports .7z or .rar format.
Use the 'encrypt filenames' option & put any password such as 'driver'.

You can also name the file 'Outtel Serial IO 7th Gen+ Win 7' if needed, or any other 'Intel' wordplay of choice.

Edited by kar1
Added MediaFire comment
Link to comment
Share on other sites

I managed to create a modified Intel Serial IO driver that installs without problem, although it required more drivers to be modified first:
https://www.udrop.com/KoWZ/Intel_Serial_IO_A368___A369-Win7-testing.rar (md5: e1a87e992db972e867e8710d69c1bc4f)

It needs to be tested since I don't have a real Intel Serial IO hardware to try, so one thing you can do is:

  • Shutdown your main Windows 7 OS
  • Boot from a WinPE and backup to USB all the registry hives of your Windows 7 OS in C:\Windows\System32\config
    This includes all .LOG, .LOG2, .BAK etc files (they're cached transaction logs that are waiting to be written for real).
  • Boot your main Windows 7 OS again

This way if you have any problem with the drivers, you can easily do a Registry-only restore with the backups.
You can also do a full system partition backup prior to installing the drivers if you wish.

The install order that needs to be followed is:

  • Remove all previous versions of the iaLPSS2_I2C driver with DriverStore Explorer:
    https://github.com/lostindark/DriverStoreExplorer
  • Select ACPIEx.inf and right-click it, then use the "Install" menu item
  • Select SpbCx.inf and right-click it, then use the "Install" menu item
  • Reboot
  • Run dpinst64.exe in the 'Intel Serial IO' folder or it install manually with the Device Manager (devmgmt.msc)
  • Reboot

If needed, you can also install the included 'MS HID I2C' driver after Intel Serial IO.

Sign only the .cat files if needed.

Intel Serial IO A368 & A369-Win7-testing.rar

Link to comment
Share on other sites

@Jakob99 The ACPIEx.sys driver when I tried it myself didn't run at boot because it has no HWID to bind itself to.
I don't know which HWID it's supposed to be installed for on a real Windows 8.1 system (e.g. ACPI_HAL\PNP0C08).

Can you boot your computer into a Windows 8.1 or newer WinPE and share screenshots of the Device Manager's ACPI x64-based PC device?
It will also help to share more screenshots about a System Device named 'System board' from the Device Manager.

It's for the 'Parent' property and potentially some other device properties.

But in any case, I think the only remaining part to be modified for the ACPIEx driver is the ACPIEx.inf file.
If it gets correctly rewritten with a real Windows 8.1 HWID for ACPi, then the SpbCx driver will be able to run.

And since Intel Serial IO drivers require the SpbCx driver as a dependency, this will make them work too.

Link to comment
Share on other sites

3 hours ago, kar1 said:

@Jakob99 The ACPIEx.sys driver when I tried it myself didn't run at boot because it has no HWID to bind itself to.
I don't know which HWID it's supposed to be installed for on a real Windows 8.1 system (e.g. ACPI_HAL\PNP0C08).

Can you boot your computer into a Windows 8.1 or newer WinPE and share screenshots of the Device Manager's ACPI x64-based PC device?
It will also help to share more screenshots about a System Device named 'System board' from the Device Manager.

It's for the 'Parent' property and potentially some other device properties.

But in any case, I think the only remaining part to be modified for the ACPIEx driver is the ACPIEx.inf file.
If it gets correctly rewritten with a real Windows 8.1 HWID for ACPi, then the SpbCx driver will be able to run.

And since Intel Serial IO drivers require the SpbCx driver as a dependency, this will make them work too.

I got a Code 37 (Windows cannot initialize the device driver for this hardware) upon installing your Serial IO drivers. I followed the steps in the provided ReadMe, too.

I found this Device ID in Windows 11's Device Manager (found by clicking on Serial IO A369, Details, and Parent): ACPI\PNP0A08\0, but idk if it's the correct one for ACPIex. If it's not, what would ACPIex be known as in the Device Manager?

Edited by Jakob99
Link to comment
Share on other sites

Here is the Computer tab opened up. The "Dell Inc. Precision 7530" driver does not show up under 8.1 or 7 (and nothing is affected by its absence on the former and latter). I am not seeing a device called "System Board" under System Devices unfortunately.

ACPI.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...