Windows 7 doesn't show devices that Windows 8.1 and 10 do on my Kaby Lake laptop

First time poster here! I’ve been lurking for a while, and figured you folks might be knowledgeable enough to try and find the cause of my issue.
I have a HP 15-ay105np laptop with an Intel Core i7 7500U and when I install Windows 7, it just simply doesn’t show two important drivers in Device Manager: Realtek Bluetooth and the HP Wireless Button drivers:

w7.PNG


On the other hand, Windows 8.1 and Windows 7 show those devices just fine!

w10.PNG


I think this might have something to do with HID or I2C devices… not sure. Of course in the HP website it only displays Windows 10 drivers.
I was wondering if you know why this is happening and if there’s any way to solve it.
Thanks for the attention

Here are the Hardware IDs of the missing devices:
HP Wireless Button: ACPI\VEN_HPQ&DEV_6001
Wireless Compatible Controls with HID(?): ACPI\VEN_HPQ&DEV_6001*
Realtek Bluetooth 4.0 Adapter: USB\VID_0BDA&PID_B008&REV_0200

*in portuguese its: “Controlos de rádio sem fios compatíveis com HID”

@the_soft45 :
Welcome to the Win-RAID Forum!
The Device Manager usually doesn’t show all devices, which were recognized while booting.
To see all devices, you have to hit onto the “View” tab of the Menu bar and to choose the option “Show hidden devices”.
Regards
Dieter (alias Fernando)


Thanks for the advice, but all it did was show a few non Plug and Play pre installed devices and services and nothing else. I can’t find a trace of either Bluetooth or the HP Wireless button devices.

Edit: What device manager showed after:

@the_soft45 :
The Device Management of all Windows Operating Systems detects all connected devices, but the devices themselves may be listed within different Device Manager sections and with different names.
I do not believe your suspicion, that Windows 7 doesn’t detect devices, which are definitively connected with the mainboard. Even Windows XP detects modern hardware and shows them as “Unknown devices”, but cannot handle them.

I’ve used DevCon.exe from the Windows Driver Kit to enumerate all of the HW IDs of my laptop on Windows 7, and it just simply doesn’t show the devices I mentioned above…
By comparison, running the same tool on Windows 10 shows everything.
I’m booting Windows 7 from a VHD within Windows 10, BTW, but that doesn’t affect anything.
I’ll provide the txt with all of the devices generated by DevCon in the attachments.

hwids_7.txt (31.6 KB)

hwids_10.txt (60.6 KB)

@the_soft45 :
Do the not shown devices work or not?


Hiding devices from OS is ok with notebooks:
- Vendors write own programs for permanent enable/disable radio devices
- Depending on OS these disabled device may not disappear completely from device manager

For example my lenovo (bios designed for win8) has special "energy power managment software", after installing it i can disable wi-fi or bluetooth module on USB bus (notebook has no physical buttons to control these devices). If devices are off, winxp and win7 do not see their, but win8 and win10 still see bluetooth module as USB/VID_105B&PID_E065 (BCM43142 from broadcomm)

@Fernando as far as I can tell, the devices do not work on W7
@Mov_AX_0xDEAD I think the Bluetooth functionality is software controlled, not hardware in this laptop’s case…
I enabled Bluetooth on Windows 10 and rebooted into Windows 7 and nothing.


can you upload bios ?
i think HP does some tricks with ACPI\VEN_HPQ&DEV_6001 in acpi tables

Sure. I’ll leave a link to it. It’s the latest one (updated 9th November) and the BIOS files are inside the executable (you can open it with 7-ZIP or similar).
https://mega.nz/#!Vh5RnSaY!rVXvFmkrX7zGO…q1A96B0t_v1QmvQ

seems binary bios files inside are crypted/protected, no usual efi rom image

@Mov_AX_0xDEAD
I only linked to the version HP offers on their website. It there any way to decrypt it?


yes, i run InsydeFlash.exe and select "copy bios files" and get encrypted roms )

i found something about acpi\HPQ6001 in dsdt table:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Scope (_SB)
{
Device (WLBU)
{
Name (_HID, EisaId ("HPQ6001")) // _HID: Hardware ID
Name (PRSN, 0xFF)
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((PRSN == 0xFF))
{
Local0 = Zero
^^PCI0._INI ()
If ((OSYS >= 0x07DC))
{
Local0 = 0x0F
}
 
PRSN = Local0
}
 
Return (PRSN) /* \_SB_.WLBU.PRSN */
}
 
 

_STA - method STATUS
wlbu - wireless button (?)
PRSN - persistence (?)
OSYS >= 0x07DC mean OS Windows 8+/Win Server 2012+
in case win7(and low) method _STA return PRSN=Local0=Zero, this mean device is not present for OS

I think HP disabled the device because it didn’t want to write drivers for win7, the existing driver for win 10 x64 won’t work, it’s compiled for the new ntoskrnl.exe.
EDIT: But x32 variant may works on win7, but you need patch dsdt table. As i know in checked/debug version of windows 7 exist available to override acpi table by loading binary from registry

@Mov_AX_0xDEAD
Wow, incredible discoveries… I actually found a driver for the HP Wireless Button driver dating all the way back in 2012… maybe that one would work.
BTW, any luck finding the Realtek Bluetooth HWID in there, to see if it’s blocked aswell?


i think realtek controlled by EC (embedded controller, separate chip to control keyboard/touchpad/power/peritherals)

full chain as i understand: custom software(HP Radio Manager) -> wirelessbuttondriver (access to acpi/hpq6001) -> acpi bytecode change some bits in memory/run EC’s methods->EC physical enable/disable devices on i2c/usb/sm bus. maybe in acpi stage we trigger some code from BIOSs.
and somewhere is stored settings about status of devices, because they store in NV memory (cmos/bios/ec ?)

@Mov_AX_0xDEAD
So… what would I need to do to activate those devices on W7? Install the debug/checked version of it? I do have access to that version, if needed.

The HP Wireless Button driver controls Airplane Mode on laptops without a dedicated WiFi On/Off button. It turns F12 into that button. Airplane Mode isn’t supported on W7.


1) decompile dsdt binary to text DSL
2) change 4 lines:
If ((OSYS >= 0x07DC))
{
Local0 = 0x0F
}
to one line:
Local0 = 0x0F

3) compile back to binary
4) replace binary in bios (too danger!)
or
5) use clover bootloader to override dsdt binary(i hope clover allow run not only MacOs X)
or)
6) replace acpi.sys with checked version. search internet how to force load dsdt table from registry (not much info in public, i know tables stored in \HKLM\System\CurrentControlSet\Services\ACPI\Parameters, need key "Action" with some value).

The BIOS option seems interesting, but for testing purposes I should probably try the clover method…
How would I go about to decompile and recompile the DSDT binary? If I’m only changing that specific piece of code there shouldn’t be too much harm in it, no?