Publish qualified T114 screen-detection picker defaults

This commit is contained in:
mikecarper committed 2026-10-18 18:19:38 -07:00
1 parent b8f8a1fae1
commit 74756c9ded
4 files changed
+441 -3

No files matched your search

+418 -1
View File
@@ -15582,5 +15582,422 @@
"webconfig": false
}
},
"source": "88c85108005a30a730fa7b78b2899b210754f3be"
"source": "88c85108005a30a730fa7b78b2899b210754f3be",
"supplementalReleases": [
{
"familyTag": "v1.18.0.1.preview1-794f5f7b",
"partitionMigrations": {
"Ebyte_EoRa-S3_Repeater": "ebyte-eora-s3-repeater",
"Ebyte_EoRa-S3_room_server": "ebyte-eora-s3-room-server",
"Generic_E22_sx1262_repeater": "generic-e22-sx1262-repeater",
"Generic_E22_sx1268_repeater": "generic-e22-sx1268-repeater",
"Heltec_E213_repeater": "heltec-e213-repeater",
"Heltec_E213_room_server": "heltec-e213-room-server",
"Heltec_E290_repeater": "heltec-e290-repeater",
"Heltec_E290_room_server": "heltec-e290-room-server",
"Heltec_T190_repeater_": "heltec-t190-repeater",
"Heltec_T190_room_server_": "heltec-t190-room-server",
"Heltec_WSL3_repeater": "heltec-wsl3-repeater",
"Heltec_WSL3_room_server": "heltec-wsl3-room-server",
"Heltec_WSL3_sensor": "heltec-wsl3-sensor",
"Heltec_Wireless_Paper_repeater": "heltec-wireless-paper-repeater",
"Heltec_Wireless_Paper_room_server": "heltec-wireless-paper-room-server",
"Heltec_Wireless_Tracker_repeater": "heltec-wireless-tracker-repeater",
"Heltec_Wireless_Tracker_room_server": "heltec-wireless-tracker-room-server",
"Heltec_ct62_repeater": "heltec-ct62-repeater",
"Heltec_ct62_sensor": "heltec-ct62-sensor",
"Heltec_v2_repeater": "heltec-v2-repeater",
"Heltec_v2_room_server": "heltec-v2-room-server",
"Heltec_v3_repeater": "heltec-v3-repeater",
"Heltec_v3_room_server": "heltec-v3-room-server",
"Heltec_v3_sensor": "heltec-v3-sensor",
"LilyGo_T3S3_sx1262_repeater": "t3s3-sx1262-repeater",
"LilyGo_T3S3_sx1262_room_server": "t3s3-sx1262-room-server",
"LilyGo_T3S3_sx1276_repeater": "t3s3-sx1276-repeater",
"LilyGo_T3S3_sx1276_room_server": "t3s3-sx1276-room-server",
"LilyGo_TBeam_1W_repeater": "lilygo-tbeam-1w-repeater",
"LilyGo_TBeam_1W_room_server": "lilygo-tbeam-1w-room-server",
"LilyGo_TDeck_repeater": "lilygo-tdeck-repeater",
"LilyGo_TETH_Elite_sx1262_repeater": "lilygo-teth-elite-sx1262-repeater",
"LilyGo_TETH_Elite_sx1262_room_server": "lilygo-teth-elite-sx1262-room-server",
"MKE_s3_repeater": "mke-s3-repeater",
"MKE_s3_room_server": "mke-s3-room-server",
"MKE_s3_sensor": "mke-s3-sensor",
"RAK_3112_repeater": "rak-3112-repeater",
"RAK_3112_room_server": "rak-3112-room-server",
"RAK_3112_sensor": "rak-3112-sensor",
"Station_G2_logging_repeater": "station-g2-logging-repeater",
"Station_G2_repeater": "station-g2-repeater",
"Station_G2_room_server": "station-g2-room-server",
"Station_G3_ESP32_logging_repeater": "station-g3-esp32-logging-repeater",
"Station_G3_ESP32_repeater": "station-g3-esp32-repeater",
"Station_G3_ESP32_room_server": "station-g3-esp32-room-server",
"T_Beam_S3_Supreme_SX1262_repeater": "t-beam-s3-supreme-sx1262-repeater",
"T_Beam_S3_Supreme_SX1262_room_server": "t-beam-s3-supreme-sx1262-room-server",
"Tenstar_C3_sx1262_repeater": "tenstar-c3-sx1262-repeater",
"Tenstar_C3_sx1268_repeater": "tenstar-c3-sx1268-repeater",
"ThinkNode_M2_Repeater": "thinknode-m2-repeater",
"ThinkNode_M2_room_server": "thinknode-m2-room-server",
"ThinkNode_M5_Repeater": "thinknode-m5-repeater",
"ThinkNode_M5_room_server": "thinknode-m5-room-server",
"ThinkNode_M7_repeater": "thinknode-m7-repeater",
"ThinkNode_M7_room_server": "thinknode-m7-room-server",
"ThinkNode_M9_repeater_": "thinknode-m9-repeater",
"ThinkNode_M9_room_server_": "thinknode-m9-room-server",
"Waveshare_S3_LR1121_repeater_observer_mqtt": "waveshare-s3-lr1121-observer-repeater",
"Waveshare_S3_LR1121_room_server_observer_mqtt": "waveshare-s3-lr1121-observer-room-server",
"Xiao_C3_repeater": "xiao-c3-repeater",
"Xiao_C3_room_server": "xiao-c3-room-server",
"Xiao_S3_WIO_repeater": "xiao-s3-wio",
"Xiao_S3_WIO_room_server": "xiao-s3-wio-room-server",
"Xiao_S3_WIO_sensor": "xiao-s3-wio-sensor",
"Xiao_S3_repeater": "xiao-s3-repeater",
"Xiao_S3_room_server": "xiao-s3-room-server",
"Xiao_S3_sensor": "xiao-s3-sensor",
"heltec_rc32_repeater": "heltec-rc32-repeater",
"heltec_rc32_room_server": "heltec-rc32-room-server",
"heltec_rc32_sensor": "heltec-rc32-sensor",
"heltec_rc32_without_display_repeater": "heltec-rc32-no-display-repeater",
"heltec_rc32_without_display_room_server": "heltec-rc32-no-display-room-server",
"heltec_rc32_without_display_sensor": "heltec-rc32-no-display-sensor",
"heltec_tracker_v2_repeater": "heltec-tracker-v2-repeater",
"heltec_tracker_v2_room_server": "heltec-tracker-v2-room-server",
"heltec_tracker_v2_sensor": "heltec-tracker-v2-sensor",
"heltec_v4_expansionkit_repeater": "heltec-v4-expansionkit-repeater",
"heltec_v4_r8_repeater": "heltec-v4-r8-repeater",
"heltec_v4_r8_room_server": "heltec-v4-r8-room-server",
"heltec_v4_r8_sensor": "heltec-v4-r8-sensor",
"heltec_v4_r8_tft_repeater": "heltec-v4-r8-tft-repeater",
"heltec_v4_r8_tft_room_server": "heltec-v4-r8-tft-room-server",
"heltec_v4_r8_tft_sensor": "heltec-v4-r8-tft-sensor",
"heltec_v4_repeater": "heltec-v4",
"heltec_v4_room_server": "heltec-v4-room-server",
"heltec_v4_sensor": "heltec-v4-sensor",
"heltec_v4_tft_repeater": "heltec-v4-tft-repeater",
"heltec_v4_tft_room_server": "heltec-v4-tft-room-server",
"heltec_v4_tft_sensor": "heltec-v4-tft-sensor",
"meshnology_w12_repeater": "meshnology-w12-repeater",
"meshnology_w12_room_server": "meshnology-w12-room-server",
"meshnology_w12_sensor": "meshnology-w12-sensor",
"nibble_screen_connect_repeater_": "nibble-screen-repeater",
"nibble_screen_connect_room_server_": "nibble-screen-room-server",
"nibble_zero_connect_repeater_": "nibble-zero-repeater",
"nibble_zero_connect_room_server_": "nibble-zero-room-server"
},
"profiles": {
"Heltec_t114_companion_radio_full": {
"dedicatedUsbLogging": true,
"display": true,
"displayAuto": true,
"displayController": "st7789",
"displaySource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"espnowBridge": false,
"femRx": false,
"femTx": false,
"gps": true,
"loggingControl": "usb.logging",
"loggingModes": [
"none",
"usb"
],
"loggingSource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"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": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"mqtt": false,
"otaRole": "lora-source",
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
"rs232": false,
"rxgain": true,
"rxps": true,
"snmp": false,
"updateMethods": [
"bluetooth"
],
"webconfig": false
},
"Heltec_t114_kiss_modem": {
"display": false,
"espnowBridge": false,
"femRx": false,
"femTx": false,
"gps": true,
"mqtt": false,
"otaRole": "none",
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
"rs232": false,
"rxgain": true,
"rxps": true,
"snmp": false,
"updateMethods": [],
"webconfig": false
},
"Heltec_t114_repeater_lora_ota_no_external_sensors-full": {
"display": true,
"displayAuto": true,
"displayController": "st7789",
"displaySource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"espnowBridge": false,
"femRx": false,
"femTx": false,
"gps": true,
"mqtt": false,
"otaRole": "lora-receiver",
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
"rs232": true,
"rs232Merged": true,
"rs232Source": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"rxgain": true,
"rxps": true,
"sensorProfile": "full",
"sensorProfileSource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"snmp": false,
"updateMethods": [
"bluetooth",
"lora"
],
"updateRequirements": {
"lora": {
"bootloader": "Matching board/storage OTAFIX bootloader",
"bootloader_release": "https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/v0.11.0-OTAFIX2.4.11",
"notes": [
"Use a destination-specific .mota package matching the board, target, and storage layout.",
"An in-place delta requires the exact firmware currently running as its base.",
"The package must fit the receiver's staging and apply workspace.",
"Check the release's exact-board bootloader manifest; hardware-pending boards are not covered by the normal release.",
"Artifact inspection verifies compiled support; it does not verify the bootloader installed on a physical device.",
"Requires the exact-board retained-RAM handoff bootloader profile; a transfer cannot resume after the receiver restarts."
],
"package_types": [
"in_place_delta"
],
"storage": "internal_flash_and_retained_ram"
}
},
"webconfig": false
},
"Heltec_t114_repeater_lora_ota_no_external_sensors-reduced": {
"display": true,
"displayAuto": true,
"displayController": "st7789",
"displaySource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"espnowBridge": false,
"femRx": false,
"femTx": false,
"gps": true,
"mqtt": false,
"otaRole": "lora-receiver",
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
"rs232": true,
"rs232Merged": true,
"rs232Source": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"rxgain": true,
"rxps": true,
"sensorProfile": "reduced",
"sensorProfileSource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"snmp": false,
"updateMethods": [
"bluetooth",
"lora"
],
"updateRequirements": {
"lora": {
"bootloader": "Matching board/storage OTAFIX bootloader",
"bootloader_release": "https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/v0.11.0-OTAFIX2.4.11",
"notes": [
"Use a destination-specific .mota package matching the board, target, and storage layout.",
"An in-place delta requires the exact firmware currently running as its base.",
"The package must fit the receiver's staging and apply workspace.",
"Check the release's exact-board bootloader manifest; hardware-pending boards are not covered by the normal release.",
"Artifact inspection verifies compiled support; it does not verify the bootloader installed on a physical device.",
"Requires the exact-board retained-RAM handoff bootloader profile; a transfer cannot resume after the receiver restarts."
],
"package_types": [
"in_place_delta"
],
"storage": "internal_flash_and_retained_ram"
}
},
"webconfig": false
},
"Heltec_t114_room_server_lora_ota_no_external_sensors-full": {
"display": true,
"displayAuto": true,
"displayController": "st7789",
"displaySource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"espnowBridge": false,
"femRx": false,
"femTx": false,
"gps": true,
"mqtt": false,
"otaRole": "lora-receiver",
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
"rs232": false,
"rxgain": true,
"rxps": true,
"sensorProfile": "full",
"sensorProfileSource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"snmp": false,
"updateMethods": [
"bluetooth",
"lora"
],
"updateRequirements": {
"lora": {
"bootloader": "Matching board/storage OTAFIX bootloader",
"bootloader_release": "https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/v0.11.0-OTAFIX2.4.11",
"notes": [
"Use a destination-specific .mota package matching the board, target, and storage layout.",
"An in-place delta requires the exact firmware currently running as its base.",
"The package must fit the receiver's staging and apply workspace.",
"Check the release's exact-board bootloader manifest; hardware-pending boards are not covered by the normal release.",
"Artifact inspection verifies compiled support; it does not verify the bootloader installed on a physical device.",
"Internal storage accepts in-place application deltas, not full application packages."
],
"package_types": [
"in_place_delta"
],
"storage": "internal_flash"
}
},
"webconfig": false
},
"Heltec_t114_room_server_lora_ota_no_external_sensors-reduced": {
"display": true,
"displayAuto": true,
"displayController": "st7789",
"displaySource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"espnowBridge": false,
"femRx": false,
"femTx": false,
"gps": true,
"mqtt": false,
"otaRole": "lora-receiver",
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
"rs232": false,
"rxgain": true,
"rxps": true,
"sensorProfile": "reduced",
"sensorProfileSource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"snmp": false,
"updateMethods": [
"bluetooth",
"lora"
],
"updateRequirements": {
"lora": {
"bootloader": "Matching board/storage OTAFIX bootloader",
"bootloader_release": "https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/v0.11.0-OTAFIX2.4.11",
"notes": [
"Use a destination-specific .mota package matching the board, target, and storage layout.",
"An in-place delta requires the exact firmware currently running as its base.",
"The package must fit the receiver's staging and apply workspace.",
"Check the release's exact-board bootloader manifest; hardware-pending boards are not covered by the normal release.",
"Artifact inspection verifies compiled support; it does not verify the bootloader installed on a physical device.",
"Internal storage accepts in-place application deltas, not full application packages."
],
"package_types": [
"in_place_delta"
],
"storage": "internal_flash"
}
},
"webconfig": false
},
"Heltec_t114_sensor_lora_ota_no_external_sensors-full": {
"display": true,
"displayAuto": true,
"displayController": "st7789",
"displaySource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"espnowBridge": false,
"femRx": false,
"femTx": false,
"gps": true,
"mqtt": false,
"otaRole": "lora-receiver",
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
"rs232": false,
"rxgain": true,
"rxps": true,
"sensorProfile": "full",
"sensorProfileSource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"snmp": false,
"updateMethods": [
"bluetooth",
"lora"
],
"updateRequirements": {
"lora": {
"bootloader": "Matching board/storage OTAFIX bootloader",
"bootloader_release": "https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/v0.11.0-OTAFIX2.4.11",
"notes": [
"Use a destination-specific .mota package matching the board, target, and storage layout.",
"An in-place delta requires the exact firmware currently running as its base.",
"The package must fit the receiver's staging and apply workspace.",
"Check the release's exact-board bootloader manifest; hardware-pending boards are not covered by the normal release.",
"Artifact inspection verifies compiled support; it does not verify the bootloader installed on a physical device.",
"Internal storage accepts in-place application deltas, not full application packages."
],
"package_types": [
"in_place_delta"
],
"storage": "internal_flash"
}
},
"webconfig": false
},
"Heltec_t114_sensor_lora_ota_no_external_sensors-reduced": {
"display": true,
"displayAuto": true,
"displayController": "st7789",
"displaySource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"espnowBridge": false,
"femRx": false,
"femTx": false,
"gps": true,
"mqtt": false,
"otaRole": "lora-receiver",
"platform": "NRF52_PLATFORM",
"primaryEspnow": false,
"rs232": false,
"rxgain": true,
"rxps": true,
"sensorProfile": "reduced",
"sensorProfileSource": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"snmp": false,
"updateMethods": [
"bluetooth",
"lora"
],
"updateRequirements": {
"lora": {
"bootloader": "Matching board/storage OTAFIX bootloader",
"bootloader_release": "https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/v0.11.0-OTAFIX2.4.11",
"notes": [
"Use a destination-specific .mota package matching the board, target, and storage layout.",
"An in-place delta requires the exact firmware currently running as its base.",
"The package must fit the receiver's staging and apply workspace.",
"Check the release's exact-board bootloader manifest; hardware-pending boards are not covered by the normal release.",
"Artifact inspection verifies compiled support; it does not verify the bootloader installed on a physical device.",
"Internal storage accepts in-place application deltas, not full application packages."
],
"package_types": [
"in_place_delta"
],
"storage": "internal_flash"
}
},
"webconfig": false
}
},
"source": "794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a",
"releaseTag": "heltec-t114-v1.18.0.1.preview1"
}
]
}
+1 -1
View File
@@ -4,7 +4,7 @@
# Firmware picker
<div class="firmware-picker" data-firmware-picker data-release-repo="mikecarper/MeshCore" data-controls-url="../_data/firmware_controls.json?v=1.17.1.9-88c85108" data-bootloaders-url="../_data/bootloader_manifest.json?v=20261002-1" data-share-url="https://mikecarper.github.io/MeshCore/p/">
<div class="firmware-picker" data-firmware-picker data-release-repo="mikecarper/MeshCore" data-controls-url="../_data/firmware_controls.json?v=t114-autodisplay-794f5f7b" data-bootloaders-url="../_data/bootloader_manifest.json?v=20261002-1" data-share-url="https://mikecarper.github.io/MeshCore/p/">
<form class="firmware-picker-form" data-role="form">
<div class="firmware-picker-feedback firmware-picker-wide" data-role="filter-feedback" hidden>
<div aria-live="polite" aria-atomic="true">
+5
View File
@@ -10,6 +10,11 @@ the optional stock 1.14-inch screen. There is no separate screen selection.
For Companion, use the Full image for USB and Bluetooth support together.
The KISS modem role remains headless.
The picker currently supplies [1.18.0.1 preview1](https://github.com/mikecarper/MeshCore/releases/tag/heltec-t114-v1.18.0.1.preview1)
for T114. Automatic screen detection is the default for future T114 builds.
The preview includes Full Companion and Full/Reduced optional-sensor profiles
for Repeater, Room Server and Sensor, plus the headless KISS utility.
At startup, the firmware checks whether the screen responds before starting
the display. The backlight stays off during the check. If no screen responds,
the display stays powered off and the node continues without a screen.
@@ -52,10 +52,26 @@ does not require a single guessed factory ID.
| Companion headless buttons and related navigation, reader, pairing, startup and deadline suites | PASS, 55 methods, including native headless fault regression and 4 input/reader configurations |
| Picker and release-selection regressions | PASS, 78 Python methods and 3 Node suites; old assets, scoped previews, newest-role defaults and unavailable legacy choices covered |
| Display allocation accounting and firmware RAM gates | PASS, 46 methods, including production allocation tracking across 3 panel sizes and buffer configurations |
| T114 firmware and package checks | Pending |
| T114 firmware and package checks | PASS, all 8 published profiles; UF2/DFU application bytes, hashes, version, hardware/OTA identity, flash limits, display capability and RAM admission checked |
| Hosted documentation links | PASS, 7 methods |
| Physical T114 with and without a screen | Not performed |
The [T114 1.18.0.1 preview1](https://github.com/mikecarper/MeshCore/releases/tag/heltec-t114-v1.18.0.1.preview1)
packages firmware source
[`794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a`](https://github.com/mikecarper/MeshCore/commit/794f5f7b8c508b708ee8fc7db7bff066aa3d1a0a).
Its seven display-capable profiles contain the verified automatic-detection
marker; the eighth is the headless KISS utility. The published qualification
report records each profile's flash range, retained update identity and RAM
allowance. Repeater Full has the smallest RAM margin at 10,200 bytes after
the display allocation and normal transient margin.
KISS has no embedded EndF version or update identity; its package provenance,
UF2/DFU application equality, flash bounds, hashes and RAM gate are checked.
The release-bound picker check offers those eight profiles under the single
canonical T114 hardware choice, with seven automatic-display profiles and
one headless KISS profile. It preserves all 111 other hardware profiles from
the current main release and retains historical T114 files as exact downloads.
Native tests simulate controller replies and GPIO state; they do not establish
physical detection reliability. Before calling the hardware qualified, test
cold USB and battery boots with a stock screen and with no screen, then verify