Skip to content

feat(techo-lite): add Non-Shell companion BLE variant - #2353

Merged
liamcottle merged 1 commit into
meshcore-dev:devfrom
jirogit:fix/techo-lite-non-shell-ble-clean
Apr 22, 2026
Merged

feat(techo-lite): add Non-Shell companion BLE variant#2353
liamcottle merged 1 commit into
meshcore-dev:devfrom
jirogit:fix/techo-lite-non-shell-ble-clean

Conversation

@jirogit

@jirogit jirogit commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Note on T-Echo Lite variants

LilyGO sells three distinct T-Echo Lite variants:

  • T-Echo Lite — full version with 1.22" ePaper display
  • T-Echo Lite Non-Shell — USB + Qwiic, no ePaper display, no enclosure
  • T-Echo Lite Core — minimal castellated module, no USB, no display

This PR adds a firmware env for the Non-Shell variant.
The Core variant may require a separate env due to different hardware
(no USB interface).

Problem

T-Echo Lite Non-Shell (screenless) users cannot connect via BLE.
The existing companion BLE env inherits DISPLAY_CLASS=GxEPDDisplay
from the base env. This causes display.begin() to run on
non-existent hardware, corrupting BLE initialization.

The result: a random PIN is generated with no way to display it,
making BLE connection impossible.

Note: Issue #1183 and PR #2287 involve related hardware (screenless
T-Echo Lite variants), but address different bugs (battery voltage).
This PR focuses solely on the BLE initialization issue.

Fix

Add LilyGo_T-Echo-Lite_non_shell_companion_radio_ble env:

  • excludes DISPLAY_CLASS and ePaper-related build flags
  • removes GxEPDDisplay.cpp and ui-new from build sources
  • uses static BLE_PIN_CODE=123456

Also fix boards/t-echo.json:

  • add nrfutil to upload protocols list
  • add use_1200bps_touch=true and wait_for_upload_port=true

Testing

Tested on T-Echo Lite Non-Shell hardware:

  • BLE advertises correctly after flashing
  • MeshCore app connects successfully via BLE with PIN 123456
  • Upload via PlatformIO Upload button works (nrfutil + 1200bps touch)

DFU mode (UF2 flashing) for T-Echo Lite Non-Shell

  1. Press and hold RESET button (BLUE LED may or may not flash)
  2. Release RESET
  3. Quickly press and release RESET again
  4. A USB drive appears — copy the .uf2 file onto it

Note: BLUE LED flash may not occur on all units, but the drive
still appears and UF2 flashing works correctly.

Related to #1183, #2287

T-Echo Lite Non-Shell has no ePaper display, but the existing
companion BLE env inherits DISPLAY_CLASS=GxEPDDisplay from the base
env. This causes display.begin() to run on non-existent hardware,
corrupting BLE initialization and generating a random PIN that
cannot be displayed, making BLE connection impossible.

Add LilyGo_T-Echo-Lite_non_shell_companion_radio_ble env that:
- excludes DISPLAY_CLASS and ePaper-related build flags
- removes GxEPDDisplay.cpp and ui-new from build sources
- uses static BLE_PIN_CODE=123456 (avoids random PIN generation)

Also fix boards/t-echo.json:
- add nrfutil to upload protocols list
- add use_1200bps_touch=true and wait_for_upload_port=true
  to enable reliable flashing via PlatformIO upload button
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants