Hello,
Thank you for testing and investing so much time troubleshooting.
Is there a known firmware-version-dependent variation in the checksum seed or packet framing for NPE-240A2 units?
I should admit, I am puzzled as I know countless examples of NPE240A2 working just fine (with my custom hardware and also with combination of rs485/atom boards). Can you share more about your configuration - single unit or cascade setup (I assume single), do you have the "real navilink" connected?
Given the frame-splicing example above, is there a chance the receive state machine doesn't fully resynchronize after detecting a new 0xF7 marker mid-frame, especially with back-to-back packets on a busy bus?
I should check the code, but off my memory, we reject packets where the header/length does not match the number of bytes that follow - that should bringv the code to sync state even if there is a synch issue.
Can you collect and send a few raw traces - it would help to better understand what is going on.
Update: resolved — this was a stale/corrupted local build, not a 240A2 compatibility issue
Thanks for the quick reply and noting that countless examples are working with my setup. So before digging into raw traces, I did a clean-slate test: fresh directory, fresh git clone of this repo, no local edits at all, flashed exactly as-is.
Result: zero checksum errors, and every sensor value now reads correctly and matches the physical unit exactly:
Navien Controller Version >> '1.2'
Navien Panel Version >> '1.9'
Navien Device Type >> 'NPE2'
Navien DHW Set Temp >> 121.10 °F (matches my actual 120°F setpoint)
Navien Error Code >> 0
Navien Error Level >> 0
Navien Recirculation Mode >> 'External Scheduled'
For context, my original build had gone through several rounds of manual external_components source-switching (local path ↔ git ↔ back to local again) while I was troubleshooting, plus a local checksum-bypass patch I'd added as a workaround. Somewhere in that process, something got stale or corrupted — possibly a cached build artifact, possibly a config paste error I didn't catch. Whatever it was, it's specific to my original working directory, not the repo or my hardware.
Configuration (confirmed working now):
Single unit, no cascade
No "real" NaviLink hardware — DIY M5Stack Atom Lite + Atomic RS485 Base only
Panel FW 1.9, Controller FW 1.2 — now correctly reported over UART too
120Ω termination resistor on A/B (confirmed via multimeter the unit has no internal terminator)
Apologies for the noise — should have done a clean-slate test before assuming a model-specific bug. Everything's working great now. Thanks for building this — really appreciate it!