Seeed XIAO nRF52840 + Wio-SX1262 Kit

Seeed Technology Co.,Ltd.

868 MHz 915 MHz SX1262 nRF52840 22 dBm
DIY Modules Budget Ultra Low Power

Ultra-kompaktes Combo-Kit aus XIAO nRF52840 (ARM Cortex-M4, 64 MHz) und Wio-SX1262-Erweiterungsmodul. Maße: nur 22×21×18 mm. Integrierte Antenne, BLE 5.0, LoRa 862–930 MHz. Community-Firmware: Companion BLE/USB, Repeater, Room Server. Im MeshCore Flasher als "ProMicro" gelistet.

Hardware Specifications

MCU

nRF52840

RAM

256 KB

Flash

1 MB

Display

-

Button Count

1

Has LEDs

true

Weight

3 g

Dimensions

22 x 21 x 18

LoRa Specifications

LoRa Chip

SX1262

Frequency Band

868 MHz, 915 MHz

Max. TX Power

22 dBm

Antenna Type

Integrierte PCB-Antenne

Typical Range

10 km

Connectivity

WiFi

false

Bluetooth

true

GPS

false

Power

USB Type

USB-C

Battery Connector

JST 1.25mm (extern)

Solar Support

false

Power Consumption (Idle)

5 mA

Power Consumption (TX)

82 mA

Firmware Support

Repeater v1.17.1 21.04.2025 Release

Release notes: https://blog.meshcore.io/2026/08/14/release-1-17-1

BLE Companion v1.17.1 21.04.2025 Release

Release notes: https://blog.meshcore.io/2026/08/14/release-1-17-1

Room Server v1.17.1 09.05.2025 Release

Release notes: https://blog.meshcore.io/2026/08/14/release-1-17-1

USB Companion v1.17.1 09.05.2025 Release

Release notes: https://blog.meshcore.io/2026/08/14/release-1-17-1

Repeater v1.15.0-evo_0.1.21 14.01.2026 Release

⚠️ Check that radio.rxgain(on) and flood.advert.base (0.308) are set correctly after flashing! ⚠️

