feat: Meshtastic lockdown support, region fix, proto upgrade#2
Merged
Conversation
Pull the full upstream proto set from meshtastic/protobufs commit 1c62540 (merge of PR #911 — LockdownAuth + LockdownStatus). Override java_package back to com.geeksville.mesh so existing Kotlin/Java references continue to resolve; drop firmware-only protos the plugin doesn't compile against (apponly, cannedmessages, clientonly, deviceonly, interdevice, mqtt, paxcount, powermon, remote_hardware, rtttl, serial_hal, storeforward — deviceonly transitively pulls in nanopb.proto which is firmware-only). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lockdown (MESHTASTIC_LOCKDOWN-hardened firmware, protobufs PR #911):
- LockdownCoordinator drives state machine from typed FromRadio.lockdown_status;
auto-replays cached passphrase on LOCKED, only prompts on NeedsProvision /
auto-replay failure.
- LockdownPassphraseStore keys passphrase + boots/hours overrides per BLE MAC /
USB path in EncryptedSharedPreferences (AES-256-GCM Keystore master key).
- Outbound AdminMessage.lockdown_auth packet builder enforces the firmware
ToRadio gate: to=myNodeNum, from=0, portnum=ADMIN_APP, hop_limit/start=7,
priority=RELIABLE, pki_encrypted unset.
- Pending-Lock-Now flag synthesizes LockNowAcknowledged on the next inbound
LOCKED status (or on the BLE disconnect if the status races the reboot).
- Settings tab gains a Device Lockdown card (status text + Lock Now button);
passphrase dialog with optional boots / hours overrides; backoff countdown
derived from LockdownStatus.backoff_seconds.
Region fix: TAK auto-config previously hardcoded EU_868; now sets US.
UI refresh: MeshtasticManager fires a configUpdateCallback whenever a Config
response is cached. AtakMeshtasticBridge bubbles it to MeshtasticDropDownReceiver
.onConfigUpdated(), which re-renders the Device Information card. Fixes the
"region still shows old value until I disconnect/reconnect" UX bug.
Version bump: PLUGIN_VERSION 0.2 -> 1.0 for TAK TPP signing submission.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
|
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
Lockdown support for MESHTASTIC_LOCKDOWN-hardened firmware (firmware PR #10349), driven by the typed proto wire format from meshtastic/protobufs PR #911:
LockdownCoordinatordrives a per-BLE-connection state machine offFromRadio.lockdown_status.LOCKED; only prompts onNEEDS_PROVISIONor auto-replay failure.EncryptedSharedPreferences(AES-256-GCM Keystore master key).AdminMessage.lockdown_authpacket builder enforces firmware ToRadio gate:to=myNodeNum,from=0,portnum=ADMIN_APP,hop_limit/start=7,priority=RELIABLE, nopki_encrypted.LockNowAcknowledgedon the next inboundLOCKEDstatus (or on BLE disconnect if status races the reboot).Region fix: TAK auto-config previously hardcoded
EU_868; now setsUS.UI refresh fix: Device Information card now re-renders automatically when a fresh Config response is cached (fixes the "region still shows old value until I disconnect/reconnect" UX bug).
Proto upgrade: Full sync from
meshtastic/protobufsmaster commit1c62540(the merge of PR #911).java_packageoverridden tocom.geeksville.meshso existing Kotlin/Java references continue to work; firmware-only protos that transitively pull innanopb.protowere dropped.Version bump:
PLUGIN_VERSION0.2 → 1.0 for TAK TPP signing submission.Test plan
gradle :app:assembleCivDebug) — clean compile, generatedAdminProtos.LockdownAuth+MeshProtos.LockdownStatus.meshtastic --info).🤖 Generated with Claude Code