Commit Graph
1472 Commits
Author SHA1 Message Date
PhyxionNL a17d240413 Refactor VisitComputer and formatting in README.md 2026-04-14 16:47:53 +02:00
Sandro Greinecker 824e400304 fix: Update temperature offset calculation for newer Zen processors (#2303) 2026-04-14 16:44:41 +02:00
Howon Lee 44c1ceb864 Fix unhandled NetworkInformationException in UpdateNetworkInterfaces (#2308) 2026-04-14 16:25:44 +02:00
Blacktempel c0ee111659 Fix NVMe temperature sensors. (#2311) 2026-04-14 16:24:00 +02:00
Blacktempel 9fce235e15 Update for DIT 2.0.1. (#2304)
Move force wakeup to proper place.
Check power state of disk and update depending on that.
2026-04-14 16:23:46 +02:00
Rémi Mercier d11d35bb2e X570 null exception and pdb in release (#2300)
* X570_MS7C35 nullref

Fix nullref

* No debug symbols/pdb in release

* Update LibreHardwareMonitorLib.csproj
2026-04-14 16:22:54 +02:00
push-0x57df 47b46c7bf4 Solve the problem of long delays in data updates for mechanical disk read/write speeds. (#2301) 2026-04-08 19:58:31 +02:00
PhyxionNL aa838636e1 Add acknowledgements section to README
Added acknowledgements section with contributor credits.
2026-04-07 13:48:28 +02:00
MadLongTomandPhyxionNL aa7c8be02f feat: Add Native AOT compilation support for LibreHardwareMonitorLib (#2280)
* feat: Add Native AOT compilation support for LibreHardwareMonitorLib

- Replace non-generic Marshal.GetDelegateForFunctionPointer with generic versions
  (NvApi.cs, NvidiaML.cs, OpCode.cs)
- Replace non-generic Marshal.PtrToStructure/SizeOf with generic versions
  (AtiAdlxx.cs, AmdGpu.cs, Ipmi.cs)
- Replace reflection-based Mono.Posix calls with direct Syscall for non-NETFRAMEWORK
  (OpCode.cs)
- Add DynamicallyAccessedMembers annotations for trim-safe generic marshaling
  (MsiCoreLiquidController.cs, WireViewPro2.cs)
- Add IsAotCompatible, IsTrimmable, and AOT/trim analyzers to csproj for net8.0+
- All changes maintain full backward compatibility with net472/netstandard2.0

Tested: dotnet publish with PublishAot=true on net10.0 win-x64 succeeds.
AOT binary correctly enumerates all hardware and sensors without errors.

* feat: Add conditional compilation for .NET 5.0 or greater in various classes

* feat: Add AOT test project and update workflows for AOT compilation

* Drop test project

* NET5_0_OR_GREATER > NET

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-04-07 13:38:41 +02:00
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
PhyxionNL 1c51643e7a Add warning about non-official site 2026-04-02 12:55:03 +02:00
bloom 60197b6f92 Gadget Styling (Background Color) (#2282)
* Add background tinting and color picker to gadget

-Replaced barblue.png and gadget.png with desaturated versions.
-Added background tinting support (_backTinted, _backgroundColor, _backgroundDirty), switched _barFore to use bar.png, and dispose tinted background resources during cleanup.
-Reworked font color selection UX and mirrored the same chooser flow for background color.

* Fix Gadget bars and HSV color picker UI + Icon

-Fixed gadget bars to tint with selected background color
-Updated color picker flow with a themed, resizable HSV picker.
-Applied LibreHardwareMonitor icon and current app theme to the picker window.

* Hex values and finalize color tinting

-Added Copy/Paste to hex value field.
-Fixed color tinting to respect true grayscale/dark hex values (e.g. #000000) .
-Utilization bars now follow font color tinting.

* Utilization bars fix

-Fixed utilization bar tinting to follow the selected font color directly

* Github Copilot Suggestions

-Forced grayscale-safe background tint behavior, switched background tint processing to LockBits.
-Preserved custom bar override images by skipping tint on user-provided bar assets.
-Fixed PArgb premultiplication in tint output to remove edge halo artifacts.

* Restrict workingSource to Format32bppArgb

-Normalized CreateBackgroundTint sources to Format32bppArgb before LockBits so premultiplied PArgb images are not processed with non-premultiplied ARGB tint math.

* Windows accessibility text scaling

-Adjusted picker layout to scale correctly when Windows Text Size is increased in Accessibility settings.
2026-04-02 10:36:44 +02:00
Blacktempel 3d0a31d4ab Update DiskInfoToolkit. (#2288) 2026-03-24 19:22:03 +01: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
PhyxionNL 516c90c7be Update deps 2026-03-15 11:05:29 +01:00
Blacktempel 998b17b6f6 Update DiskInfoToolkit. (#2277) 2026-03-15 11:03:44 +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 14b6daa7d6 Update RAMSPDToolkit - adds detection logic for Intel Skylake IMC. (#2250) 2026-03-02 19:15:38 +01:00
Blacktempel 5690f8f62b Remove formatting from raw values. (#2254) 2026-03-02 19:14:29 +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
Sab44andPhyxionNL 8cc452c31a Add application version to root node of data.json (#2240)
* Add version to root node of data.json

* Formatting

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2026-02-27 14:27:45 +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
PhyxionNL 3d331e3370 Bump version from 0.9.5 to 0.9.6 2026-02-14 12:13:58 +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
Blacktempel 7caca88771 Fix for new PawnIO release. (#2222)
Add new binary.
2026-02-13 17:30:03 +01:00
PhyxionNL e4d804bd77 Upgrade package versions in csproj file
Updated System.Management and System.Resources.Extensions package versions to 10.0.3.
2026-02-12 17:27:41 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 70c28da8d9 Bump System.Resources.Extensions from 10.0.2 to 10.0.3 (#2213)
---
updated-dependencies:
- dependency-name: System.Resources.Extensions
  dependency-version: 10.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: System.Resources.Extensions
  dependency-version: 10.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 15:39:37 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 17dbcf580b Bump System.IO.Ports from 10.0.2 to 10.0.3 (#2209)
---
updated-dependencies:
- dependency-name: System.IO.Ports
  dependency-version: 10.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 15:33:45 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> a57308ee94 Bump System.Threading.AccessControl from 10.0.2 to 10.0.3 (#2212)
---
updated-dependencies:
- dependency-name: System.Threading.AccessControl
  dependency-version: 10.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 15:33:19 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 4ab6fa1617 Bump System.Text.Json from 10.0.2 to 10.0.3 (#2214)
---
updated-dependencies:
- dependency-name: System.Text.Json
  dependency-version: 10.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 15:33:03 +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