diff --git a/docs/_data/firmware_controls.json b/docs/_data/firmware_controls.json index 2f7d7d97..2d3e60f2 100644 --- a/docs/_data/firmware_controls.json +++ b/docs/_data/firmware_controls.json @@ -8,6 +8,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -26,6 +27,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -45,6 +47,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -63,7 +66,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -80,6 +90,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -98,6 +109,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -111,14 +123,22 @@ "webconfig": true }, "GAT562_30S_Mesh_Kit_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -137,6 +157,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -155,6 +176,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -191,6 +213,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -209,6 +232,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -227,6 +251,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -263,6 +288,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -275,14 +301,22 @@ "webconfig": false }, "GAT562_Mesh_Tracker_Pro_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -301,6 +335,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -319,6 +354,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -355,6 +391,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -367,14 +404,22 @@ "webconfig": false }, "GAT562_Mesh_Watch13_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -393,6 +438,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -411,6 +457,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -430,6 +477,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -449,6 +497,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -469,6 +518,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -490,6 +540,7 @@ "memoryNote": "Flood rules: 47 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -511,6 +562,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -530,6 +582,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -550,6 +603,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -571,6 +625,7 @@ "memoryNote": "Flood rules: 47 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -592,6 +647,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -610,9 +666,16 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": true, "rs232": false, @@ -629,6 +692,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": true, "rs232": false, @@ -647,6 +711,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": true, "rs232": false, @@ -666,6 +731,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": true, "rs232": false, @@ -685,6 +751,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": true, "rs232": false, @@ -703,6 +770,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": true, "rs232": false, @@ -721,7 +789,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -740,6 +815,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -758,6 +834,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -777,6 +854,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -796,6 +874,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -815,6 +894,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -833,6 +913,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -851,7 +932,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -870,6 +958,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -888,6 +977,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -907,6 +997,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -926,6 +1017,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -945,6 +1037,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -963,6 +1056,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -981,7 +1075,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1000,6 +1101,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1018,6 +1120,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1037,6 +1140,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1056,6 +1160,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1075,6 +1180,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1093,6 +1199,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1111,7 +1218,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1130,6 +1244,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -1148,6 +1263,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1167,6 +1283,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -1186,6 +1303,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1205,6 +1323,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1223,6 +1342,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1242,6 +1362,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1260,6 +1381,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1278,9 +1400,16 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1299,6 +1428,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1317,6 +1447,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1336,6 +1467,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1355,6 +1487,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1374,6 +1507,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1392,6 +1526,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1410,9 +1545,16 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1431,6 +1573,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1449,6 +1592,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1468,6 +1612,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1487,6 +1632,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1506,6 +1652,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1524,6 +1671,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1542,9 +1690,16 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1561,6 +1716,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1579,6 +1735,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1598,6 +1755,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1617,6 +1775,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1636,6 +1795,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1654,6 +1814,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1667,14 +1828,22 @@ "webconfig": true }, "Heltec_mesh_solar_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1693,6 +1862,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1711,6 +1881,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1747,6 +1918,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1759,14 +1931,22 @@ "webconfig": false }, "Heltec_t096_companion_radio_full_femon": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": true, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1785,6 +1965,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -1805,6 +1986,7 @@ "memoryNote": "Neighbor table: 50 entries. Flood rules: 16 entries; the complete rule engine is retained.", "memorySource": "283acd27f5887961de93cf8e2671e4ac7476f603", "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -1841,6 +2023,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1859,6 +2042,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1871,14 +2055,22 @@ "webconfig": false }, "Heltec_t114_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1897,6 +2089,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -1915,6 +2108,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -1951,6 +2145,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1969,6 +2164,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -1981,14 +2177,22 @@ "webconfig": false }, "Heltec_t114_without_display_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2007,6 +2211,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -2025,6 +2230,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -2061,6 +2267,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2073,14 +2280,22 @@ "webconfig": false }, "Heltec_t1_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2099,6 +2314,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2119,6 +2335,7 @@ "memoryNote": "Neighbor table: 50 entries. Flood rules: 16 entries; the complete rule engine is retained.", "memorySource": "283acd27f5887961de93cf8e2671e4ac7476f603", "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2155,6 +2372,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2167,14 +2385,22 @@ "webconfig": false }, "Heltec_tower_v2_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2193,6 +2419,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2211,6 +2438,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2247,6 +2475,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2265,6 +2494,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2301,9 +2531,16 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2322,6 +2559,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2342,6 +2580,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2363,6 +2602,7 @@ "memoryNote": "Flood rules: 47 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2384,6 +2624,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2403,6 +2644,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2421,6 +2663,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2439,9 +2682,18 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "logging.output", + "loggingModes": [ + "none", + "usb", + "wifi", + "both" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": true, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2460,6 +2712,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -2478,6 +2731,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2497,6 +2751,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -2516,6 +2771,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2535,6 +2791,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2554,6 +2811,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2572,6 +2830,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2591,6 +2850,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2609,6 +2869,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2622,14 +2883,22 @@ "webconfig": true }, "KeepteenLT1_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2648,6 +2917,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2666,6 +2936,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2702,6 +2973,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2714,14 +2986,22 @@ "webconfig": false }, "LilyGo_T-Echo-Lite_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2734,14 +3014,22 @@ "webconfig": false }, "LilyGo_T-Echo-Lite_non_shell_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2760,6 +3048,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2778,6 +3067,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2814,6 +3104,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2826,14 +3117,22 @@ "webconfig": false }, "LilyGo_T-Echo_Card_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2852,6 +3151,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2870,6 +3170,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2906,6 +3207,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2918,14 +3220,22 @@ "webconfig": false }, "LilyGo_T-Echo_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2944,6 +3254,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -2981,6 +3292,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3018,6 +3330,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3035,7 +3348,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3052,6 +3372,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3070,6 +3391,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3089,6 +3411,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3108,6 +3431,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3127,6 +3451,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3145,6 +3470,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3163,7 +3489,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3180,6 +3513,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3198,6 +3532,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3217,6 +3552,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3236,6 +3572,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3255,6 +3592,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3273,6 +3611,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3291,7 +3630,14 @@ "femRx": true, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3308,6 +3654,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3326,6 +3673,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3345,6 +3693,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3364,6 +3713,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3383,6 +3733,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3401,6 +3752,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3419,7 +3771,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3438,6 +3797,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3456,6 +3816,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3475,6 +3836,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3493,7 +3855,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3512,6 +3881,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3530,6 +3900,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3549,6 +3920,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3568,6 +3940,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3586,6 +3959,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3604,9 +3978,16 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3623,6 +4004,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -3641,6 +4023,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -3662,6 +4045,7 @@ "memoryNote": "Flood rules: 47 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3681,6 +4065,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -3702,6 +4087,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3720,6 +4106,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3738,6 +4125,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3750,14 +4138,22 @@ "webconfig": true }, "LilyGo_T_Impulse_Plus_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3776,6 +4172,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3794,6 +4191,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3829,7 +4227,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3846,6 +4251,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3865,6 +4271,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3884,6 +4291,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3902,7 +4310,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3919,6 +4334,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3937,6 +4353,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3956,6 +4373,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3973,7 +4391,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -3992,6 +4417,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4010,6 +4436,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4029,6 +4456,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4048,6 +4476,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -4066,6 +4495,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -4085,6 +4515,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4104,6 +4535,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4122,6 +4554,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4141,6 +4574,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4159,6 +4593,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4172,14 +4607,22 @@ "webconfig": true }, "MeshTracker_X1_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4198,6 +4641,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4216,6 +4660,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4252,6 +4697,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4264,14 +4710,22 @@ "webconfig": false }, "Mesh_pocket_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4290,6 +4744,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4308,6 +4763,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4344,6 +4800,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4361,9 +4818,16 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4380,6 +4844,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4400,6 +4865,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4421,6 +4887,7 @@ "memoryNote": "Flood rules: 47 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4442,6 +4909,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4461,6 +4929,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4479,6 +4948,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4497,9 +4967,16 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4516,6 +4993,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4536,6 +5014,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4557,6 +5036,7 @@ "memoryNote": "Flood rules: 47 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4578,6 +5058,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4597,6 +5078,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4615,6 +5097,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4633,7 +5116,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4650,6 +5140,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4668,6 +5159,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4681,14 +5173,22 @@ "webconfig": false }, "Meshtiny_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4701,14 +5201,22 @@ "webconfig": false }, "Minewsemi_me25ls01_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4727,6 +5235,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4745,6 +5254,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4781,6 +5291,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4793,14 +5304,22 @@ "webconfig": false }, "Nano_G2_Ultra_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4819,6 +5338,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4837,6 +5357,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4873,6 +5394,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4891,6 +5413,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "RP2040_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4901,14 +5424,22 @@ "webconfig": false }, "ProMicro_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4927,6 +5458,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -4945,6 +5477,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -4981,6 +5514,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -4999,6 +5533,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5011,14 +5546,22 @@ "webconfig": false }, "R1Neo_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5037,6 +5580,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5055,6 +5599,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5091,6 +5636,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5109,6 +5655,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5127,6 +5674,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "RP2040_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5142,7 +5690,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5161,6 +5716,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -5179,6 +5735,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5198,6 +5755,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -5217,6 +5775,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5236,6 +5795,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5254,6 +5814,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5273,6 +5834,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5291,6 +5853,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5304,14 +5867,22 @@ "webconfig": true }, "RAK_3401_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5330,6 +5901,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5348,6 +5920,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5384,6 +5957,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5421,6 +5995,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5439,6 +6014,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5457,6 +6033,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "STM32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5467,14 +6044,22 @@ "webconfig": false }, "RAK_4631_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5493,6 +6078,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -5511,6 +6097,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -5547,6 +6134,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -5583,6 +6171,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5601,6 +6190,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -5637,6 +6227,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5674,6 +6265,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5711,6 +6303,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5729,6 +6322,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5747,6 +6341,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5759,14 +6354,22 @@ "webconfig": false }, "RAK_WisMesh_Tag_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5785,6 +6388,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5803,6 +6407,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5839,6 +6444,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5857,6 +6463,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5874,7 +6481,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": true, "rs232": false, @@ -5892,7 +6506,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5910,7 +6531,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5923,14 +6551,22 @@ "webconfig": true }, "SenseCap_Solar_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5949,6 +6585,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -5986,6 +6623,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6023,6 +6661,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6040,7 +6679,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6059,6 +6705,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6077,6 +6724,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6096,6 +6744,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6114,7 +6763,16 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "logging.output", + "loggingModes": [ + "none", + "usb", + "wifi", + "both" + ], + "loggingSource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6134,6 +6792,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6151,7 +6810,16 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "logging.output", + "loggingModes": [ + "none", + "usb", + "wifi", + "both" + ], + "loggingSource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6170,7 +6838,14 @@ "femRx": true, "femTx": true, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6189,6 +6864,7 @@ "femTx": true, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6207,6 +6883,7 @@ "femTx": true, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6226,6 +6903,7 @@ "femTx": true, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6245,6 +6923,7 @@ "femTx": true, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6263,6 +6942,7 @@ "femTx": true, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6281,7 +6961,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6300,6 +6987,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6318,6 +7006,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6337,6 +7026,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6356,6 +7046,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6375,6 +7066,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6393,6 +7085,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6411,7 +7104,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6428,6 +7128,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6448,6 +7149,7 @@ "memoryNote": "Flood rules: 47 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6469,6 +7171,7 @@ "memoryNote": "Flood rules: 31 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6488,6 +7191,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6506,6 +7210,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6524,7 +7229,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6541,6 +7253,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6561,6 +7274,7 @@ "memoryNote": "Flood rules: 47 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6582,6 +7296,7 @@ "memoryNote": "Flood rules: 31 entries; the complete rule engine is retained. Neighbor table: 50 entries.", "memorySource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6601,6 +7316,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6619,6 +7335,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6638,6 +7355,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6656,6 +7374,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6675,6 +7394,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6694,6 +7414,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6713,6 +7434,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6731,6 +7453,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6750,6 +7473,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6769,6 +7493,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6782,14 +7507,22 @@ "webconfig": false }, "ThinkNode_M1_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6808,6 +7541,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6845,6 +7579,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6882,6 +7617,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6900,6 +7636,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6918,6 +7655,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6937,6 +7675,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6956,6 +7695,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6974,7 +7714,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -6991,6 +7738,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7009,6 +7757,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7022,14 +7771,22 @@ "webconfig": true }, "ThinkNode_M3_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7048,6 +7805,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7066,6 +7824,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7102,6 +7861,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7120,6 +7880,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7138,6 +7899,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7157,6 +7919,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7176,6 +7939,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7194,7 +7958,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7211,6 +7982,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7229,6 +8001,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7242,14 +8015,22 @@ "webconfig": true }, "ThinkNode_M6_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7268,6 +8049,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7305,6 +8087,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7342,6 +8125,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7359,7 +8143,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7378,6 +8169,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7396,6 +8188,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7415,6 +8208,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7434,6 +8228,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7452,6 +8247,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7465,14 +8261,22 @@ "webconfig": true }, "ThinkNode_M8_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7491,6 +8295,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7509,6 +8314,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7545,6 +8351,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7562,7 +8369,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7581,6 +8395,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7599,6 +8414,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7618,6 +8434,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7637,6 +8454,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7655,6 +8473,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7674,6 +8493,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "STM32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7689,7 +8509,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7708,6 +8535,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7727,6 +8555,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7740,14 +8569,22 @@ "webconfig": false }, "WioTrackerL1Eink_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7760,14 +8597,22 @@ "webconfig": false }, "WioTrackerL1_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7786,6 +8631,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7823,6 +8669,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7860,6 +8707,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7877,9 +8725,16 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7896,6 +8751,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7914,6 +8770,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7933,6 +8790,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7952,6 +8810,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7970,6 +8829,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -7988,7 +8848,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8005,6 +8872,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8024,6 +8892,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8042,7 +8911,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8061,6 +8937,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8079,6 +8956,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8098,6 +8976,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8117,6 +8996,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8136,6 +9016,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8154,6 +9035,7 @@ "femTx": false, "gps": false, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8173,6 +9055,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8191,6 +9074,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8209,7 +9093,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8228,6 +9119,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8246,6 +9138,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8265,6 +9158,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8284,6 +9178,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8303,6 +9198,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8321,6 +9217,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8340,6 +9237,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8358,6 +9256,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8371,14 +9270,22 @@ "webconfig": true }, "Xiao_nrf52_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8397,6 +9304,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8434,6 +9342,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -8452,6 +9361,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8489,6 +9399,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8507,6 +9418,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "RP2040_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8522,7 +9434,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8541,6 +9460,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8560,6 +9480,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8579,6 +9500,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8598,6 +9520,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8616,6 +9539,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8635,6 +9559,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8653,7 +9578,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8672,6 +9604,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8691,6 +9624,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8710,6 +9644,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8729,6 +9664,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8747,6 +9683,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8766,6 +9703,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8784,6 +9722,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8805,6 +9744,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "1274956f863f625366f211f2058c1db27dfb2fd1", "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8824,6 +9764,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8842,9 +9783,16 @@ "femRx": true, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8863,6 +9811,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8881,6 +9830,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8900,6 +9850,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8921,6 +9872,7 @@ "memoryNote": "Neighbor table: 50 entries.", "memorySource": "1274956f863f625366f211f2058c1db27dfb2fd1", "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8940,6 +9892,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8958,6 +9911,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8977,6 +9931,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -8995,6 +9950,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9013,7 +9969,16 @@ "femRx": true, "femTx": false, "gps": true, + "loggingControl": "logging.output", + "loggingModes": [ + "none", + "usb", + "wifi", + "both" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": true, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9032,6 +9997,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9050,6 +10016,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9069,6 +10036,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9088,6 +10056,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9106,7 +10075,14 @@ "femRx": true, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9124,7 +10100,14 @@ "femRx": true, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9143,6 +10126,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9161,6 +10145,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9180,6 +10165,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9199,6 +10185,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9217,6 +10204,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9236,6 +10224,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9254,6 +10243,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9272,7 +10262,14 @@ "femRx": true, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9291,6 +10288,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9310,6 +10308,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9329,6 +10328,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9347,6 +10347,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9366,6 +10367,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9385,6 +10387,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9403,6 +10406,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9422,6 +10426,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9440,6 +10445,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9459,6 +10465,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9477,6 +10484,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9496,6 +10504,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9515,6 +10524,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9534,6 +10544,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9552,6 +10563,7 @@ "femTx": false, "gps": true, "mqtt": true, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9571,6 +10583,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9589,6 +10602,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9607,7 +10621,14 @@ "femRx": true, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9626,6 +10647,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9644,6 +10666,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9663,6 +10686,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9682,6 +10706,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9701,6 +10726,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9719,6 +10745,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9738,6 +10765,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9756,6 +10784,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9769,14 +10798,22 @@ "webconfig": true }, "ikoka_handheld_nrf_e22_30dbm_096_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9795,6 +10832,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9832,6 +10870,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9869,6 +10908,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9881,14 +10921,22 @@ "webconfig": false }, "ikoka_nano_nrf_22dbm_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9907,6 +10955,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9944,6 +10993,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9981,6 +11031,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -9993,14 +11044,22 @@ "webconfig": false }, "ikoka_nano_nrf_30dbm_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10019,6 +11078,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10056,6 +11116,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10093,6 +11154,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10105,14 +11167,22 @@ "webconfig": false }, "ikoka_nano_nrf_33dbm_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10131,6 +11201,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10168,6 +11239,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10205,6 +11277,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10217,14 +11290,22 @@ "webconfig": false }, "ikoka_stick_nrf_22dbm_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10243,6 +11324,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10280,6 +11362,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10317,6 +11400,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10329,14 +11413,22 @@ "webconfig": false }, "ikoka_stick_nrf_30dbm_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10361,6 +11453,7 @@ ], "loggingSource": "283acd27f5887961de93cf8e2671e4ac7476f603", "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10402,6 +11495,7 @@ ], "loggingSource": "306feebe6d648a247f925894f876be9d747fc8d2", "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10439,6 +11533,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10451,14 +11546,22 @@ "webconfig": false }, "ikoka_stick_nrf_33dbm_companion_radio_full": { + "dedicatedUsbLogging": true, "display": true, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10477,6 +11580,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10514,6 +11618,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10551,6 +11656,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10568,7 +11674,14 @@ "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10587,6 +11700,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10605,6 +11719,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10624,6 +11739,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10643,6 +11759,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10662,6 +11779,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10680,6 +11798,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10699,6 +11818,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10717,6 +11837,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10735,7 +11856,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10752,6 +11880,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10770,6 +11899,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10789,6 +11919,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10808,6 +11939,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10827,6 +11959,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10845,6 +11978,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10863,7 +11997,14 @@ "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10880,6 +12021,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10898,6 +12040,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10917,6 +12060,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10936,6 +12080,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10955,6 +12100,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10973,6 +12119,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "ESP32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -10986,14 +12133,22 @@ "webconfig": true }, "solarxiao_30S_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11012,6 +12167,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -11049,6 +12205,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11061,14 +12218,22 @@ "webconfig": false }, "solarxiao_33S_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": false, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11087,6 +12252,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": true, @@ -11124,6 +12290,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11136,14 +12303,22 @@ "webconfig": false }, "t1000e_companion_radio_full": { + "dedicatedUsbLogging": true, "display": false, "espnowBridge": false, "femRx": false, "femTx": false, "gps": true, + "loggingControl": "usb.logging", + "loggingModes": [ + "none", + "usb" + ], + "loggingSource": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "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": "d4a641ff8af1b413c8fb96a670282b799be1f6e8", "mqtt": false, + "otaRole": "lora-source", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11162,6 +12337,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11180,6 +12356,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11216,6 +12393,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11234,6 +12412,7 @@ "femTx": false, "gps": true, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11252,6 +12431,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "RP2040_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11268,6 +12448,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "STM32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11284,6 +12465,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "STM32_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11300,6 +12482,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11318,6 +12501,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11336,6 +12520,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "lora-receiver", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, @@ -11372,6 +12557,7 @@ "femTx": false, "gps": false, "mqtt": false, + "otaRole": "none", "platform": "NRF52_PLATFORM", "primaryEspnow": false, "rs232": false, diff --git a/scripts/generate_picker_controls.py b/scripts/generate_picker_controls.py index 1eaee606..bc87ff63 100644 --- a/scripts/generate_picker_controls.py +++ b/scripts/generate_picker_controls.py @@ -51,6 +51,29 @@ def capacity_note(reductions, defines): return ' '.join(notes) +def runtime_metadata(manifest, mqtt): + """Keep picker choices tied to capabilities proven in this exact image.""" + capabilities = set(manifest['capabilities']) + verified = {check['capability'] for check in manifest.get('verification', []) + if check.get('present') is True} + packaged = {check['capability'] for check in manifest.get('verification', []) + if check.get('present') is True and check.get('source') == 'packaged application'} + if 'ota.update.lora' in capabilities and 'lora' in manifest.get('ota_update_methods', []): + ota_role = 'lora-receiver' + elif 'companion.mota_sender' in verified: + ota_role = 'lora-source' + else: + ota_role = 'none' + result = {'otaRole': ota_role} + if {'logging.usb.packets', 'logging.usb.control'} <= packaged: + result['loggingModes'] = ['none', 'usb', 'wifi', 'both'] if mqtt else ['none', 'usb'] + result['loggingControl'] = 'logging.output' if mqtt else 'usb.logging' + result['loggingSource'] = manifest['source_commit'] + if 'companion.dedicated_usb_logging' in verified: + result['dedicatedUsbLogging'] = True + return result + + def generate(stage, config): plan = json.loads((stage / 'release-plan.json').read_text()) envs = {name: dict(options) for name, options in config} @@ -98,6 +121,7 @@ def generate(stage, config): 'snmp': enabled('WITH_SNMP'), 'updateMethods': manifest.get('ota_update_methods', []), } + controls.update(runtime_metadata(manifest, controls['mqtt'])) if manifest.get('ota_update_requirements'): controls['updateRequirements'] = manifest['ota_update_requirements'] note = capacity_note(manifest.get('reductions', []), defines) diff --git a/test/test_picker_controls_generator.py b/test/test_picker_controls_generator.py index 1664b7f6..00ff22c0 100644 --- a/test/test_picker_controls_generator.py +++ b/test/test_picker_controls_generator.py @@ -11,6 +11,29 @@ SPEC.loader.exec_module(GENERATOR) class PickerControlsTests(unittest.TestCase): + def test_runtime_metadata_uses_verified_image_capabilities(self): + source = 'a' * 40 + manifest = dict(source_commit=source, + capabilities=['companion.mota_sender', 'logging.usb.packets', + 'logging.usb.control', 'companion.dedicated_usb_logging'], + ota_update_methods=[], verification=[ + dict(capability='companion.mota_sender', present=True, source='linked image'), + dict(capability='companion.dedicated_usb_logging', present=True, source='linked image'), + dict(capability='logging.usb.packets', present=True, source='packaged application'), + dict(capability='logging.usb.control', present=True, source='packaged application'), + ]) + self.assertEqual(GENERATOR.runtime_metadata(manifest, False), dict( + otaRole='lora-source', loggingModes=['none', 'usb'], + loggingControl='usb.logging', loggingSource=source, + dedicatedUsbLogging=True)) + self.assertEqual(GENERATOR.runtime_metadata(manifest, True)['loggingModes'], + ['none', 'usb', 'wifi', 'both']) + manifest['verification'][-1]['source'] = 'linked image' + self.assertNotIn('loggingModes', GENERATOR.runtime_metadata(manifest, False)) + manifest['capabilities'].append('ota.update.lora') + manifest['ota_update_methods'] = ['lora'] + self.assertEqual(GENERATOR.runtime_metadata(manifest, False)['otaRole'], 'lora-receiver') + def generate(self, reductions, *, source=None, flags=(), verified=True): initial = 'a' * 40 manifest = dict(target='sample_companion_radio_full', platformio_env='sample',