This build is based on official MeshCore 1.15.0 dev branch (as of 25-May-2026 and additionally includes the following unmerged upstream PRs/changes:

Additional changes:
  • Flood adverts are disabled (flood.advert.interval set to 0) by default
  • :new: modified PR1810 to not block flood adverts but only PAYLOADTYPEGRPTXT and PAYLOADTYPEGRPDATA so that some limited flood advert distribution can be managed via PR2553 to support e.g. observer maps.
Changelog:
  • Based on dev v1.15.0 as of 25-May-2026
Full Changelog: https://github.com/mattzzw/MeshCore-Evo/compare/v1.15.0-evo0.1.20...v1.15.0-evo0.1.21
Repeater PowerSaving17.1 02.01.2026 Release

For Internal Testing - Do NOT install in hard to reach repeaters

  • Latest PowerSaving with latest RX PowerSaving on MeshCore 1.17.1
  • Fixed T096 OLED to save 3.5mA and use old dark theme
Areas to focus testing:
  • For T096 and v4 repeaters: set radio.fem.rxgain on/off => Check if this setting is persisted across reboot. Check the impact on noise floor.
  • For T096 and v4 companions: Compare the impact on noise floor for femon vs. femoff
  • For T096: Test the TX power
  • Test RXPS
View or change RX power saving
Usage:
  • get radio.rxps
  • set radio.rxps off
  • set radio.rxps on
  • set radio.rxps conservative
  • set radio.rxps balanced
  • set radio.rxps <level>
  • set radio.rxps level <level>
  • set radio.rxps level <level> preamble <symbols>
  • set radio.rxps <rxus> <sleepus>
Parameters:
  • level: 1-10; higher levels use shorter receive windows and longer sleep windows.
  • symbols: 16 or 32 preamble symbols.
  • rxus: receive-window duration in microseconds, 1000-30000000.
  • sleepus: radio sleep duration in microseconds, 1000-30000000.
Repeater default: off

Profiles:

  • on and conservative: level 1 with a 16-symbol preamble.

  • balanced: level 5 with a 16-symbol preamble.

  • A numeric level, or level <level>, automatically uses 32 preamble symbols for SF5-SF8 and 16 for SF9-SF12.

  • level <level> preamble <symbols> explicitly fixes the preamble used in the calculation.

  • Explicit rxus sleepus values select manual timing (level=0).

Level-based settings are recalculated after SF or bandwidth changes. Manual timings are not recalculated. Settings are persisted in /prefs.json. Companion firmware does not expose this text command and applies its fixed level 5 / preamble 16 profile at startup and after radio-parameter changes.

get radio.rxps reports:

`text
desired=<on|off>,effective=<armed|continuous>,supported=<yes|no>,
level=<0-10>,preamble=<0|16|32>,rx=<us>,sleep=<us>,
err=<RadioLib error>,fail=<count>[,erx=<us>,eslp=<us>]
`

  • desired is the saved user setting.
  • effective=armed means receive duty-cycle is active.
  • effective=continuous means RXPS is disabled, unsupported, or the last arm attempt fell back to continuous RX.
  • fail counts failed arm operations; each one falls back to continuous RX. clear stats resets both this total and the consecutive-failure backoff, granting three fresh arm attempts.
  • erx and eslp appear only when the driver had to clamp the requested periods, and report the effective periods after driver clamping. On LR1110 the RX window is stretched when 2*rx + sleep would not cover the extended period Semtech requires, so the real duty cycle can be less economical than rx/sleep suggest.
  • RXPS is currently supported by the SX1262 and LR1110 wrappers. Other radios remain in continuous RX and reject attempts to enable RXPS.
  • There is intentionally no RXPS watchdog, watchdog command, or periodic recovery. Recovery is limited to the immediate continuous-RX fallback after an arm error. After 3 consecutive arm failures the node stops retrying on every RX restart and stays in continuous RX until the RXPS configuration is set again or clear stats grants a fresh set of attempts.
  • On boards with a host-controlled RXEN pin, the RF switch is held in receive mode for the whole duty cycle (otherwise the node would be deaf). An external LNA on that pin therefore stays biased during the sleep windows, so the real power saving is smaller than the rx/sleep ratio implies.
---
Disable the host-controlled RF receive switch during RX power saving
Usage:
  • get radio.rxps.rfrxdisabled
  • set radio.rxps.rfrxdisabled <state>
Parameters:
  • state: on|off
Default: off

Notes:

  • This is a runtime-only diagnostic setting and resets to off after reboot.

  • on reproduces the missing RF_RX assertion during SX1262 receive duty-cycle mode.

  • Supported only on SX1262 targets with a host-controlled RX enable pin.

  • Enabling it can significantly reduce receive sensitivity and make remote commands harder to receive.

---
BLE Companion PowerSaving17.1 13.03.2026 Release

For Internal Testing - Do NOT install in hard to reach repeaters

  • Latest PowerSaving with latest RX PowerSaving on MeshCore 1.17.1
  • Fixed T096 OLED to save 3.5mA and use old dark theme
Areas to focus testing:
  • For T096 and v4 repeaters: set radio.fem.rxgain on/off => Check if this setting is persisted across reboot. Check the impact on noise floor.
  • For T096 and v4 companions: Compare the impact on noise floor for femon vs. femoff
  • For T096: Test the TX power
  • Test RXPS
View or change RX power saving
Usage:
  • get radio.rxps
  • set radio.rxps off
  • set radio.rxps on
  • set radio.rxps conservative
  • set radio.rxps balanced
  • set radio.rxps <level>
  • set radio.rxps level <level>
  • set radio.rxps level <level> preamble <symbols>
  • set radio.rxps <rxus> <sleepus>
Parameters:
  • level: 1-10; higher levels use shorter receive windows and longer sleep windows.
  • symbols: 16 or 32 preamble symbols.
  • rxus: receive-window duration in microseconds, 1000-30000000.
  • sleepus: radio sleep duration in microseconds, 1000-30000000.
Repeater default: off

Profiles:

  • on and conservative: level 1 with a 16-symbol preamble.

  • balanced: level 5 with a 16-symbol preamble.

  • A numeric level, or level <level>, automatically uses 32 preamble symbols for SF5-SF8 and 16 for SF9-SF12.

  • level <level> preamble <symbols> explicitly fixes the preamble used in the calculation.

  • Explicit rxus sleepus values select manual timing (level=0).

Level-based settings are recalculated after SF or bandwidth changes. Manual timings are not recalculated. Settings are persisted in /prefs.json. Companion firmware does not expose this text command and applies its fixed level 5 / preamble 16 profile at startup and after radio-parameter changes.

get radio.rxps reports:

`text
desired=<on|off>,effective=<armed|continuous>,supported=<yes|no>,
level=<0-10>,preamble=<0|16|32>,rx=<us>,sleep=<us>,
err=<RadioLib error>,fail=<count>[,erx=<us>,eslp=<us>]
`

  • desired is the saved user setting.
  • effective=armed means receive duty-cycle is active.
  • effective=continuous means RXPS is disabled, unsupported, or the last arm attempt fell back to continuous RX.
  • fail counts failed arm operations; each one falls back to continuous RX. clear stats resets both this total and the consecutive-failure backoff, granting three fresh arm attempts.
  • erx and eslp appear only when the driver had to clamp the requested periods, and report the effective periods after driver clamping. On LR1110 the RX window is stretched when 2*rx + sleep would not cover the extended period Semtech requires, so the real duty cycle can be less economical than rx/sleep suggest.
  • RXPS is currently supported by the SX1262 and LR1110 wrappers. Other radios remain in continuous RX and reject attempts to enable RXPS.
  • There is intentionally no RXPS watchdog, watchdog command, or periodic recovery. Recovery is limited to the immediate continuous-RX fallback after an arm error. After 3 consecutive arm failures the node stops retrying on every RX restart and stays in continuous RX until the RXPS configuration is set again or clear stats grants a fresh set of attempts.
  • On boards with a host-controlled RXEN pin, the RF switch is held in receive mode for the whole duty cycle (otherwise the node would be deaf). An external LNA on that pin therefore stays biased during the sleep windows, so the real power saving is smaller than the rx/sleep ratio implies.
---
Disable the host-controlled RF receive switch during RX power saving
Usage:
  • get radio.rxps.rfrxdisabled
  • set radio.rxps.rfrxdisabled <state>
Parameters:
  • state: on|off
Default: off

Notes:

  • This is a runtime-only diagnostic setting and resets to off after reboot.

  • on reproduces the missing RF_RX assertion during SX1262 receive duty-cycle mode.

  • Supported only on SX1262 targets with a host-controlled RX enable pin.

  • Enabling it can significantly reduce receive sensitivity and make remote commands harder to receive.

---
Room Server PowerSaving16 13.03.2026 Release

Keep making 1-2W solar repeaters and 5-day BLE companions possible:

  • Developed by IoTThinks and tested by our supportive MeshCore friends.
  • Contribution to MeshCore: By IoTThinks%20is%3Apr%20author%3A%40IoTThinks).
  • Source code: https://github.com/IoTThinks/MeshCore/tree/PowerSaving-v16
