fix: move SKUDAK telemetry to 0x211 + add -S1 version suffix #3

Merged
bastian merged 2 commits from fix/skudak-448-move-telemetry-to-0x211 into main 2026-05-09 17:59:40 -04:00
Owner

Summary

Two small paired changes for visible verification on bench:

  1. Move SKUDAK VCU telemetry from 0x2100x211 (7de46b8)
  2. Add -S1 version suffix to VERSTR (00f3592)

Why move the ID

After PR #2 merged and the OBC was reflashed with the canonical expanded layout, PCAN capture on the green car still showed two frames at 0x210 per 100 ms cycle:

DLC=7  00 00 EE 07 04 88 00     ← our new layout, live data
DLC=8  00 00 00 00 00 85 00 00  ← non-Polarity source, mostly-zero, byte 5 static

can p on the OBC terminal confirmed our CanMap has exactly one entry for 0x210 with the 5 expected fields. So the rogue frame is from a non-Polarity module on the same bus — likely a Tesla OEM DI/inverter still running stock firmware. We don't own that ID and can't make the rogue stop. Stepping out of the way is the pragmatic fix.

0x211 is adjacent, free in the current map, and same priority class.

Why the -S1 suffix

The OpenInverter web UI displays the firmware version from the version parameter (entry 2001), which expands VERSTR. Out of the box that reads 4=1.19.R (upstream version, no Skudak indicator). With this change it reads 4=1.19.R-S1 so we can visually confirm a Skudak fork build is flashed (vs accidentally flashing stock OpenInverter firmware or an old build).

Matches the convention already used in stm32-sine (-sine-S6 / -foc-S6) where the -S<N> suffix bumps on each Skudak-side change.

Verified: strings stm32_charger.bin | grep S1 shows 4=1.19.R-S1 in the built artifact.

Bump cadence: increment to -S2 on the next material Skudak-side change to this firmware. This PR establishes the convention.

Test plan

  • make builds cleanly (only pre-existing pedantic + RWX-segment warnings)
  • Binary contains 4=1.19.R-S1 (verified via strings)
  • Flash via the OpenInverter ESP8266 web UI on the green car
  • Web UI shows 1.19.R-S1 in the version field — immediate visual confirmation the fork is flashed
  • PCAN re-capture: 0x211 carries the new DLC=7 layout (state/udc/idc/uaux@5/soc); 0x210 may still appear (rogue, ignored by VCU)
  • Coordinate with paired stm32-hal-vcu PR #37 commit 161cf0f updating CHARGER_CAN_ID_OI_OBC_AUX from 0x210UL0x211UL

Compatibility

The ID move breaks any downstream consumer reading 0x210. The only known consumer is stm32-hal-vcu; PR #37's matching one-line change must land before reflashing the VCU, otherwise the VCU will see no aux 12V telemetry on the new bus.

🤖 Generated with Claude Code

