Tags: dkorunic/iSMC
Tags
feat(sensors): add M4/M4 Pro mappings from Mac16,x reports
Validated src/temp.txt against the new Mac16,{7,10,12} dumps and add
evidence-backed rows:
- Tp0Z as Core 9 max: M4 base regroups Tp0U-Tp0f triplets on a
different grid than M4 Pro, so Core 9 previously resolved to probe B
(10+ degC understated under load); document the grid mismatch
- TH0p, TT0P, TVm2, TVh0-2 (high confidence, 2+ dumps each)
- TPSD, TUVR, Ta0p, Tm0B (medium confidence names, solid values)
- drop dead SSD Proximity 2:TS1p:M4 row (key exists only on A18)
Also strip the three new reports down to temperature keys, matching
d4be516 precedent.
docs(smc): tighten comments to intent, drop narration Compress doc comments added since 4cc6e71: keep the why (undocumented firmware sort order, sentinel floor/ceiling rationale, issue refs) and drop restated code, per-machine data dumps, and line-by-line narration.
fix: address AI-review findings, clean up lint, tighten comments Findings: - influx: quote free-text string field values and only split unit when the prefix parses as a number; fixes corrupted/truncated hardware lines - smc: omit battery/fan entries on read failure instead of phantom zeros - gosmc: read SMC keys via a stack [5]C.char (no per-read alloc, bounds-safe for short keys) - platform: nil-check C.malloc before sysctl writes - guess: one SMC connection + single key enumeration per run; sample only T-prefixed keys instead of re-walking the namespace each snapshot - smc: memoize LookupTempDesc per family - src/temp.txt: drop duplicate Tp%P/TN%D rows and fix %v wildcards; regenerate sensors.go to match Linting: - disable architecture-conflicting linters (paralleltest, testpackage, ireturn, gochecknoinits, gomoddirectives); retire deprecated wsl -> wsl_v5 - fix genuine issues: err113 sentinels, gosec G115, goconst, testifylint, staticcheck, nonamedreturns, noinlineerr, dupword, godot, errchkjson - scoped nlreturn exclusion for cgo files (skewed positions) Comments: tighten production doc/inline comments to intent, drop narration.
build(goreleaser): add homebrew_casks alongside formula Migrate the deprecated brews-only setup to also emit a Homebrew cask via homebrew_casks, while keeping the formula in Formula/. The cask strips the com.apple.quarantine xattr post-install so the CLI runs without Gatekeeper prompts. Also clear pre-existing deprecations: pin version 2, rename snapshot.name_template -> version_template and format_overrides.format -> formats.
fix(sensors): rewrite M2 mappings against real SMC dump; fix test race The original M2 block (#23, 2024-10-02) was added before any M2 dump existed and used an M5-style single-key probe-B convention with five keys (Tp0X, Tp1h/t/p/l, Tg0j) absent on real hardware. With reports/report-m2.txt now embedded, an M2 Pro user saw 7 of 8 P-cores at the probe-B value (1.5-2.5 C below the actual max) and 0 of 4 E-cores. - Replace the 14-line M2 block with 53 rows: M1-style P-core triplets for Cores 1-8 (Tp00/04/08/0C and Tp0e/0i/0m/0q), an E-cluster aggregate triplet at Te04/05/06 (4 E-cores share one sensor on this SKU), a P-cluster aggregate at Tp0a/0b/0c (third-is-max violator with clean-mantissa max bytes), three GPU doublets at Tg0e/f/m/n/q/r, five SSD triplets at Ts0K-Ts0c, plus Ts1P/TsOP controllers. - Add cross-platform Heatsink 6 (Th0K/L/M) under :Apple — populated on M2 Pro with live values, previously dropped because the Apple-tagged Th rows stopped at Heatsink 5 (Th0I). - Note Tp01 == TCMb and Tp02 == TCMz byte-for-byte on M2; this is M2-only across every embedded dump and likely means Core 1's max coincides with the cluster max under load. - Add Test_M2ProMapping with the report-m2.txt snapshot to lock in 8 P-cores / 0 per-E-cores / 3 GPUs / 5 SSDs and verify each P-core resolves to its triplet's max value (not the probe-B middle). - Include "M2" in TestKeysIntegration's family list. - Refactor reports.ingest to take a target map parameter; the previous global-state mutation in TestIngest_skipsNonTKeys raced with TestKeysIntegration, surfacing once the M2 file invalidated Go's test cache. - Capture reports/report-m2.txt SMC dump as the evidence base.
feat(smc): map cross-platform heatsinks, regulators, airflow zones - Promote SoC heatsink Th** triplets from :M3 to :Apple (12 rows). M1 Pro/Max/Ultra populate Th00-Th0E with live values but were filtered out by the M3-only tag. M4/M5/A18 don't populate Th**, runtime-rejected. - Add Th0G-Th0I (M1 Max/Ultra extra triplet) and Th20-Th2I (M1 Ultra die-2, five triplets) — Apple-tagged for uniform scope. - Add Mac Studio 4-corner airflow TaFL/TaFR/TaRL/TaRR as :Apple. Populated on M1 Ultra (30-38 °C) and M4 Max (26-30 °C); distinct hardware from TaLP/TaRF/TaLW/TaRW. - Add SoC regulator triplet TSVR/TSWR/TSXR as :Apple — populated on M1 Pro/Max/Ultra, M3/M4/M5 Max with live values. - Add System Disk Diode TSDD as :All (Intel/T2 + M1 Ultra + M4 Max). - Add M1 Pro/Max TPVD power-voltage probe; Pro-tier Sensor Group TSG1/TSG2 (M3/M4/M5 Pro); M4 Pro/Max SoC Cooling Probe TSCP. - Fix mislabelled section comment: M1 Ultra Tp2* range was tagged "die 1" — corrected to "die 2". - Tighten ~40 temp.txt comments: drop platform prefixes redundant with section headers, drop sample-time temp ranges, collapse three-line heatsink block to one line. All comments now under 13 words. - Capture reports/report-m1-pro-2.txt refresh and add report-m3-max-2, report-m4-max, report-m5-max-2 dumps as evidence base.
feat(smc): expand M1 PD/RF + Ultra die-2 mappings, M4 Pro fabric; fix… … M5 Tp1E label - Add TPDg-j and TRDg-j (Apple-wide): M1 Pro/Max/Ultra real readings - Backfill M1 Ultra die-2 TpDc-j (8 keys) and TrDb-j (9 keys) - Map M4 Pro Tp0d-w as 5 cluster-fabric triplets (53-66 °C under load) - Relabel M5 Tp1E from "Efficiency Core Cluster" to "Performance Cluster Aggregate" (M5 Pro/Max has no E-cores under S+P pair signature) - Refine Tp0u/v/w alias comment with measured per-snapshot divergence
PreviousNext