Commit Graph
561 Commits
Author SHA1 Message Date
BlacktempelandPhyxionNL 9e831e07b2 Update for DiskInfoToolkit Version 2.0.0. (#2298)
* Update for DiskInfoToolkit Version 2.0.0.

* PR comments

* PR comments.

* Apply suggestion from @PhyxionNL

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-04-06 19:26:02 +02:00
MadLongTom 9d9bb0084b Fix NCT6687DR fan control for system fans (index 9–15) (#2294)
* Add NCT6687DR fan control support with bit mapping and configuration phase handling

* NCT6687DR: emulate CC_Engine SetManualFAN protocol

- System fans (index > 8): skip manual mode bit (0xA00), use flat SmartFAN curve instead
- Change commit value from 0x40 to 0xC0 (REQ|DONE) matching CC_Engine
- Write 7-point temp curve (all 0x20/32C) alongside duty curve for system fans
- Add Sleep(10ms) after request (0x80) and commit (0xC0) per CC_Engine timing
- Restore: only clear manual mode bit for CPU/Pump/Chipset/EZ-Connect fans

* NCT6687DR: add INVALID bit check with retry after EC commit

- FinishFanCfgUpdate now returns bool: false if EC sets INVALID (0xCF8 & 0x10)
- SetControl and RestoreDefaultFanControl retry up to 3 times on INVALID
- Matches CC_Engine's post-commit validation behavior

* fix(NCT6687DR): bypass SmartFAN engine for system fans — use direct PWM

System fans (SYSFAN1-7) now use the same direct PWM mechanism as
CPU/Pump/Chipset fans, completely bypassing the SmartFAN curve engine
and its inherent ~2%/sec PWM smoothing.

Key changes:
- FAN_PWM_COMMAND_REG: system fans now point to direct PWM registers
  (SYSFAN7: 08:E9, SYSFAN1-6: 02:65..02:60) instead of SmartFAN
  curve base addresses (0xBE0..0xC70)
- FAN_CONTROL_MODE_REG: system fans use 08:0F (not 0xA00) for their
  manual-mode enable bits
- FAN_CONTROL_MODE_BIT: corrected per-channel bit positions derived
  from BIOS unk_104C0 table (sub_2F50 / sub_2BDC analysis)
- Set6687DRControl: simplified to single WriteByte for all fans
  (no more 7-point flat curve + step/rate writes)
- SetControl: unified path — all fans set manual-mode bit + direct PWM
- RestoreDefaultFanControl: clear manual-mode bit to return to SmartFAN

Register mapping discovered via IDA analysis of BIOS firmware:
- Extended unk_101E0 table at 0x103AC contains channels 10-15
- sub_2BDC configures 5 register operations per channel before curve write
- Entry[1] in unk_104C0 = manual-mode enable register + bit position

* review: Stopwatch, engineSts rename, CompleteFanConfigUpdate

* refactor: PreciseWait via SpinWait, DateTime to Stopwatch in ReadByte/WriteByte

* review: remove regions, revert PreciseWait to Thread.Sleep
2026-04-02 14:21:13 +02:00
Stephen Horvath 4058577277 Sensors on older Intel Framework Laptops (#2284)
* Add missing Framework Desktop

* PawnIO: Update LpcCrOSEC.bin

* Revert "Remove early Framework models"

This reverts commit 6d8326c56b15a655eb7a8f2c129176797a29786e.

* Add suspected Chromebook model
2026-03-20 12:03:24 +01:00
Blacktempel 0db3cc8e15 Add MSI B860 mainboard handling (NCT6687D-R). (#2281) 2026-03-19 13:14:54 +01:00
BlacktempelandPhyxionNL 1a5a11b12e Handle driver restart for NVIDIA GPUs (#2255)
* Handle driver restart for NVIDIA GPUs.

* PR review

* Update NvidiaGroup.cs

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-03-15 11:03:28 +01:00
Blacktempel 44d3263b27 Support new firmware and fix possible freeze. (#2261) 2026-03-09 12:52:11 +01:00
Blacktempel 273b47b462 Fix build for Linux (#2257)
* Fix build for Linux.

* Fix Linux runtime issues.

* PR review + fix for Windows.
2026-03-05 14:09:21 +01:00
Blacktempel a0392ad4fc Add StorageDevice.ForceWakeup property. (#2252) 2026-03-02 19:16:01 +01:00
Blacktempel f5479cdbf0 Update DiskInfoToolkit & add Force Drive Wakeup option (#2245)
* Update DiskInfoToolkit.
Add option for Force Drive Wakeup.

* Change default value

* Replace name
2026-02-27 16:26:30 +01:00
Rémi Mercier e4566effd3 ROG Crosshair X870E Dark Hero (#2242)
T-Sensor support
2026-02-27 14:26:04 +01:00
Aytaç KayadelenandAytackydln e6cd6ccc74 Save Sensor.Identifier in field (#2236)
Co-authored-by: Aytackydln <aytac.kayadelen@gmail.com>
2026-02-23 11:29:06 +01:00
Blacktempel 3473a3bfd4 Add Control sensor for WVP2. (#2234)
* Add Control sensor for WVP2.

* Rename control sensor & assign control properly.
2026-02-20 12:20:06 +01:00
Blacktempel 7d94dfe265 Add Control sensor for MSI. (#2235) 2026-02-20 12:19:45 +01:00
Blacktempel 315a767fa0 Fix same memory for different GPUs. (#2232)
* Fix same memory for different GPUs.

* Status check
2026-02-19 16:21:49 +01:00
kyranmcdonnellandCursor 9158b5ac75 Add IGCL telemetry sensors (temperature, clock, voltage) for Intel integrated GPUs (#2218)
* fix: skip integrated GPU in IGCL enumeration to prevent duplicate hardware entries

IGCL's ctlEnumerateDevices returns all Intel graphics devices including
the integrated GPU, but IntelDiscreteGpu was created for every device
without filtering. This caused the iGPU to appear twice: once from the
IGCL path (as IntelDiscreteGpu) and once from the D3D path (as
IntelIntegratedGpu), with overlapping sensors.

Check the CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED flag on each device's
graphics_adapter_properties and skip integrated adapters, since they are
already handled by IntelIntegratedGpu via D3D enumeration.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: add IGCL-based telemetry sensors for Intel integrated GPUs

Use Intel Graphics Control Library (IGCL) to expose temperature, clock
frequency, and voltage sensors for the integrated GPU via the safe
user-mode ctlPowerTelemetryGet API. Each sensor is only activated if
the driver reports it as supported, so this degrades gracefully on
hardware/drivers that don't expose specific telemetry items.

This mirrors the approach already used by IntelDiscreteGpu, bringing
parity between discrete and integrated Intel GPU monitoring.

Depends on: fix/intel-igpu-deduplication

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-14 12:10:25 +01:00
kyranmcdonnellandCursor 1564a69c52 fix: skip integrated GPU in IGCL enumeration to prevent duplicate hardware entries (#2217)
IGCL's ctlEnumerateDevices returns all Intel graphics devices including
the integrated GPU, but IntelDiscreteGpu was created for every device
without filtering. This caused the iGPU to appear twice: once from the
IGCL path (as IntelDiscreteGpu) and once from the D3D path (as
IntelIntegratedGpu), with overlapping sensors.

Check the CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED flag on each device's
graphics_adapter_properties and skip integrated adapters, since they are
already handled by IntelIntegratedGpu via D3D enumeration.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 18:16:37 +01:00
Blacktempel e2e0d1c9ad Updates for TG WVP2 (#2215)
* Implement Fan control for TG WVP2.
Calculate approximate fan speed.

Catch two exceptions.
Remove leftover close in ReadConfig.

* Support for multi device detection

* Add more data to report

* Add group for power monitors and remove from GenericGpu.

* Move files.
Add option for Power Monitor in Computer + UI.
2026-02-13 18:15:24 +01:00
Alcolawl d8a41b3313 Foundational support for all MSI B840/B850, X870(E), and Z890 Motherboards (#2216)
* Add support for MSI MAG B850 Tomahawk Wifi (non-max) using NCT6687DR Controller

* Handle MSI NCT6687DR SIO Controller declaration more elegantly

This is a more powerful yet elegant way of handling MSI motherboards with the MSI flavored Nuvoton NCT6687D (aka NCT6687D-R). While it still requires that support be manually added for each motherboard so it be properly identified, this reduces the amount of work to add support and also reduces the amount of clutter in LpcIO.cs.

* Add support for MSI MEG X870E ACE MAX

* Foundational support for ALL MSI B840/B850, X870(E), and Z890 Motherboards!

Assigns all MSI B840, B850, X870, X870E and Z890 motherboards the NCT6687D-R SIO Controller

* Remove MSI B850 GAMING PLUS WIFI6E NCT6687D handling

* Used more stringent comparison criteria for MSI 800 series NCT6687DR identification
2026-02-13 18:13:20 +01:00
aureopvhandPhyxionNL 0af63c9be5 Slight refactor for ARCTIC Fan Controller (#2205)
* Slight refactor

* Update fan and control sensor naming format

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-02-11 12:42:48 +01:00
Blacktempel 9af84004a5 Add MSI controller for AIOs. (#2207)
* Add MSI controller for AIOs.
Fan RPM read, thermal sensor & fan control.

* PR comments & rename controller.

* PR review

* PR review

* PR review
2026-02-11 12:39:29 +01:00
Alcolawl 24e76153eb Add support for MSI MAG B850 Tomahawk Wifi (non-max) using NCT6687DR Controller (#2199) 2026-02-06 12:54:53 +01:00
Blacktempel 16c1e49501 Add JAF Fan for Godlike Max & fix Pump Fan 2 (#2194)
* Add JAF Fan for Godlike Max & fix Pump Fan 2.

* Update JAF Fan name according to MSI doc.
2026-02-04 11:25:03 +01:00
Blacktempel cdb0c65b4c TG WireView Pro 2: Changes for firmware update (#2193)
* Changes for firmware update.

* Undo SharedSerialPort.Open signature change.
2026-02-03 11:46:37 +01:00
Blacktempel 541926c757 Add detection for MSI MAG B850 Tomahawk Wifi. (#2191)
Handle two mainboards for NCT6687D with fan mapping for newer models.
2026-02-02 16:32:38 +01:00
AlcolawlandPhyxionNL 0b42635cf6 Add support for MSI PRO B850M-A Project Zero (#2190)
* Support for 10 new MSI motherboards with NCT6687D-R SIO controller

* Support for newly established fan and control register structure

WILL ABSOLUTELY BREAK FAN CONTROL CONFIGS FOR NCT6687DR USERS. This introduces Support for 16 System Fans and Controls, including EZ-Connect, Pump Fan 2, and System Fan 7. Also improved the logic for nct6687dr control.

* Add support for X870E Tomahawk WIFI, fix B850 Gaming Plus WIFI PZ identification

Additionally sync with upstream

* Add support for B850M Gaming Plus WIFI and Z890 Unify-X

Also removes duplicate model identification case for B850M GAMING PLUS WIFI6E

* Rename temperature sensor to proper name for X870E Carbon Wifi and GODLIKE motherboards

* Add support for MSI PRO B850M-A Project Zero (MS-7E78)

* Rename 'T_Sensor' to 'Temperature Sensor' for clarity

* T Sensor > Temperature Sensor

* Rename Temperature Sensors to Thermistor Sensors

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-02-02 15:40:09 +01:00
WiktorandPhyxionNL 2423b1b7f1 Fix ASUS Z170 EC temperature read returning zero values (#2153)
* Fix ASUS Z170 EC temperature read returning zero values
Adjust EC read logic so temperature registers (PCH, T_SENSOR, VRM)
return valid values on ASUS Z170 boards in user-mode.
Verified with RWEverything and HWiNFO.

* merge back to inter100,
Use IBF clearing fallback when OBF unsupported

* Fix formatting of CrOS enum entry

* Update WindowsEmbeddedControllerIO.cs

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-02-01 15:40:16 +01:00
Blacktempel 883f24d149 Add Pump Fan 2 for MSI MEG Z790 GODLIKE MAX + handle 0 RPM / unplugged fan (#2187)
* Add Pump Fan 2.
Handle Fan at 0 RPM or unplugged.

* Space
2026-01-30 10:58:22 +01:00
BlacktempelandPhyxionNL eb799fa815 Add thermal sensor 1 back for NVMe (#2186)
* Add sensor 1 back for NVMe.
Adjust name of standard temperature sensor for NVMe.

* Update LibreHardwareMonitorLib/Hardware/Storage/StorageDevice.cs

* Update LibreHardwareMonitorLib/Hardware/Storage/StorageDevice.cs

* Update StorageDevice.cs

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-01-29 11:45:59 +01:00
Blacktempel eecee7e865 Add fan 7 for MSI MEG Z790 GODLIKE MAX (#2185)
* Add special fan 7 for MSI MEG Z790 GODLIKE MAX.

* Add optional temperature sensors.

* Rename pump fan.

* Adjust comments / documentation.

* PR comments
2026-01-28 21:47:19 +01:00
BlacktempelandPhyxionNL df9e0a5131 Add support for Thermal Grizzly WireView Pro 2. (#2171)
* Add support for Thermal Grizzly WireView Pro 2.

* Process PR comments.

* PR comments.

* Add private keyword.

* PR comments.

* Replace WMI with SetupAPI.

Some first updates according to Thermal Grizzly code.

* Add report.

* Further improve implementation according to code of Thermal Grizzly (thanks !).

* No connection check for welcome message.

* Rename class + change SerialPort to SharedSerialPort for guard - fixing mutex issues.

* PR comments.

* Remove SP_DEVINFO_DATA from NativeMethods.txt

* Update WireViewPro2.cs

* Rename hasMutex to _hasMutex for consistency

* Formatting

* Fix build

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-01-27 13:20:07 +01:00
TimotejandPhyxionNL 6f9ac5aece Add sensors for Astral GPUs (#2168)
* Add sensors for Astral GPUs

* Clean up imports

* Code clean-up

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-01-22 10:00:23 +01:00
Blacktempel 24218b0703 Add core voltage for NVIDIA GPU. (#2175) 2026-01-20 17:21:06 +01:00
Rémi Mercier 4b3ed8bb46 Update PawnIO modules to 2.2 (#2174)
* Update PawnIO modules to 2.2

https://github.com/namazso/PawnIO.Modules/releases/tag/0.2.2

* Update RyzenSMU.cs

From RyzenSMU module
2026-01-20 17:19:50 +01:00
Rémi Mercier 5ea3a7a573 Update Identification.cs (#2164) 2026-01-16 12:15:05 +01:00
Rémi Mercierandaureopvh ab9551ca2d Feature/arctic fan controller (#2152)
* Port Artic Fan Controller code

* Fixed misspelling and added improvements
- Fixed thread not starting (added _thread.Start())
- Added control sensor activation
- Added PWM initialization from device
- Improved PWM value reading for fast updates

* Slight refactor

Extract message response

* Create README.MD

* Code review

* Add license header
* Make readonly fields
* Remove redundant const
* format
* Remove redundant index check in Update()
* add missing control lock in close()
* add missing hid lock in update loop for array access
* join thread (wait for exit) on cose()

* Proper Hardware type

* File scoped namespaces

* Update ArcticFanController.cs

---------

Co-authored-by: aureopvh <aureoserrano@hotmail.com>
2026-01-13 19:04:55 +01:00
Rémi Mercier 157481adc5 Add missing controls (#2157) 2026-01-13 18:56:16 +01:00
Blacktempel a673f60d0b RAM: (#2124)
- add temperature sensors for high/low/critical limits
- change thermal sensor index to 0
- adjust sensor indices accordingly

Storage:
- add Free Space sensor
- add Total Space sensor
- change temperature sensors indices to start from 0
- remove temperature sensor 1 as the non numbered sensor is the same
2026-01-06 23:23:59 +01:00
Rémi Mercier 9b4ec91e9e Remove the 0-initialized control registers array (#2137) 2026-01-06 23:06:00 +01:00
Alcolawl 1ee7c16cba Add support for three additional MSI Motherboards (#2132)
* Support for 10 new MSI motherboards with NCT6687D-R SIO controller

* Support for newly established fan and control register structure

WILL ABSOLUTELY BREAK FAN CONTROL CONFIGS FOR NCT6687DR USERS. This introduces Support for 16 System Fans and Controls, including EZ-Connect, Pump Fan 2, and System Fan 7. Also improved the logic for nct6687dr control.

* Add support for X870E Tomahawk WIFI, fix B850 Gaming Plus WIFI PZ identification

Additionally sync with upstream

* Add support for B850M Gaming Plus WIFI and Z890 Unify-X

Also removes duplicate model identification case for B850M GAMING PLUS WIFI6E
2026-01-03 10:30:16 +01:00
Rémi Mercier 8e9a633389 EC support for TUF_Gaming-X870_Plus_WIFI (#2121)
* EC support for TUF_Gaming-X870_Plus_WIFI

* Update Identification.cs
2026-01-03 10:29:00 +01:00
Blacktempel cc13e1e909 Add MAG B850M MORTAR (MS-7E61). (#2125) 2025-12-30 17:08:27 +01:00
Blacktempel 9bf916e4d6 Remove duplicate MAG X870 TOMAHAWK WIFI identification (#2129)
Removed duplicate identification for MAG X870 TOMAHAWK WIFI motherboard.
2025-12-30 17:08:11 +01:00
Lando Verardo 6dcd8838f0 Add limited support for “ASUS ROG STRIX Z690-G GAMING WIFI” (#2117) 2025-12-24 10:55:41 +01:00
lochorst e41611863b Add support for MSI MAG X870E TOMAHAWK MAX WIFI PZ (#2120) 2025-12-24 10:49:22 +01:00
Blacktempel 4e4ed660d2 Add method to be able to access Storage object. (#2116)
* Add method to be able to access Storage object.

* Make property public and remove method.
2025-12-19 15:46:34 +01:00
Soo-Hwan Na f92832dfa9 Add support for ASUS TUF GAMING B850M-PLUS II (#2115) 2025-12-19 15:33:17 +01:00
Rémi Mercier 2c14ac128a Add support for MSI Z390 EDGE AC (NCT6797D) (#2111) 2025-12-16 20:00:33 +01:00
PhyxionNL 073b4ce60b Improve various "Other" D3D friendly names 2025-12-15 12:11:47 +01:00
PhyxionNL 830aa65e0f Support Gigabyte B650 EAGLE AX 2025-12-15 11:56:43 +01:00
Betalos (Oussama Thoura) 8f632dca1c Remove faulty register (#2105) 2025-12-14 15:05:16 +01:00