## Summary Two small paired changes for visible verification on bench: 1. **Move SKUDAK VCU telemetry from `0x210` → `0x211`** (`7de46b8`) 2. **Add `-S1` version suffix to `VERSTR`** (`00f3592`) ## Why move the ID After PR #2 merged and the OBC was reflashed with the canonical expanded layout, PCAN capture on the green car still showed two frames at `0x210` per 100 ms cycle: ``` DLC=7 00 00 EE 07 04 88 00 ← our new layout, live data DLC=8 00 00 00 00 00 85 00 00 ← non-Polarity source, mostly-zero, byte 5 static ``` `can p` on the OBC terminal confirmed our CanMap has exactly **one** entry for `0x210` with the 5 expected fields. So the rogue frame is from a non-Polarity module on the same bus — likely a Tesla OEM DI/inverter still running stock firmware. We don't own that ID and can't make the rogue stop. Stepping out of the way is the pragmatic fix. `0x211` is adjacent, free in the current map, and same priority class. ## Why the -S1 suffix The OpenInverter web UI displays the firmware version from the `version` parameter (entry 2001), which expands `VERSTR`. Out of the box that reads `4=1.19.R` (upstream version, no Skudak indicator). With this change it reads `4=1.19.R-S1` so we can visually confirm a Skudak fork build is flashed (vs accidentally flashing stock OpenInverter firmware or an old build). Matches the convention already used in stm32-sine (`-sine-S6` / `-foc-S6`) where the `-S<N>` suffix bumps on each Skudak-side change. Verified: `strings stm32_charger.bin | grep S1` shows `4=1.19.R-S1` in the built artifact. **Bump cadence**: increment to `-S2` on the next material Skudak-side change to this firmware. This PR establishes the convention. ## Test plan - [x] `make` builds cleanly (only pre-existing pedantic + RWX-segment warnings) - [x] Binary contains `4=1.19.R-S1` (verified via `strings`) - [ ] Flash via the OpenInverter ESP8266 web UI on the green car - [ ] Web UI shows `1.19.R-S1` in the version field — **immediate visual confirmation the fork is flashed** - [ ] PCAN re-capture: `0x211` carries the new DLC=7 layout (state/udc/idc/uaux@5/soc); `0x210` may still appear (rogue, ignored by VCU) - [ ] Coordinate with paired `stm32-hal-vcu` PR #37 commit `161cf0f` updating `CHARGER_CAN_ID_OI_OBC_AUX` from `0x210UL` → `0x211UL` ## Compatibility The ID move breaks any downstream consumer reading `0x210`. The only known consumer is `stm32-hal-vcu`; PR #37's matching one-line change must land before reflashing the VCU, otherwise the VCU will see no aux 12V telemetry on the new bus. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bastian added 1 commit 2026-05-08 18:55:18 -04:00
fix: move SKUDAK telemetry frame from 0x210 → 0x211 (avoid bus contention)
Build Firmware / Build stm32-teslacharger (pull_request) Successful in 59s
7de46b8160
Bench capture on the green car showed a non-Polarity module also
broadcasting at 0x210 (DLC=8 frame with mostly-zero payload, byte 5 = 0x85
static — likely a Tesla OEM DI module). Even after a clean reflash + 'can c'
to clear persisted maps, the rogue 0x210 frame keeps appearing on the wire,
racing our intended frame and intermittently corrupting the VCU's read.

Confirmed via 'can p' on the OBC that this firmware's CanMap has exactly
one 0x210 entry with the 5 expected fields — the conflict is external.

Moves all five AddSends to 0x211, an adjacent free ID. The VCU's
CHARGER_CAN_ID_OI_OBC_AUX constant is updated to match in a paired
stm32-hal-vcu PR. Same 7-byte expanded layout (state/udc/idc/uaux@5/soc),
same 100ms cadence — only the arbitration ID changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
bastian added 1 commit 2026-05-09 17:57:49 -04:00
chore: add SKUDAK -S1 version suffix to VERSTR
Build Firmware / Build stm32-teslacharger (pull_request) Successful in 59s
00f359250c
The OpenInverter web UI displays the firmware version from the 'version'
parameter (entry 2001), which expands VERSTR. Out of the box this reads
'4=1.19.R' (upstream version, no Skudak indicator). With this change it
reads '4=1.19.R-S1' so we can visually confirm we're running the Skudak
fork and not stock OpenInverter firmware.

Matches the convention already used in stm32-sine ('-sine-S6' / '-foc-S6')
where the -S<N> suffix bumps on each Skudak-side change.

Verified: 'strings stm32_charger.bin | grep S1' shows '4=1.19.R-S1' in the
built artifact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
bastian changed title from fix: move SKUDAK telemetry frame from 0x210 → 0x211 (avoid bus contention) to fix: move SKUDAK telemetry to 0x211 + add -S1 version suffix 2026-05-09 17:58:11 -04:00
bastian merged commit f566427835 into main 2026-05-09 17:59:40 -04:00
bastian deleted branch fix/skudak-448-move-telemetry-to-0x211 2026-05-09 17:59:40 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Skudak/stm32-openinverter-teslacharger#3