Closed kernel-dev closed 2 years ago
Since when was RAM detection on windows, or mac, OR ANYWHERE IN THIS CASE?
@Apethesis please use the latest version of this application.
Update on this issue: we've finally found a shred of hope with determining interface type for each device, especially important for laptops - trackpad, touchpad & keyboard.
It would appear that we are able to run the following command: Get-WmiObject -Class Win32_SystemDriver | Select-Object -Property *
, from where we can see, let's use I2C HID as an example:
We can notice that State
is equal to Running
, meanwhile, on a PC without I2C HID devices, it would look something like:
The state here is equal to Stopped
; this is what we will be seeking out when detecting the type of interface for these devices. This will only be applied for touchpads, trackpads and keyboards for laptops.
We've also been able to accumulate a short list of the driver names:
i8042prt.sys
- PS/2;hidi2c.sys
- I2C HID;All in all, it is looking pretty good so far!
Thanks to 1Revenger1 and DhinakG, who have immensely assisted us in relation to detecting protocols used for each HID device, we've managed to pinpoint a method that is relatively reliable for distinguishing such devices.
The method they've guided us to goes as follows:
PnPEntity
instance of the aforementioned device;DEVPKEY_Device_DriverInfPath
;DEVPKEY_Device_Service
i8042prt
- PS/2;hidi2c
- HID over I²C; I²C;mouhid
, kbdhid
, HidUsb
- USB*.inf
files, it should go as follows:
i8042prt.inf
- PS/2;hidi2c.inf
- HID over I²C; I²C;msmouse.inf
, keyboard.inf
, input.inf
- USBSynaptics
or Elans
in the device's (not PnPEntity
) name. The best way to go about this is to check if it includes the aforementioned keywords in its name, and to see if the SMBus controller exists. We also need to check if the SMBus driver's name has been renamed, since that will guarantee that the device is over SMBus. Here is a short version that should be a mockup of the aforementioned method mentioned:
Massive amounts of gratitude goes over to the following individuals, for all of their help with this:
There are a few features lacking on Linux platforms, most notably:
Block device detection (storage devices);Solved: #13Memory (RAM) module detection;Solved: https://github.com/iabtw/OCSysInfo/commit/64aa1bdf1f9b1b169aa94dea8a8f200ce7f0be16These aren't core features, besides the optimization, but they'd be nice to implement, so the information extracted is consistent, structure-wise; with a little bit of spid.
There's one feature that's lacking in Windows, and it's only complimentary to Input device detection:
Precise "interface type" of each device (SMBus, PS2, I2C, HID, etc.)Solved with https://github.com/kernelBPD/OCSysInfo/commit/a0667d86be34b51af92f5120f3862cc0744de054 and https://github.com/kernelBPD/OCSysInfo/commit/d59f2932086f52d23847767d6e2e1eaee5fc66edThat's basically all for now. I'm simply putting this issue here so that each user is aware that we know it's missing. But we simply need time, and possibly help, to implement all these features.
However, @rvstry has taken it upon themselves to attempt to implement block device detection for Linux platforms, and to optimize the hardware discovery part. In the situation that they do, I will update this issue accordingly.