Problem / Background
The GenericChassisReader (used on all non-macOS platforms) currently only reports aggregated GPU power. On DGX Spark (GB10) and other Linux systems, much more chassis-level information is available but not collected:
- DMI data (
/sys/class/dmi/id/): product name, vendor, board name, BIOS version — all readable without sudo
- Thermal zones (
/sys/class/thermal/thermal_zone*/): multiple ACPI temperature zones (inlet/outlet/board temps) — readable without sudo
- System identification: Chassis type, product version
Currently the TUI only shows "Pwr: N/A" for the chassis line, which is unhelpful.
Verified on Real Hardware (DGX Spark GB10)
Available data sources (no sudo required):
| Source |
Data |
Path |
| DMI product_name |
NVIDIA_DGX_Spark |
/sys/class/dmi/id/product_name |
| DMI sys_vendor |
NVIDIA |
/sys/class/dmi/id/sys_vendor |
| DMI board_name |
P4242 |
/sys/class/dmi/id/board_name |
| DMI product_version |
A.7 |
/sys/class/dmi/id/product_version |
| DMI bios_version |
5.36_0ACUM018 |
/sys/class/dmi/id/bios_version |
| DMI chassis_type |
17 (Server) |
/sys/class/dmi/id/chassis_type |
| Thermal zones (7) |
38.9°C ~ 41.7°C (acpitz) |
/sys/class/thermal/thermal_zone*/temp |
| GPU Power |
~4.5W |
nvidia-smi |
| IPMI |
Not available |
No /dev/ipmi0 |
| Fan Speed |
N/A |
Not exposed on GB10 |
Proposed Solution
1. Collect DMI Information
In GenericChassisReader, read DMI data from /sys/class/dmi/id/ and populate ChassisInfo.detail:
product_name → detail["Product Name"]
sys_vendor → detail["Vendor"]
board_name → detail["Board"]
product_version → detail["Version"]
bios_version → detail["BIOS Version"]
2. Collect Thermal Zone Data
Read /sys/class/thermal/thermal_zone*/temp and /sys/class/thermal/thermal_zone*/type:
- Use the lowest-index
acpitz zone as inlet_temperature
- Use the highest-temp
acpitz zone or last zone as outlet_temperature
- These are board-level temperatures, distinct from per-GPU temperatures
3. Ensure GPU Power Flows to Chassis
The GenericChassisReader has a gpu_power_cache mechanism but it appears the total power may not always be populated. Verify and fix the GPU power aggregation so total_power_watts shows correctly.
Acceptance Criteria
Technical Reference
Key files:
src/device/readers/chassis/generic.rs — Main file to modify
src/device/readers/chassis/mod.rs — Factory function
src/device/types.rs — ChassisInfo struct (already has inlet_temperature, outlet_temperature, detail fields)
src/ui/renderers/chassis_renderer.rs — TUI renderer (already handles thermal display)
src/api/metrics/chassis.rs — API exporter (already exports inlet/outlet temps)
Problem / Background
The
GenericChassisReader(used on all non-macOS platforms) currently only reports aggregated GPU power. On DGX Spark (GB10) and other Linux systems, much more chassis-level information is available but not collected:/sys/class/dmi/id/): product name, vendor, board name, BIOS version — all readable without sudo/sys/class/thermal/thermal_zone*/): multiple ACPI temperature zones (inlet/outlet/board temps) — readable without sudoCurrently the TUI only shows "Pwr: N/A" for the chassis line, which is unhelpful.
Verified on Real Hardware (DGX Spark GB10)
Available data sources (no sudo required):
NVIDIA_DGX_Spark/sys/class/dmi/id/product_nameNVIDIA/sys/class/dmi/id/sys_vendorP4242/sys/class/dmi/id/board_nameA.7/sys/class/dmi/id/product_version5.36_0ACUM018/sys/class/dmi/id/bios_version17(Server)/sys/class/dmi/id/chassis_type/sys/class/thermal/thermal_zone*/tempProposed Solution
1. Collect DMI Information
In
GenericChassisReader, read DMI data from/sys/class/dmi/id/and populateChassisInfo.detail:product_name→ detail["Product Name"]sys_vendor→ detail["Vendor"]board_name→ detail["Board"]product_version→ detail["Version"]bios_version→ detail["BIOS Version"]2. Collect Thermal Zone Data
Read
/sys/class/thermal/thermal_zone*/tempand/sys/class/thermal/thermal_zone*/type:acpitzzone asinlet_temperatureacpitzzone or last zone asoutlet_temperature3. Ensure GPU Power Flows to Chassis
The
GenericChassisReaderhas agpu_power_cachemechanism but it appears the total power may not always be populated. Verify and fix the GPU power aggregation sototal_power_wattsshows correctly.Acceptance Criteria
Technical Reference
Key files:
src/device/readers/chassis/generic.rs— Main file to modifysrc/device/readers/chassis/mod.rs— Factory functionsrc/device/types.rs— ChassisInfo struct (already has inlet_temperature, outlet_temperature, detail fields)src/ui/renderers/chassis_renderer.rs— TUI renderer (already handles thermal display)src/api/metrics/chassis.rs— API exporter (already exports inlet/outlet temps)