IMPORTANT NOTICES
  • For repeaters / room servers, after upgrade to PowerSaving 16, you need to check and set the default values again set flood.max 64 (default value) , set flood.max.unscoped 64 (default value) and set radio.fem.rxgain on/off (Heltec v4.3 and T096 only, if you set "off" before) https://github.com/meshcore-dev/MeshCore/pull/2140#issuecomment-4677295983
The power consumption of common boards is measured at battery cable. Ping us if your boards are not low power as expected. | Board | Repeaters / Room Servers | BLE Companions | Power Off for BLE Companions | | ------------- | ------------- | ------------- | ------------- | | Heltec v3 | 9mA | 19.6mA | ~16uA | | Heltec v4.2 and v4.3 (FEM ON) | 16mA | 28.6mA | ~16uA | | Heltec v4.3 (FEM Off) | 13mA | 24.9 mA | ~16uA | | Xiao S3, C3 | 7mA | 15 mA | ~16uA | | Xiao C6 | 7mA | C6 is not supported yet | ~16uA | | RAK 4631, Heltec T114, Xiao NRF52 | 5.8mA | 5.8mA | ~16uA | | Heltec T096 (FEM Off) | 8.7mA | 8.6 mA | ~16uA | | Heltec T096 (FEM On) | 16mA | 16 mA | ~16uA |

Support Us

