External Components
June 29, 2026 ยท View on GitHub
This page is the source content for External Component Guidance. For now, the app should open the GitHub-rendered version of this document directly. The HardwareVisualizer website should later publish content derived from this page, and the app can switch to that website URL when it exists.
Temporary in-app detail links:
- PawnIO:
https://github.com/shm11C3/HardwareVisualizer/blob/develop/docs/user/external-components.md#pawnio - smartctl:
https://github.com/shm11C3/HardwareVisualizer/blob/develop/docs/user/external-components.md#smartctl
HardwareVisualizer can collect many hardware signals without optional external components. Some deeper sensor paths depend on tools or drivers that users must install separately. HardwareVisualizer does not download, install, bundle, or enable those components automatically.
External Component Guidance appears only after HardwareVisualizer tries to use an optional component, cannot use it, and fallback collection still leaves user-visible hardware data unavailable. If fallback collection obtains the needed information, the app should not show guidance.
What The Dialog Means
The dialog tells you:
- which optional component could not be used;
- which hardware information remains unavailable;
- what action may make that information available.
The dialog is informational. Hardware monitoring continues with the best available fallback data.
PawnIO
PawnIO is used on Windows for CPU package temperature collection when the CPU supports the implemented PawnIO-backed path.
PawnIO may be relevant when the CPU temperature is unavailable in the dashboard. If HardwareVisualizer can still show a CPU temperature through ACPI thermal zones, it should not show PawnIO guidance.
What PawnIO Enables
PawnIO can provide Windows CPU package temperature from CPU-specific sensor paths:
- Intel package temperature through the Intel MSR module.
- AMD Family 17h and Family 19h package temperature through the Ryzen SMU module.
Required User Setup
For PawnIO-backed CPU package temperature collection, the machine needs:
- a working PawnIO driver/runtime installation;
PawnIOLib.dll, which is provided by the PawnIO runtime installation;- one CPU-specific module blob from the PawnIO.Modules release assets:
IntelMSR.amxorIntelMSR.binfor supported Intel CPUs;RyzenSMU.amxorRyzenSMU.binfor supported AMD CPUs;
- enough Windows privileges for the app process to open the PawnIO driver.
To set up the module blob:
- Install the PawnIO runtime.
- Download a release asset from namazso/PawnIO.Modules.
- Extract the archive and copy the CPU module file you need into
C:\Program Files\PawnIO.- For Intel package temperature, copy
IntelMSR.amxorIntelMSR.bin. - For supported AMD package temperature, copy
RyzenSMU.amxorRyzenSMU.bin. - If you are not sure which CPU path applies, copying both module files is acceptable.
- For Intel package temperature, copy
- Restart HardwareVisualizer.
Writing to C:\Program Files\PawnIO usually requires administrator
permission.
If PawnIO is installed but HardwareVisualizer reports a permission issue, run HardwareVisualizer as administrator and try again.
Official Sources
- PawnIO runtime: https://github.com/namazso/PawnIO
- PawnIO modules: https://github.com/namazso/PawnIO.Modules/releases
More implementation detail is recorded in
../architecture/windows-sensor-external-components.md.
PawnIO Motherboard Sensors
PawnIO is also used on Windows for supported Super I/O motherboard temperature and fan-speed reads. This path currently depends on the PawnIO LpcIO module and the app process being able to open the PawnIO driver.
For PawnIO-backed motherboard sensors, the machine needs:
- a working PawnIO driver/runtime installation;
PawnIOLib.dll, which is provided by the PawnIO runtime installation;LpcIO.binorLpcIO.amxfrom the PawnIO.Modules release assets;- enough Windows privileges for the app process to open the PawnIO driver.
If PawnIO is installed but HardwareVisualizer reports a permission issue, run HardwareVisualizer as administrator or enable Run as administrator on startup, then restart the app.
This guidance only covers access to the read-only motherboard sensor path. It does not enable fan control, PWM writes, voltages, unsupported Super I/O chips, or vendor-specific embedded-controller sensors.
smartctl
smartctl is part of smartmontools. HardwareVisualizer can use it as one
Storage Health collection source when native OS paths cannot provide enough
device-health signals.
smartctl guidance may be relevant when Storage Health cannot collect important
health signals for at least one storage device. It should not appear if native
or fallback sources already collect the important health signals.
The smartctl:storage-health:v1 guidance key is cross-platform. Windows,
Linux, and macOS can all surface it when HardwareVisualizer actually attempts
to use smartctl and still cannot collect the important Storage Health
signals through the available sources.
Live Storage Health uses the cheap native read path where available and does
not use smartctl on its live polling cadence.
What smartctl Can Improve
For Storage Health, HardwareVisualizer treats these as important health signals:
- SMART overall health;
- temperature;
- NVMe percentage used;
- NVMe available spare;
- reallocated sector count;
- current pending sector count;
- offline uncorrectable sector count;
- NVMe media errors.
Other values, such as power-on hours, power cycle count, unsafe shutdown count, or error-log entry count, may still be useful in the UI. Missing only those values should not trigger external component guidance.
Required User Setup
To use smartctl, install smartmontools for your operating system and make
sure the smartctl executable is available on PATH.
Some storage devices or operating systems may also require elevated privileges
to read SMART data. If smartctl is installed but HardwareVisualizer still
cannot collect Storage Health signals, try running HardwareVisualizer with the
permissions required by your operating system and device.
After installing or fixing smartctl, run Storage Device Refresh when
available, or restart HardwareVisualizer. Daily Storage Health collection will
also retry on its next scheduled collection.
Official Source
- smartmontools: https://www.smartmontools.org/
Guidance Reasons
The app may classify an unavailable component as:
missing: the executable, DLL, or module file was not found;permission: the component exists but cannot be opened with current privileges;misconfigured: the runtime exists but a required driver, service, or module is missing;failed: the component ran but did not return usable data for the target device or sensor.
The website should use those classifications to show specific next steps rather than displaying raw error strings as the main user-facing message.