Repository navigation
Description
Summary
On Heltec T114 running official firmware v1.16.0, the poweroff and shutdown CLI commands are parsed and accepted, but the device never powers off. It keeps responding to commands immediately afterwards. This happens over both remote admin (LoRa) and direct USB serial, and on both Repeater and Room Server roles.
get pwrmgt.support returns supported on the same devices, so the reported capability does not match actual behaviour.
Environment
- Board: Heltec T114 (
board→Heltec T114) - Firmware:
v1.16.0-07a3ca9 (Build: 06-Jun-2026), official release - Roles tested: Repeater and Room Server (separate devices, same result)
- Power source:
get pwrmgt.source→battery - Devices tested: 3× T114
Steps to reproduce
Over USB serial (meshcli -r -s COM8), which rules out radio/remote-admin delivery:
Beta-0.1 Repeater> get pwrmgt.support
-> > supported
Beta-0.1 Repeater> poweroff
->
Beta-0.1 Repeater> ver
-> v1.16.0-07a3ca9 (Build: 06-Jun-2026)
Beta-0.1 Repeater> shutdown
->
Beta-0.1 Repeater> ver
-> v1.16.0-07a3ca9 (Build: 06-Jun-2026)
Over remote admin from the Android app, same result:
> board
Heltec T114
> get pwrmgt.support
> supported
> get pwrmgt.source
> battery
> get pwrmgt.bootreason
> Reset: Soft Reset; Shutdown: Unknown
> poweroff
> get pwrmgt.bootreason
> Reset: Soft Reset; Shutdown: Unknown
> shutdown
> get pwrmgt.bootreason
> Reset: Soft Reset; Shutdown: Unknown
Expected
The device enters SYSTEMOFF, stops responding, and on next boot get pwrmgt.bootreason reports shutdown reason USER (0x55).
Actual
Nothing happens. No error, no reply, no power-off. The node answers the very next command. pwrmgt.bootreason is unchanged across the attempts.
Additional observations
-
The command is recognised, not rejected.
power off(with a space) returnsUnknown command, whilepoweroffandshutdownreturn silence. So the CLI aliases exist; the board-level implementation appears to be missing or a no-op. -
Shutdown: Unknownis not a documented value. The nRF52 power management docs listNONE(0x00),LOW_VOLTAGE(0x4C),USER(0x55) andBOOT_PROTECT(0x42).Unknownis none of these, which suggests GPREGRET2 is not being written as designed on this board. -
adc.multipliercontradictspwrmgt.support. On the same device:> get pwrmgt.support > supported > set adc.multiplier 2.0 Error: unsupported by this boardBattery reporting is also off by ~2.7% (reports 4130 mV, multimeter reads 4019 mV at the battery connector), with no way to correct it.
-
Possibly related: the EasySkyMesh fork disabled
NRF52_POWER_MANAGEMENTfor RAK4631, RAK3401, Heltec T114, Xiao nRF52 and SenseCAP Solar in April 2026, which may indicate known instability in this subsystem on these boards.
Suggested outcome
Either implement powerOff() for T114, or have pwrmgt.support report unsupported and make poweroff/shutdown return an explicit error, so operators know before deploying a node somewhere they can't reach.
Impact
For repeaters and room servers mounted out of reach, there is currently no way to power a node down remotely, and no indication that the command has failed. reboot works correctly on the same devices.
Activity
jirogit commentedon Aug 4, 2026
This matches the root cause fixed in #2701 (still open, not yet merged).
On both T114 and RAK4631,
initiateShutdown(uint8_t reason)is implemented and correctly writes the shutdown reason to GPREGRET2 before entering SYSTEMOFF. However, neither board overridespowerOff()to call it — the CLI'spoweroff/shutdowncommands fall through toMainBoard::powerOff(), which is a no-op. This is why the command is silently accepted (no "unknown command" error) but nothing happens, and whypwrmgt.bootreasonshowsShutdown: Unknown—initiateShutdown()is never actually invoked, so GPREGRET2 is never written.#2701 adds the missing
powerOff()override on both boards, delegating toinitiateShutdown(SHUTDOWN_REASON_USER). Verified on real T114 and RAK4631 hardware (battery-powered, USB disconnected).Thank you for catching on the
adc.multiplier/pwrmgt.supportmismatch — that looks like a separate reporting gap worth its own issue, distinct from the poweroff/shutdown problem here.github-actions commentedon Oct 20, 2026
This issue is stale because it has been open for 60 days with no activity. Remove the stale label or add a comment if this issue is still relevant, otherwise this issue will automatically close in 7 days.
jirogit commentedon Nov 9, 2026
Correction: see my next comment — #2701 is a no-op on current dev.
Still relevant — the fix is in #2701 (T114 powerOff() → initiateShutdown(SHUTDOWN_REASON_USER)), which merges cleanly against current dev. RAK4631 is now also covered by #3705.
jirogit commentedon Nov 9, 2026
Update: on current dev / v1.18.0, T114 no longer defines NRF52_POWER_MANAGEMENT (removed in 3984b87, Apr 22), so T114Board::powerOff() falls through to NRF52Board::powerOff(). Since July that path calls shutdownPeripherals() (display off, SX1262 powerOff(), GPS stop) before SYSTEMOFF, so this issue may already be fixed in v1.18.0.
@hleserg could you try poweroff on v1.18.0 on one of your T114s? I’ll test on mine as well when I’m back with the hardware. Note pwrmgt.bootreason will likely still show Shutdown: Unknown, since the shutdown reason is only written via initiateShutdown(), which is compiled only with NRF52_POWER_MANAGEMENT.