Enjoying our work? Support us via ![Sponsor](https://www.paypal.com/ncp/payment/6FGWJJVC572VL) or ![Sponsor](https://github.com/sponsors/IoTThinks).
Updates:
  • v16.0.3: Fixed T-Echo lite to hibernate at 1mA instead 6mA. We will cut power more in PowerSaving 17 to reduce to 10uA.
  • v16.0.2: Fixed GPS time sync for Heltec T114. It will sync after boot and GPS lock. It will sync time every 30 minutes or by manual "gps sync"
  • v16.0.1: Wio Tracker L1 BLE companion has high power consumption is at 35mA in PowerSaving 16 instead of 7.5mA as in PowerSaving 15. This issue might affect a few NRF52 boards with GPS modules attached.
Instruction:
  • Scroll down to bottom to download uf2 / upgrade.bin to upgrade or freshInstall-merged.bin for new devices.
  • Heltec v4 bin files is for both Heltec v4.2 and v4.3. Heltec v4.3 bin files is for Heltec v4.3 only
  • Heltec v4.3 and T096 have two options FEM RXgain on and FEM Rxgain off.
  • Flash Custom Firmware as in INSTRUCTION.
  • If your board is not at the bottom section, please request us at GITHUB
  • Fast support: Discord

Features:

Based on MeshCore 1.16, plus PowerSaving features and more:
  • Repeaters and room servers for both ESP32 and NRF52: CLI powersaving on, powersaving off and powersaving
  • BLE companions for both ESP32 and NRF52: Enabled by default
  • [NEW] Hibernate mode for ESP32 BLE Companions now work properly and at 16uA
  • [NEW] Optimize Heltec T096 from 12mA down to 8.7mA
  • [NEW] Repeaters for both ESP32 and NRF52: CLI set reboot.interval <hours> and get reboot.interval. hours is 0-255. 0 is default and disabled. This helps to recover repeaters due to unknown hang.
  • [NEW] Set return path for repeaters: https://github.com/meshcore-dev/MeshCore/pull/2586
  • [NEW] Add time keeping for NRF52 across resets: https://github.com/meshcore-dev/MeshCore/pull/2704
  • FEM LNA for Heltec v4.3, Heltec T096, Heltec TrackerV2: CLI set radio.fem.rxgain on/off and get radio.fem.rxgain. https://github.com/meshcore-dev/MeshCore/pull/2140
  • Automatically select I2C address (0x76 or 0x77) for BME280, BME680 and BMP680.
  • Fixed boot loop for Xiao C6: https://github.com/meshcore-dev/MeshCore/pull/2570
  • Check reset reasons for repeaters: CLI powerlog
  • Check I2C and GPS GPIOs: for repeaters: CLI sensor
Hot fixes:
  • For BLE companions, possible hang after a while due to CMDSENDRAW_PACKET errors accumulate memory:
https://github.com/meshcore-dev/MeshCore/issues/2721. Fixed: https://github.com/meshcore-dev/MeshCore/pull/2722

Demo

Power Saving for Hibernate mode in BLE Companion
Heltec v4.2 Companion can enter Hibernate mode at 16.4uA <img height="512" alt="image" src="https://github.com/user-attachments/assets/08c5c0d6-9960-4cb4-bcaf-a1d2d1ba78a0" />
Power Saving for repeaters
Enter powersaving mode (CLI > powersaving on), 5.5mA for Heltec v4.3 with FEM and rxgain off, 5.8mA if FEM off and rxgain on. 13mA for Heltec v4.2 or Heltec V4.3 with FEM and rxgain on. 5.0mA for RAK4631

<img height="384" alt="image" src="https://github.com/user-attachments/assets/be6e298d-4931-4e83-8220-0d072f8aeefd" />
<img height="384" alt="image" src="https://github.com/user-attachments/assets/924aa3a5-64d0-4112-aa66-6ff72178d3ac" />
<img height="384" alt="image" src="https://github.com/user-attachments/assets/903d899d-66c4-4d88-bf61-e9601797009f" />

Power Saving for BLE companions
Default PowerSaving for ESP32 companion BLE. Reduced from 120mA down to 15-25mA. <img height="384" alt="image" src="https://github.com/user-attachments/assets/bcae8449-4646-4a98-852f-312582686ad6" /> <img height="384" alt="image" src="https://github.com/user-attachments/assets/2fc5bee1-fe89-4c8f-8097-2db181d89f4a" /> <img height="384" alt="image" src="https://github.com/user-attachments/assets/656fcd90-3211-4044-832b-a63f30c2fb4a" /> <img height="384" alt="image" src="https://github.com/user-attachments/assets/7611ebb5-d2d1-42b7-8845-6016e838b0cf" />
PowerLog and Sensor CLI
Enter CLI "powerlog" to see last reset/shutdown reason and the battery voltage during last boot. Enter CLI "sensor" to check I2C and GPS Serial pins <img height="384" alt="image" src="https://github.com/user-attachments/assets/79a31bf6-a0c2-46d3-bf7e-d63ca27e3014" /> <img height="384" alt="image" src="https://github.com/user-attachments/assets/1870c4e7-5942-466e-af0c-66e7567c7aae" /> <img height="384" alt="image" src="https://github.com/user-attachments/assets/060dd847-5984-4dc2-a5fe-cfe81180dc6c" /> <img height="384" alt="image" src="https://github.com/user-attachments/assets/49f25de7-a122-480f-a54a-a7176ec25f26" />

Enjoy the long battery life. 👯‍♂️ 👯‍♂️ 👯‍♂️

Repeater v1.0.1 17.05.2026 Release

Full Changelog: https://github.com/MichTronics/MeshCoreNG/compare/bridge-tcp-v1.0.5...repeater-v1.0.1

BLE Companion v1.0.1 17.05.2026 Release

Full Changelog: https://github.com/MichTronics/MeshCoreNG/compare/bridge-tcp-v1.0.5...companion-v1.0.1

USB Companion v1.0.1 17.05.2026 Release

Full Changelog: https://github.com/MichTronics/MeshCoreNG/compare/bridge-tcp-v1.0.5...companion-v1.0.1

Room Server v1.0.1 17.05.2026 Release

Full Changelog: https://github.com/MichTronics/MeshCoreNG/compare/bridge-tcp-v1.0.5...room-server-v1.0.1

Automatic sync from different repositories