Publish verified Companion ASCII repair metadata and connection guide

This commit is contained in:
mikecarper committed 2026-09-13 18:17:51 -07:00
1 parent 54992773f8
commit 25eab1a581
4 files changed
+133 -58

No files matched your search

+54 -54
View File
@@ -117,7 +117,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -281,7 +281,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -373,7 +373,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -611,7 +611,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion capacity: 150 contacts and 256 queued messages; all Full transports are retained. Export contacts before updating if you have more than 150; entries beyond this limit may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": true,
@@ -1279,7 +1279,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Wireless Paper Full capacity: 350 contacts and 40 channels. Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -1411,7 +1411,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion capacity: 150 contacts and 256 queued messages; all Full transports are retained. Export contacts before updating if you have more than 150; entries beyond this limit may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -1543,7 +1543,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion capacity: 150 contacts and 256 queued messages; all Full transports are retained. Export contacts before updating if you have more than 150; entries beyond this limit may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -1673,7 +1673,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -1765,7 +1765,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -1877,7 +1877,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -1987,7 +1987,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -2079,7 +2079,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -2173,7 +2173,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -2302,7 +2302,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion capacity: 100 contacts, 8 channels and 16 queued messages. Export contacts and channels before updating if they exceed these limits; extra entries may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -2440,7 +2440,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion capacity: 150 contacts and 256 queued messages; all Full transports are retained. Export contacts before updating if you have more than 150; entries beyond this limit may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": true,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -2628,7 +2628,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -2720,7 +2720,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -2740,7 +2740,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -2832,7 +2832,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -2924,7 +2924,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -3605,7 +3605,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion capacity: 100 contacts, 8 channels and 16 queued messages. Export contacts and channels before updating if they exceed these limits; extra entries may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -3756,7 +3756,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -4178,7 +4178,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -4270,7 +4270,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -4362,7 +4362,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion capacity: 100 contacts, 30 channels and 16 queued messages. Export contacts and channels before updating if they exceed these limits; extra entries may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -4498,7 +4498,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion capacity: 100 contacts, 30 channels and 16 queued messages. Export contacts and channels before updating if they exceed these limits; extra entries may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -4687,7 +4687,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -4707,7 +4707,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -4799,7 +4799,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -4907,7 +4907,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -5017,7 +5017,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -5310,7 +5310,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -5473,7 +5473,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -5765,7 +5765,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -5929,7 +5929,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -6788,7 +6788,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -7028,7 +7028,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -7248,7 +7248,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -7471,7 +7471,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -7746,7 +7746,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -7766,7 +7766,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -7878,7 +7878,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion capacity: 150 contacts and 256 queued messages; all Full transports are retained. Export contacts before updating if you have more than 150; entries beyond this limit may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -8377,7 +8377,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -8843,7 +8843,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion capacity: 150 contacts and 256 queued messages; all Full transports are retained. Export contacts before updating if you have more than 150; entries beyond this limit may be unavailable or omitted by a later save.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "ESP32_PLATFORM",
"primaryEspnow": false,
@@ -9775,7 +9775,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -9887,7 +9887,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -9999,7 +9999,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -10111,7 +10111,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -10223,7 +10223,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -10335,7 +10335,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -10447,7 +10447,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -10982,7 +10982,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -11057,7 +11057,7 @@
"femTx": false,
"gps": false,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
@@ -11132,7 +11132,7 @@
"femTx": false,
"gps": true,
"memoryNote": "Full Companion queue: 256 offline messages normally; 128 while mOTA borrows queue storage. Sync unread messages with a Companion app before starting mOTA if more than 128 are pending. Stopping or disconnecting the source restores all 256 slots.",
"memorySource": "306feebe6d648a247f925894f876be9d747fc8d2",
"memorySource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8",
"mqtt": false,
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
+10 -3
View File
@@ -1102,12 +1102,19 @@
}
if (companion && ["full", "usb", "usb-ble"].includes(profile.mode)) {
const picocom = "picocom -b 115200 --imap spchex --initstring $'\\r+++MESHCORE-TERM-START\\r' /dev/ttyACM0";
section("Companion USB terminal (Linux / Bash)", [
{ label: "Connect", commands: [picocom],
const terminalActions = [
{ label: "Force ASCII / older firmware", commands: [picocom],
text: "Run this in Bash on the Linux computer connected to the radio. Updated 1.17.1.6 USB Companions default to ASCII at boot and after an observable USB session reset; a valid app frame selects Binary Companion. The init string also opens the ASCII CLI on older firmware or a port left in Binary mode; the leading carriage return clears an unfinished input line. spchex displays binary control bytes safely during the transition." },
{ label: "Recover scrambled terminal", commands: ["reset", picocom],
text: "First exit picocom with Ctrl+A, then Ctrl+X. Run these commands in your Linux shell: reset repairs the terminal display, then picocom reconnects with safe input mapping." },
], "Replace /dev/ttyACM0 with your radio's port, such as /dev/ttyACM1 or /dev/ttyUSB0. Use the primary USB data interface (00 when multiple interfaces appear), and close other apps using that port. At the radio prompt, run version and board to identify the node. Exit picocom with Ctrl+A, then Ctrl+X.");
];
if (/^v1\.17\.1\.6(?:-|$)/.test(profile.releaseFamily || "")) {
terminalActions.unshift({ label: "Connect (ASCII default)",
commands: ["picocom -b 115200 --imap spchex /dev/ttyACM0"],
text: "Updated 1.17.1.6 USB Companions start in ASCII, so a fresh session needs no mode token. Run version or help at the prompt. If this port is still owned by a previous binary client, use Force ASCII / older firmware instead." });
}
section("Companion USB terminal (Linux / Bash)", terminalActions,
"Replace /dev/ttyACM0 with your radio's port, such as /dev/ttyACM1 or /dev/ttyUSB0. Use the primary USB data interface (00 when multiple interfaces appear), and close other apps using that port. At the radio prompt, run version and board to identify the node. Exit picocom with Ctrl+A, then Ctrl+X.");
}
if (!info) return sections;
if (companion && supportsRadioProfileCommands(profile)) {
+68
View File
@@ -0,0 +1,68 @@
# USB Companion ASCII default validation
The updated [1.17.1.6 Companion release](https://github.com/mikecarper/MeshCore/releases/tag/v1.17.1.6-halo-keymind-cascade-dev-306feebe)
covers 103 USB-enabled profiles: 52 ESP32 Full, 43 nRF52 Full, four RP2040 USB,
and four STM32 USB. The BLE-only WM1110 image has no USB interface and is outside
this change.
## Behavior and cause
Ordinary USB Companions previously started in Binary mode. Full Companions
started in ASCII, but host-session cleanup could select or retain Binary mode
for the next connection.
All USB Companions now select ASCII before framed dispatch begins. An
observable USB session boundary cancels old USB operations and clears partial
input, queued protocol output, frame ownership, and mOTA attachment before restoring
ASCII. A network terminal can defer that restoration; a new USB binary client
that connects during the deferral keeps its chosen mode. BLE and network
Companion transports keep their existing binary protocol.
A complete framed app command still selects Binary mode automatically. An
incomplete initial probe returns to ASCII after one second. Explicit terminal
start/stop controls remain available.
Session detection depends on the hardware. Native USB with DTR can detect a
terminal closing. ESP32 hardware USB Serial/JTAG observes bus resets and host
loss, but cannot reliably observe a program closing its handle. UART bridges
usually cannot observe that close either. Idle time never forces an active
binary app back into ASCII; use the start token on a port that remains Binary.
See the [USB mode guide](full_companion_usb_switcher.md).
## Automated validation
- The real firmware startup and reset functions are compiled and executed for
nRF52, ESP32 TinyUSB, ESP32 hardware USB, and RP2040, with and without the
Full macro. Cases include reconnecting from Binary or ASCII, delayed cleanup,
mOTA cancellation, network ownership, and a new binary client during deferral.
- 55 native serial-mode/flow-control tests and 11 terminal-session/diagnostic
tests passed locally, along with 49 USB Python tests and the picker tests.
- STM32 number formatting is tested against an Arduino API without `ltoa`.
CI also compiles an ordinary RAK 3x72 USB Companion with the real core and
RadioLib, so missing packages and GPIO API incompatibilities fail the build.
The 99 ESP32/nRF52/RP2040 profiles use
[`d4a641ff`](https://github.com/mikecarper/MeshCore/commit/d4a641ff8af1b413c8fb96a670282b799be1f6e8).
The four STM32 profiles additionally use the compatible Arduino 2.12 platform
pin and build test in
[`d2c52e4d`](https://github.com/mikecarper/MeshCore/commit/d2c52e4d047c4b1068a1053364d9acaddefa64a1).
Both source revisions passed GitHub checks:
[main repair](https://github.com/mikecarper/MeshCore/actions/runs/34792631229) and
[STM32 repair](https://github.com/mikecarper/MeshCore/actions/runs/34793043594).
All 103 builds passed capability and RAM qualification. Packaging checks bind
each application to its capability and memory manifests, retain the original
profile capabilities and download formats, and verify ESP32 application/merged
image consistency. Replacement publication verifies public SHA-256 digests
before deleting old images and checks that unrelated firmware assets retain
their original hashes. Release manifests, checksum lists, picker links, and
capacity-note source references follow the new binaries.
Publication completed with all 430 uploaded files verified through their public
download URLs. The 412 superseded firmware/manifest files were removed. The
remaining 1,837 assets kept their original hashes, and all five release checksum
lists matched the final GitHub asset digests.
No USB Companion was attached to the local computer for this repair. These
results are compilation and automated protocol tests, not physical USB tests
across the board matrix.
+1 -1
View File
@@ -214,7 +214,7 @@ a long delay. A timed-out client can retry after the ASCII banner appears.
Any complete length-prefixed frame selects binary mode, even if its command is
unknown or malformed at the application layer. This is safe for stream
separation but means a random complete frame can leave the device in binary
mode until manually switched back.
mode until an observable USB session reset or a manual switch back.
### The terminal banner is best effort