Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
7656d81
feat(firmware): add fail-closed SoftDevice metadata and pinned mainte…
jamesarich Jul 30, 2026
e149c07
feat(firmware): verify pinned maintenance images and gate erase avail…
jamesarich Jul 30, 2026
4283dbd
feat(firmware): resolve OTAFIX bootloaders by the Board-ID the device…
jamesarich Jul 30, 2026
15e3cce
feat(firmware): read the installed SoftDevice off the drive instead o…
jamesarich Jul 30, 2026
57d4054
test(firmware): anchor both SoftDevice variants to captured hardware …
jamesarich Jul 30, 2026
ccafa03
test(firmware): cover the 0.4.3 bootloader vintage and Board-ID stabi…
jamesarich Jul 30, 2026
77bb018
feat(firmware): add UF2 volume tree read/write primitives
jamesarich Jul 30, 2026
ae3ff4e
feat(ui): add a directory-picker launcher alongside the save-file lau…
jamesarich Jul 30, 2026
9366041
feat(firmware): vet the UF2 volume and choose the image from what it …
jamesarich Jul 30, 2026
61bf887
feat(firmware): drive the multi-pass USB maintenance sequence
jamesarich Jul 30, 2026
d2fc445
style(firmware): satisfy the lint gate after the maintenance work
jamesarich Jul 30, 2026
d3bac01
feat(firmware): surface factory erase and bootloader upgrade on the R…
jamesarich Jul 30, 2026
40db007
fix(firmware): correct the claim that a .uf2 cannot update a bootloader
jamesarich Jul 30, 2026
e7593fc
test(firmware): guard the fail-closed SoftDevice map and the maintena…
jamesarich Jul 30, 2026
00961c9
feat(firmware): stop the radio transport claiming the device mid-main…
jamesarich Jul 30, 2026
22866de
fix(firmware): release the maintenance lock when the sequence's final…
jamesarich Jul 30, 2026
28a9548
fix(firmware): refuse a bootloader upgrade the maintenance gate never…
jamesarich Jul 30, 2026
079a4d6
refine(firmware): fix the three deferred review findings
jamesarich Jul 30, 2026
054d9b0
fix(firmware): stop escaping apostrophes in the new maintenance strings
jamesarich Jul 30, 2026
858bab0
Merge remote-tracking branch 'origin/main' into claude/meshtastic-fir…
jamesarich Jul 30, 2026
ef3ff53
Merge remote-tracking branch 'origin/main' into claude/meshtastic-fir…
jamesarich Aug 14, 2026
963b333
test(firmware): settle maintenance-flow tests in real time for CMP 1.12
jamesarich Aug 14, 2026
66faa33
feat(firmware): make wiping the device an opt-in on the update itself
jamesarich Aug 14, 2026
9c8eaa0
refine(firmware): close the hidden-gate wipe hole and calm detekt
jamesarich Aug 14, 2026
bd0ecbb
fix(firmware): don't escape the apostrophe in the new wipe string
jamesarich Aug 15, 2026
a57ac0f
refine(firmware): apply the CodeRabbit review round
jamesarich Aug 15, 2026
b3ca2e9
fix(test): no comma in a common-test name — illegal in Kotlin/Native
jamesarich Aug 15, 2026
e663e95
fix(firmware): preflight the post-update USB permission, widen detach…
jamesarich Aug 15, 2026
2668ac9
fix(firmware): reconnect explicitly once the post-update USB grant is…
jamesarich Aug 17, 2026
c811b20
merge: resolve conflicts with main before rebasing PR #6526's due dil…
jamesarich Aug 17, 2026
7a10dfa
fix(firmware): bound the post-update USB permission dialog wait
jamesarich Aug 17, 2026
8f12349
fix(firmware): bound the CDC-unblock permission wait, avoid first() o…
jamesarich Aug 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .skills/compose-ui/strings-index.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

252 changes: 251 additions & 1 deletion androidApp/src/main/assets/device_bootloader_ota_quirks.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,255 @@
"requiresBootloaderUpgradeForOta": true,
"infoUrl": "https://meshtastic.org/docs/getting-started/flashing-firmware/nrf52/update-nrf52-bootloader/"
}
],
"softDeviceVariants": [
{
"hwModel": 7,
"hwModelSlug": "T_ECHO",
"platformioTargets": [
"t-echo"
],
"softDevice": "6.1.1"
},
{
"hwModel": 9,
"hwModelSlug": "RAK4631",
"platformioTargets": [
"rak4631"
],
"softDevice": "6.1.1"
},
{
"hwModel": 18,
"hwModelSlug": "NANO_G2_ULTRA",
"platformioTargets": [
"nano-g2-ultra"
],
"softDevice": "6.1.1"
},
{
"hwModel": 21,
"hwModelSlug": "WIO_WM1110",
"platformioTargets": [
"wio-tracker-wm1110"
],
"softDevice": "7.3.0"
},
{
"hwModel": 22,
"hwModelSlug": "WISMESH_HUB",
"platformioTargets": [
"rak2560"
],
"softDevice": "6.1.1"
},
{
"hwModel": 29,
"hwModelSlug": "CANARYONE",
"platformioTargets": [
"canaryone"
],
"softDevice": "6.1.1"
},
{
"hwModel": 33,
"hwModelSlug": "T_ECHO_PLUS",
"platformioTargets": [
"t-echo-plus"
],
"softDevice": "6.1.1"
},
{
"hwModel": 63,
"hwModelSlug": "NRF52_PROMICRO_DIY",
"platformioTargets": [
"nrf52_promicro_diy_tcxo"
],
"softDevice": "6.1.1"
},
{
"hwModel": 69,
"hwModelSlug": "HELTEC_MESH_NODE_T114",
"platformioTargets": [
"heltec-mesh-node-t114"
],
"softDevice": "6.1.1"
},
{
"hwModel": 71,
"hwModelSlug": "TRACKER_T1000_E",
"platformioTargets": [
"tracker-t1000-e"
],
"softDevice": "7.3.0"
},
{
"hwModel": 84,
"hwModelSlug": "WISMESH_TAP",
"platformioTargets": [
"rak_wismeshtap"
],
"softDevice": "6.1.1"
},
{
"hwModel": 88,
"hwModelSlug": "XIAO_NRF52_KIT",
"platformioTargets": [
"seeed_xiao_nrf52840_kit"
],
"softDevice": "7.3.0"
},
{
"hwModel": 89,
"hwModelSlug": "THINKNODE_M1",
"platformioTargets": [
"thinknode_m1"
],
"softDevice": "6.1.1"
},
{
"hwModel": 93,
"hwModelSlug": "MUZI_BASE",
"platformioTargets": [
"muzi-base"
],
"softDevice": "6.1.1"
},
{
"hwModel": 94,
"hwModelSlug": "HELTEC_MESH_POCKET",
"platformioTargets": [
"heltec-mesh-pocket-10000",
"heltec-mesh-pocket-5000"
],
"softDevice": "6.1.1"
},
{
"hwModel": 95,
"hwModelSlug": "SEEED_SOLAR_NODE",
"platformioTargets": [
"seeed_solar_node"
],
"softDevice": "7.3.0"
},
{
"hwModel": 96,
"hwModelSlug": "NOMADSTAR_METEOR_PRO",
"platformioTargets": [
"rak4631_nomadstar_meteor_pro"
],
"softDevice": "6.1.1"
},
{
"hwModel": 99,
"hwModelSlug": "SEEED_WIO_TRACKER_L1",
"platformioTargets": [
"seeed_wio_tracker_L1"
],
"softDevice": "7.3.0"
},
{
"hwModel": 100,
"hwModelSlug": "SEEED_WIO_TRACKER_L1_EINK",
"platformioTargets": [
"seeed_wio_tracker_L1_eink"
],
"softDevice": "7.3.0"
},
{
"hwModel": 101,
"hwModelSlug": "MUZI_R1_NEO",
"platformioTargets": [
"r1-neo"
],
"softDevice": "6.1.1"
},
{
"hwModel": 105,
"hwModelSlug": "WISMESH_TAG",
"platformioTargets": [
"rak_wismeshtag"
],
"softDevice": "6.1.1"
},
{
"hwModel": 108,
"hwModelSlug": "HELTEC_MESH_SOLAR",
"platformioTargets": [
"heltec-mesh-solar"
],
"softDevice": "6.1.1"
},
{
"hwModel": 109,
"hwModelSlug": "T_ECHO_LITE",
"platformioTargets": [
"t-echo-lite"
],
"softDevice": "6.1.1"
},
{
"hwModel": 115,
"hwModelSlug": "THINKNODE_M3",
"platformioTargets": [
"thinknode_m3"
],
"softDevice": "6.1.1"
},
{
"hwModel": 117,
"hwModelSlug": "RAK3401",
"platformioTargets": [
"rak3401-1watt"
],
"softDevice": "6.1.1"
},
{
"hwModel": 119,
"hwModelSlug": "THINKNODE_M4",
"platformioTargets": [
"thinknode_m4"
],
"softDevice": "6.1.1"
},
{
"hwModel": 120,
"hwModelSlug": "THINKNODE_M6",
"platformioTargets": [
"thinknode_m6"
],
"softDevice": "6.1.1"
},
{
"hwModel": 127,
"hwModelSlug": "HELTEC_MESH_NODE_T096",
"platformioTargets": [
"heltec-mesh-node-t096"
],
"softDevice": "6.1.1"
},
{
"hwModel": 128,
"hwModelSlug": "MESH_TRACKER_X1",
"platformioTargets": [
"seeed_mesh_tracker_X1"
],
"softDevice": "7.3.0"
},
{
"hwModel": 130,
"hwModelSlug": "THINKNODE_M8",
"platformioTargets": [
"thinknode_m8"
]
},
{
"hwModel": 133,
"hwModelSlug": "HELTEC_MESH_NODE_T1",
"platformioTargets": [
"heltec-mesh-node-t1"
],
"softDevice": "6.1.1"
}
]
}
}
Loading
Loading