Improve reset robustness for sensitive RAK Hotspot V2 / RAK7248 carriers#62
Merged
KMX415 merged 1 commit intoJun 1, 2026
Merged
Conversation
- Add CONCENTRATOR_RESET_HOLD_SEC env var to control Python-side reset hold time (default 0.1s preserved) - Add CONCENTRATOR_LATE_RESET=1 to perform the reset immediately before lgw_start() instead of early in startup - Fix missing '+' prefix on reset ExecStartPre/ExecStopPost in meshpoint.service - Document RAK Hotspot V2 specific reset timing and SPI overlay gotchas in TROUBLESHOOTING.md and HARDWARE-MATRIX.md This addresses real-world issues seen on RAK7248 + RAK2287 carriers where the stock reset sequence + early Python reset could leave the chip in a bad state (0x00/0x05), while a fresh, well-timed reset right before the HAL call succeeds reliably.
114556b to
1bab948
Compare
Owner
|
Rebased onto feat/v0.7.6 and merged. Default behavior unchanged; the systemd + on reset scripts is a nice catch. We still want a quick RAK V2 regression on our bench before this rides main in the v0.7.6 release. Thanks for the hardware-validated work. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Some RAK7248-based carriers (especially enclosed Helium Hotspot V2 units) are more sensitive to reset timing than standard RAK Pi HATs. The combination of the systemd
ExecStartPrereset + the early Pythonwrapper.reset()call can leave the SX1302 in a bad state (chip version 0x00/0x05,STANDBY_RCfailures), even though a single well-timed reset immediately beforelgw_start()succeeds reliably.Changes
CONCENTRATOR_RESET_HOLD_SECenvironment variable to control the hold time used by the Python-side reset (defaults to the existing 0.1s behavior).CONCENTRATOR_LATE_RESET=1to skip the early reset and perform it right beforelgw_start()instead.+prefix on the resetExecStartPre/ExecStopPostlines inmeshpoint.service(so they correctly run as root).TROUBLESHOOTING.mdandHARDWARE-MATRIX.md.Testing
These changes were developed and verified on a real RAK7248 + RAK2287 carrier where the stock reset path was unreliable, but a fresh reset with longer hold time right before the HAL call worked consistently.
Closes issues where users on repurposed RAK Hotspot V2 boards see repeated concentrator initialization failures despite correct wiring and power cycling.
This addresses real-world issues seen on RAK7248 + RAK2287 carriers where the stock reset sequence + early Python reset could leave the chip in a bad state (0x00/0x05), while a fresh, well-timed reset right before the HAL call succeeds reliably.
Summary
What does this PR change?
Why
Why is this needed?
Type
Testing
How tested?
Hardware:
Impact
Does this affect:
Notes:
AI-assisted?
If yes, how: