Skip to content

Add Seeed XIAO nRF52840 + Wio-SX1262 board support#45

Open
slack-t wants to merge 2 commits into
attermann:masterfrom
slack-t:feature/xiao-nrf52840
Open

Add Seeed XIAO nRF52840 + Wio-SX1262 board support#45
slack-t wants to merge 2 commits into
attermann:masterfrom
slack-t:feature/xiao-nrf52840

Conversation

@slack-t

@slack-t slack-t commented May 15, 2026

Copy link
Copy Markdown

Adds support for the Seeed XIAO nRF52840 paired with the Wio-SX1262 LoRa expansion board.

Changes

Boards.h — defines BOARD_XIAO_NRF52840 0x52 (sequential after RAK4631 at 0x51). VALIDATE_FIRMWARE is disabled: the Seeed bootloader does not write the image size at the Adafruit IMG_SIZE_START address, causing false hash-check failures.

sx126x.cpp / sx126x.h — XIAO nRF52840 pin assignments (CS, RST, DIO1, BUSY, RXEN RF switch) and board cases in the SX1262 driver guard chains.

Also fixes a CSMA preamble IRQ latch bug present on all SX1262 boards: the preamble-detected IRQ is not routed to DIO1, so without an explicit OP_CLEAR_IRQ_STATUS_6X the bit latches and the channel appears perpetually busy under high-frequency CSMA polling. A software timer preserves the correct busy window while the IRQ bit is cleared immediately.

RNode_Firmware.ino — board integration: InternalFS filesystem adapter, serial-wait exclusion (matches RAK4631 pattern).

Utilities.h — XIAO pin definitions and LED logic.

extra_script.py — adds xiao_nrf52840 to the provisioning variant table (reuses RAK4631 product/model bytes 0x10/0x12 — no dedicated rnodeconf ID exists for this board yet).

platformio.ini — new [env:xiao_nrf52840] build target using the Seeed platform-seeedboards. Note: pass --upload-port /dev/ttyACMx at build time — PlatformIO HWID auto-detection crashes on this platform (VID:PID 0x2886:0x0045 is absent from the board JSON hwid list); use_1200bps_touch=true still triggers DFU automatically.

README.md — pin mapping, build instructions, and known limitations.

Testing

Tested on physical hardware as a standalone transport node (TNC mode) and as a host-controlled modem (normal mode). Confirmed RX/TX on 868 MHz.

slack-t and others added 2 commits May 15, 2026 10:03
Adds BOARD_XIAO_NRF52840 (0x52) to the nRF52 board range. Integrates
the SX1262 driver for the Wio-SX1262 expansion board with pin
assignments for CS, RST, DIO1, BUSY and the RXEN RF switch.

VALIDATE_FIRMWARE is disabled for this board — the Seeed bootloader
does not write the image size at the Adafruit IMG_SIZE_START address,
causing false hash failures.

Fixes a CSMA preamble IRQ latch bug present on all SX1262 boards: the
preamble-detected IRQ is not routed to DIO1, so without an explicit
OP_CLEAR_IRQ_STATUS_6X the bit latches and the channel appears
perpetually busy under high-frequency CSMA polling. A software timer
preserves the correct busy window while the IRQ is cleared immediately.

New build target: [env:xiao_nrf52840] in platformio.ini using the
Seeed platform-seeedboards. Pass --upload-port at build time —
PlatformIO HWID auto-detection crashes on this platform (VID:PID
0x2886:0x0045 is absent from the board JSON hwid list); the board's
use_1200bps_touch=true still triggers DFU automatically.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Documents pin mapping, build targets, known limitations (VALIDATE_FIRMWARE
disabled, upload-port workaround), and provisioning notes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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