report_validator rejects valid ACPI paths generated by Hardware Sniffer on Linux

Author: daviddelsol1998Created Aug 3, 2026Updated Aug 3, 2026

Describe the issue

The acpi_path regex in Scripts/report_validator.py:24 only accepts _SB-rooted paths:

python
"acpi_path": r"^[\\]?_SB(\.[A-Z0-9_]+)+$",

Reports exported by Hardware Sniffer on Linux contain valid ACPI paths that the validator rejects, causing "Hardware report is not valid!" and blocking the whole flow:

1. Root.System Devices.LNXTHERM.ACPI Path: Value '\_TZ_.TZS0' does not match pattern '^[\\]?_SB(\.[A-Z0-9_]+)+$'
2. Root.System Devices.PNP0C0B.ACPI Path: Value '\_TZ_.FAN0' does not match pattern '^[\\]?_SB(\.[A-Z0-9_]+)+$'
3. Root.System Devices.PNP0C14_#4.ACPI Path: Value '\AOD_' does not match pattern '^[\\]?_SB(\.[A-Z0-9_]+)+$'

These come straight from the Linux kernel's firmware_node ACPI paths (Scripts/device_locator.py in Hardware-Sniffer reads /sys/.../firmware_node/path):

  • \_TZ_.TZS0 – thermal zone (valid scope outside _SB)
  • \_TZ_.FAN0 – fan under the thermal zone
  • \AOD_ – root-level device (AMD ACPI Operation Definition, common on AMD systems)

Expected

Any syntactically valid ACPI path should pass validation: optional root \, an arbitrary root scope/device (_SB, _TZ_, or a root-level device such as AOD_), followed by .Name segments.

Suggested fix

python
"acpi_path": r"^[\\]?(_SB|_TZ_|[A-Z0-9_]+)(\.[A-Z0-9_]+)*$",

Impact

Without this, Linux users cannot use the recommended report export flow (Hardware Sniffer CLI -e) with OpCore Simplify at all. Note this only affects System Devices on Linux reports; all PCI/GPU/USB/audio/storage paths remain _SB-rooted.

Environment

  • Ubuntu Linux, Python 3.14.4
  • Hardware-Sniffer main + OpCore-Simplify main

Source: lzhoang2801/OpCore-Simplify