Skip to content

[Feature request] LilyGo T-Watch S3 + T3S3 (LR1121 / SX1280) board support + a 2.4 GHz LoRa frequency plan #2678

@GrayHatGuy

Description

@GrayHatGuy

Use-case / what problem this solves

MeshCore today has no support for the LilyGo T-Watch S3 family, and no support for 2.4 GHz LoRa (the SX128x driver is currently excluded in-repo). I'd like to contribute both:

  • 2.4 GHz LoRa (SX1280 + LR1121 in 2.4 GHz high-band) — opens MeshCore to the worldwide, license-free 2.4 GHz ISM band (no regional sub-GHz duty-cycle/region constraints).
  • LilyGo T-Watch S3 family (S3 + S3 Plus) as a wearable companion/repeater — SX1262 (sub-GHz) or SX1280 (2.4 GHz), AXP2101 PMU, on-device ST7789 TFT + FT6336 touch, and BMA423 wrist-lift screen-wake.
  • LilyGo T3S3 with LR1121 (multi-band: 2.4 GHz + sub-GHz) and with SX1280 (2.4 GHz) — both with SSD1306 OLED, all roles (companion BLE/USB, repeater, room server).

Already implemented + hardware-verified

This is built and running — I've published a working release on my fork so it can be tried/reviewed before any PR:

➡️ Release v0.3 — 20 flashable bins: https://github.com/GrayHatGuy/MeshCore/releases/tag/v0.3
Branch: feat/lilygo-twatch-s3-and-2.4ghz-lorahttps://github.com/GrayHatGuy/MeshCore

Verified on hardware:

  • 2.4 GHz messaging on a 3-node mesh — public + cross-chip SX1280<->LR1121, private channels @ 2.4 GHz, companion client-repeat @ 2450.
  • Sub-GHz (LR1121 US 915) messaging + BLE pairing + OLED.
  • T-Watch S3 Plus: ST7789 display, FT6336 touch, dynamic BLE PIN, BMA423 wrist-lift screen-wake.

Approach / API notes

  • 2.4 GHz: re-enable SX128x per-variant (build_unflags = -D RADIOLIB_EXCLUDE_SX128X=1); new CustomSX1280 / CustomLR1121 RadioLib wrappers; a compile-time LORA_MAX_BW so the wide 2.4 GHz bandwidths (e.g. 812.5 kHz) pass validation; isValidClientRepeatFreq() extended to the 2.4 GHz band.
  • Default 2.4 GHz plan: 2450.0 MHz / 812.5 kHz / SF10 / CR4-5 / preamble 12 / sync 0x12.
  • New variants under variants/; new shared helpers/sensors/MotionBMA423.h; small ST7789LCDDisplay additions; a no-op MainBoard::loop() board hook (no behavior change to existing boards — verified by building Heltec v3 companion + repeater).
  • T-Watch keeps TWATCH_INHIBIT_SLEEP=1 for now (the dominant TFT-backlight draw is cut on idle; full CPU light-sleep is a follow-up given BLE/light-sleep coexistence).

Heads-up for the project (out of scope of this contribution)

The web flasher's repeater setup caps LoRa BW at 500 kHz, so it can't configure a 2.4 GHz repeater (default plan is 812.5). Its bandwidth selector would need the SX1280/LR1121 2.4 GHz bandwidths added — 203.125 / 406.25 / 812.5 / 1625.0 kHz — and the cap raised. Firmware already accepts them (LORA_MAX_BW).

Before I open the PR(s)

  • The branch is based on an older point of the repo, so I'll rebase it onto current dev once you're 👍 on the direction.
  • How would you like this structured? Per CONTRIBUTING (one feature / one PR), I can split it — e.g. (a) 2.4 GHz LoRa core (SX128x wrappers + LORA_MAX_BW), then (b) each board variant as its own PR — or submit it as a cohesive board-support set. Whatever's easiest for you to review.
  • Anything you'd want changed in the approach first?

Thanks for taking a look!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions