When BMC firmware fails to read capacity for a present DIMM, size_mb stays
0. If another DIMM with the same part number in the same batch has a known
size, use it to fill the gap.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dedup by version caused CPU1 Microcode to be omitted when both CPUs run
the same version, leaving the firmware column blank for the second socket.
Each CPU gets its own firmware entry keyed by index.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Two bugs in onekeylog archives that lack asset.json:
- CPU count was always 0: ParseComponentLog never parsed the "RESTful CPU
info" section. Added parseCPUInfo as a fallback when hw.CPUs is empty
(asset.json remains the primary source when present). Also worked around
a Go JSON case-insensitive collision between "proc_id" (int) and
"PROC_ID" (string CPUID) by adding an explicit PROC_ID field with an
exact-case tag.
- Only 1 of 2 DIMMs shown: Present condition required mem_mod_size > 0,
but some BMC firmware reports size=0 for a physically installed module
while still providing serial and part number. Now treats a DIMM as
present when status=1 and any of size/serial/partnum is non-empty.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Supermicro HGX exposes each GPU under both Chassis/1/PCIeDevices and a
dedicated Chassis/HGX_GPU_SXM_N/PCIeDevices. gpuDocDedupKey was keying
by @odata.id path, so identical GPUs with the same serial were not
deduplicated across sources. Now stable identifiers (serial → BDF →
slot+model) take priority over path.
Also includes Inspur parser improvements: NVMe model/serial enrichment
from devicefrusdr.log and audit.log, RAID drive slot normalization to
BP notation, PSU slot normalization, BMC/CPLD/VR firmware from RESTful
version info section, and parser version bump to 1.8.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Major improvements:
- Add CSV SEL event parser for Kaytus firmware format
- Add PCIe device parser with link speed/width detection
- Add GPU temperature and PCIe link monitoring
- Add disk backplane parser for storage bay information
- Fix memory module detection (only show installed DIMMs)
Parser enhancements:
- Parse RESTful PCIe Device info (max/current link width/speed)
- Parse GPU sensor data (core and memory temperatures)
- Parse diskbackplane info (slot count, installed drives)
- Parse SEL events from CSV format (selelist.csv)
- Fix memory Present status logic (check mem_mod_status)
Web interface improvements:
- Add PCIe link degradation highlighting (red when current < max)
- Add storage table with Present status and location
- Update memory specification to show only installed modules with frequency
- Sort events from newest to oldest
- Filter out N/A serial numbers from display
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Redesign config page with tabs: Spec, CPU, Memory, Power, Storage, GPU, Network, PCIe
- Parse detailed memory info from component.log with all fields:
Location, Present, Size, Type, Max/Current Speed, Manufacturer, Part Number, Status
- Add GPU model extraction from PCIe devices
- Add NetworkAdapter model with detailed fields from RESTful API
- Update PSU model with power metrics (input/output power, voltage, temperature)
- Memory modules with 0GB size (failed) highlighted in warning color
- Add memory overview stats (total GB, installed count, active count)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>