Skip to content

Add Seeed XIAO nRF54L15 Sense + Wio-SX1262 variant with GPS and IMU support - #11472

Draft
hackengineer wants to merge 1 commit into
meshtastic:developfrom
hackengineer:xiao-nrf54l15-wio-sx1262-variant
Draft

Add Seeed XIAO nRF54L15 Sense + Wio-SX1262 variant with GPS and IMU support#11472
hackengineer wants to merge 1 commit into
meshtastic:developfrom
hackengineer:xiao-nrf54l15-wio-sx1262-variant

Conversation

@hackengineer

Copy link
Copy Markdown
Contributor

New variant for the Seeed Studio XIAO nRF54L15 Sense stacked with the
Wio-SX1262 for XIAO (header pinout, standalone SKU 113010003) and,
optionally, the L76K GNSS Module for Seeed Studio XIAO. Registered as
PRIVATE_HW following the nrf54l15dk convention.

Pin map, board overlay (uart21 enabled, i2c22 freed for the radio's D4/D5,
MCUboot slot1 reclaimed for LittleFS), and hardware notes are in the
variant's README.

Platform work included, all device-tree- or arch-guarded so existing
targets (including nrf54l15dk) are unaffected:

  • Real Serial1 in the nRF54L15 Arduino shim: bound to Zephyr uart21
    (XIAO D6/D7) with interrupt-driven RX into a ring buffer, runtime baud
    reconfiguration for GPS probing, and poll-out TX. Console instances keep
    the existing printk behavior; the device binding is guarded by
    DT_NODE_HAS_STATUS(..., okay), so builds that leave uart21 disabled
    compile identically.
  • ARCH_NRF54L15 added to GPS.cpp's serial-port selection branches
    (previously fell through to #error Unsupported architecture!).
  • GPS_SKIP_PROBE: generalizes the existing SENSECAP_INDICATOR
    stream-only handling for variants whose GNSS command channel is
    unavailable. On this stack the L76K shield's reset line is shared with
    the radio's RESET on D2, so probe commands are unreliable while the NMEA
    stream itself is fine — the variant parses the stream directly at the
    module's default 9600 baud.
  • LSM6DS3 accelerometer (on the Sense board, i2c30 @ 0x6a) enabled for
    wake-on-motion: motion sources re-added to the build and the Adafruit
    LSM6DS driver pulled in. BMX160Sensor.cpp is included for its stub
    constructor because AccelerometerThread's BMX160 switch case is not
    include-guarded.

Verified on hardware: BLE phone-API bootstrap (encrypted fixed-PIN pairing,
bond persistence across reboots), LoRa mesh TX/RX/relay on US LongFast,
LSM6DS3 detection and init, and GPS fixes (16+ satellites, PDOP ~1.0) from
the L76K.

BLE reliability on this board depends on #11471 (sleep-clock and phone-API
fixes); this PR builds independently of it.

🤝 Attestations

  • I have tested that my proposed changes behave as described.
  • I have tested that my proposed changes do not cause any obvious regressions on the following devices:
    • Heltec (Lora32) V3
    • LilyGo T-Deck
    • LilyGo T-Beam
    • RAK WisBlock 4631
    • Seeed Studio T-1000E tracker card
    • Other (please specify below)

Tested on the target hardware (XIAO nRF54L15 Sense + Wio-SX1262 + L76K).
All shared-code changes are behind ARCH_NRF54L15, a device-tree status
guard, or the new opt-in GPS_SKIP_PROBE define, so the listed devices
compile byte-identical firmware.

@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: fadd6c76-026e-4b64-abfd-7ec4ae8136fb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…upport

New variant for the XIAO nRF54L15 Sense stacked with the Wio-SX1262 for
XIAO (header pinout) and optionally the L76K GNSS Module for XIAO.

Platform work included:
- Real Serial1 in the nRF54L15 Arduino shim: bound to Zephyr uart21 (XIAO
  D6/D7) with interrupt-driven RX into a ring buffer, runtime baud
  reconfiguration for GPS probing, and poll-out TX. Console instances keep
  the printk behavior. The binding is device-tree guarded, so builds that
  leave uart21 disabled are unaffected.
- ARCH_NRF54L15 added to GPS.cpp's serial-port selection branches.
- GPS_SKIP_PROBE: generalizes the SENSECAP_INDICATOR stream-only handling
  for variants whose GNSS command channel is unavailable. On this stack
  the L76K's reset line is shared with the radio's RESET on D2, so probe
  commands are unreliable while the NMEA stream itself is fine.
- LSM6DS3 accelerometer enabled (wake-on-motion): motion sources re-added
  and the Adafruit LSM6DS driver pulled in; BMX160Sensor.cpp is included
  for its stub constructor because AccelerometerThread's BMX160 case is
  not include-guarded.

Verified on hardware: BLE phone-API bootstrap (encrypted, bonded), LoRa
mesh TX/RX/relay on US LongFast, LSM6DS3 init, and GPS fixes (16+ sats,
PDOP ~1) via the L76K at 9600 baud.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@hackengineer
hackengineer force-pushed the xiao-nrf54l15-wio-sx1262-variant branch from c20ff35 to 3177d29 Compare August 15, 2026 18:10
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.

1 participant