Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
76567a3
fix(sensors): no default GPS reset pin on RAK WisBlock
Dom4n Oct 15, 2026
60160f4
fix(cli): 'gps' command crash when no GPS setting exists
Dom4n Oct 15, 2026
b50e6be
variants(xiao_s3_wio): enable battery voltage reading
Dom4n Oct 15, 2026
a7f8d26
variants(techo_lite): keep the blue LED off in BLE builds
Dom4n Oct 15, 2026
3a72dd9
variants(thinknode_m6, rak4631): no BLE_DEBUG_LOGGING in companion BL…
Dom4n Oct 15, 2026
5da2f7c
variants(wio_wm1110): upload with nrfutil instead of J-Link
Dom4n Oct 15, 2026
bd3ba42
variants(wio-tracker-l1): read environment sensors on Wire1
Dom4n Oct 15, 2026
e365218
variants(heltec_v4): set ARDUINO_USB_MODE=1 in build flags
Dom4n Oct 15, 2026
4dc1973
nrf52: disable CC310 hardware crypto
Dom4n Oct 15, 2026
1e16279
variants(heltec_v4): add expansion-kit TFT companion BLE env
Dom4n Oct 15, 2026
fb4a26b
variants: add sensor and RS232 bridge envs from PowerSaving-v17
Dom4n Oct 15, 2026
562be28
repeater(ui): show battery voltage and PowerSaving state
Dom4n Oct 15, 2026
c091b6c
companion(ui): show uptime under the battery indicator
Dom4n Oct 15, 2026
f6fb562
ui(st7735): restore the dark theme
Dom4n Oct 15, 2026
b97f06d
ui(st7735): stop driving the signal pins while the display is off
Dom4n Oct 15, 2026
248f79f
ui(ssd1306): balance power claims and skip re-init on unswitched wake
Dom4n Oct 15, 2026
f08b68e
cli: add 'get sensor' pin diagnostics and 'get powerlog'
Dom4n Oct 15, 2026
484af95
variants(rak3401): use BSEC for the BME680
Dom4n Oct 15, 2026
e7c40ac
esp32: wake the repeater with the user button, then stay awake 30 s
Dom4n Oct 15, 2026
c126a62
esp32: build ESP-NOW boards without LoRa pins
Dom4n Oct 15, 2026
17086fe
feat: periodic reboot, persisted and deferred during TX or OTA
Dom4n Oct 15, 2026
3329467
prefs: powersaving on by default for fresh installs
Dom4n Oct 15, 2026
6f42c74
serial: report queued received frames through isReadBusy()
Dom4n Oct 15, 2026
1446a5b
repeater: do not sleep while rxdelay packets wait in the inbound queue
Dom4n Oct 15, 2026
decf16f
variants: add MKE-S3 (ESP32-S3 + SX1262)
Dom4n Oct 15, 2026
b195388
repeater: 'get/set outpath' admin commands with persistent forced flood
Dom4n Oct 15, 2026
23153ef
variants: add Seeed Wio Tracker L2 Pro
Dom4n Oct 15, 2026
e704002
deps: pin RadioLib 7.8.1; LR2021 reports the accepted RX gain level
Dom4n Oct 15, 2026
366400a
nrf52: keep the software clock across resets in retained RAM
Dom4n Oct 15, 2026
0488672
boards: share peripheral shutdown between power off and timed sleep
Dom4n Oct 15, 2026
d49f307
rxps: RX duty-cycle calculator and CLI parser
Dom4n Oct 15, 2026
8e1c715
rxps: SX1262 RX duty cycle in the RadioLib wrapper
Dom4n Oct 15, 2026
6f4f8cb
radio: count CAD busy detections and show them in 'get cad'
Dom4n Oct 16, 2026
61fdfaf
rxps: keep RX during noise-floor calibration and bound arm retries
Dom4n Oct 16, 2026
d9251f0
rxps: LR1110 RX duty cycle with 64-bit timing and LF clock restore
Dom4n Oct 16, 2026
ed6b781
rxps: persistent settings and 'radio.rxps' CLI for all roles
Dom4n Oct 16, 2026
dc79ad2
rxps: apply RXPS through the radio lifecycle of every role
Dom4n Oct 16, 2026
ee616fb
radio: external RX LNA off by default; one 'radio.fem.rxgain' path fo…
Dom4n Oct 16, 2026
1c3c8cb
esp32: build with the IoTThinks power-saving Arduino core 2.0.17
Dom4n Oct 16, 2026
49ff187
companion: persistent 'powersaving' flag, on by default
Dom4n Oct 16, 2026
1808811
companion(esp32): automatic light sleep driven by the powersaving flag
Dom4n Oct 16, 2026
0060ffd
room server: MCU sleep between radio and service deadlines
Dom4n Oct 16, 2026
0d7e8b1
sensor: MCU sleep between sampling, alerts and radio deadlines
Dom4n Oct 16, 2026
7985978
ui(st7735): fix freeze after the display turns off
Dom4n Oct 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 49 additions & 38 deletions boards/nrf52840_s140_v6.ld
Original file line number Diff line number Diff line change
@@ -1,38 +1,49 @@
/* Linker script to configure memory regions. */

SEARCH_DIR(.)
GROUP(-lgcc -lc -lnosys)

MEMORY
{
FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xED000 - 0x26000

/* SRAM required by Softdevice depend on
* - Attribute Table Size (Number of Services and Characteristics)
* - Vendor UUID count
* - Max ATT MTU
* - Concurrent connection peripheral + central + secure links
* - Event Len, HVN queue, Write CMD queue
*/
RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 0x20040000 - 0x20006000
}

SECTIONS
{
. = ALIGN(4);
.svc_data :
{
PROVIDE(__start_svc_data = .);
KEEP(*(.svc_data))
PROVIDE(__stop_svc_data = .);
} > RAM

.fs_data :
{
PROVIDE(__start_fs_data = .);
KEEP(*(.fs_data))
PROVIDE(__stop_fs_data = .);
} > RAM
} INSERT AFTER .data;

INCLUDE "nrf52_common.ld"
/* Linker script to configure memory regions. */

SEARCH_DIR(.)
GROUP(-lgcc -lc -lnosys)

MEMORY
{
FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xED000 - 0x26000

/* To keep data in RAM across resets */
PERSISTENT_RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 8

/* SRAM required by Softdevice depend on
* - Attribute Table Size (Number of Services and Characteristics)
* - Vendor UUID count
* - Max ATT MTU
* - Concurrent connection peripheral + central + secure links
* - Event Len, HVN queue, Write CMD queue
*/
RAM (rwx) : ORIGIN = 0x20006000 + 8, LENGTH = 0x20040000 - 0x20006000 - 8
}

SECTIONS
{
. = ALIGN(4);
.persistent (NOLOAD) :
{
KEEP(*(.persistent_magic))
KEEP(*(.persistent_data))
. = ALIGN(4);
} > PERSISTENT_RAM

. = ALIGN(4);
.svc_data :
{
PROVIDE(__start_svc_data = .);
KEEP(*(.svc_data))
PROVIDE(__stop_svc_data = .);
} > RAM

.fs_data :
{
PROVIDE(__start_fs_data = .);
KEEP(*(.fs_data))
PROVIDE(__stop_fs_data = .);
} > RAM
}

INCLUDE "nrf52_common.ld"
19 changes: 15 additions & 4 deletions boards/nrf52840_s140_v6_extrafs.ld
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,43 @@ MEMORY
{
FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xD4000 - 0x26000

/* To keep data in RAM across resets */
PERSISTENT_RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 8

/* SRAM required by Softdevice depend on
* - Attribute Table Size (Number of Services and Characteristics)
* - Vendor UUID count
* - Max ATT MTU
* - Concurrent connection peripheral + central + secure links
* - Event Len, HVN queue, Write CMD queue
*/
RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 0x20040000 - 0x20006000
*/
RAM (rwx) : ORIGIN = 0x20006000 + 8, LENGTH = 0x20040000 - 0x20006000 - 8
}

SECTIONS
{
. = ALIGN(4);
.persistent (NOLOAD) :
{
KEEP(*(.persistent_magic))
KEEP(*(.persistent_data))
. = ALIGN(4);
} > PERSISTENT_RAM

. = ALIGN(4);
.svc_data :
{
PROVIDE(__start_svc_data = .);
KEEP(*(.svc_data))
PROVIDE(__stop_svc_data = .);
} > RAM

.fs_data :
{
PROVIDE(__start_fs_data = .);
KEEP(*(.fs_data))
PROVIDE(__stop_fs_data = .);
} > RAM
} INSERT AFTER .data;
}

INCLUDE "nrf52_common.ld"
19 changes: 15 additions & 4 deletions boards/nrf52840_s140_v7.ld
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,43 @@ MEMORY
{
FLASH (rx) : ORIGIN = 0x27000, LENGTH = 0xED000 - 0x27000

/* To keep data in RAM across resets */
PERSISTENT_RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 8

/* SRAM required by Softdevice depend on
* - Attribute Table Size (Number of Services and Characteristics)
* - Vendor UUID count
* - Max ATT MTU
* - Concurrent connection peripheral + central + secure links
* - Event Len, HVN queue, Write CMD queue
*/
RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 0x20040000 - 0x20006000
*/
RAM (rwx) : ORIGIN = 0x20006000 + 8, LENGTH = 0x20040000 - 0x20006000 - 8
}

SECTIONS
{
. = ALIGN(4);
.persistent (NOLOAD) :
{
KEEP(*(.persistent_magic))
KEEP(*(.persistent_data))
. = ALIGN(4);
} > PERSISTENT_RAM

. = ALIGN(4);
.svc_data :
{
PROVIDE(__start_svc_data = .);
KEEP(*(.svc_data))
PROVIDE(__stop_svc_data = .);
} > RAM

.fs_data :
{
PROVIDE(__start_fs_data = .);
KEEP(*(.fs_data))
PROVIDE(__stop_fs_data = .);
} > RAM
} INSERT AFTER .data;
}

INCLUDE "nrf52_common.ld"
19 changes: 15 additions & 4 deletions boards/nrf52840_s140_v7_extrafs.ld
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,43 @@ MEMORY
{
FLASH (rx) : ORIGIN = 0x27000, LENGTH = 0xD4000 - 0x27000

/* To keep data in RAM across resets */
PERSISTENT_RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 8

/* SRAM required by Softdevice depend on
* - Attribute Table Size (Number of Services and Characteristics)
* - Vendor UUID count
* - Max ATT MTU
* - Concurrent connection peripheral + central + secure links
* - Event Len, HVN queue, Write CMD queue
*/
RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 0x20040000 - 0x20006000
*/
RAM (rwx) : ORIGIN = 0x20006000 + 8, LENGTH = 0x20040000 - 0x20006000 - 8
}

SECTIONS
{
. = ALIGN(4);
.persistent (NOLOAD) :
{
KEEP(*(.persistent_magic))
KEEP(*(.persistent_data))
. = ALIGN(4);
} > PERSISTENT_RAM

. = ALIGN(4);
.svc_data :
{
PROVIDE(__start_svc_data = .);
KEEP(*(.svc_data))
PROVIDE(__stop_svc_data = .);
} > RAM

.fs_data :
{
PROVIDE(__start_fs_data = .);
KEEP(*(.fs_data))
PROVIDE(__stop_fs_data = .);
} > RAM
} INSERT AFTER .data;
}

INCLUDE "nrf52_common.ld"
43 changes: 43 additions & 0 deletions boards/seeed_wio_tracker_l2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"build": {
"arduino": {
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi",
"partitions": "default_16MB.csv"
},
"core": "esp32",
"extra_flags": [
"-DBOARD_HAS_PSRAM",
"-DARDUINO_USB_CDC_ON_BOOT=1",
"-DARDUINO_USB_MODE=1",
"-DARDUINO_RUNNING_CORE=1",
"-DARDUINO_EVENT_RUNNING_CORE=1"
],
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"psram_type": "opi",
"hwids": [["0x303A", "0x1001"]],
"mcu": "esp32s3",
"variant": "esp32s3"
},
"connectivity": ["wifi", "bluetooth", "lora"],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": ["esp-builtin"],
"openocd_target": "esp32s3.cfg"
},
"frameworks": ["arduino"],
"name": "Seeed Wio Tracker L2 (16 MB flash, 8 MB OPI PSRAM)",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"use_1200bps_touch": true,
"wait_for_upload_port": true,
"require_upload_port": true,
"speed": 921600
},
"url": "https://www.seeedstudio.com/",
"vendor": "Seeed Studio"
}
41 changes: 39 additions & 2 deletions docs/cli_commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -285,9 +285,12 @@ This document provides an overview of CLI commands that can be sent to MeshCore
**Parameters:**
- `state`: `on`|`off`

**Default:** `off` for fresh installs; a build with `-D RADIO_FEM_RXGAIN=1` defaults to `on`. A saved setting wins.

**Notes:**
- This controls the external LoRa FEM receive-path LNA where the board supports it.
- This is separate from `radio.rxgain`, which controls the radio chip receive gain mode.
- Boards without a controllable LNA answer `Error: unsupported`.

---

Expand Down Expand Up @@ -445,7 +448,7 @@ This document provides an overview of CLI commands that can be sent to MeshCore

---

#### View or change this node's power saving flag (Repeater Only)
#### View or change this node's power saving flag (Repeater, room server, sensor and companion)
**Usage:**
- `powersaving`
- `powersaving on`
Expand All @@ -455,10 +458,12 @@ This document provides an overview of CLI commands that can be sent to MeshCore
- `on`: enable power saving
- `off`: disable power saving

**Default:** `off`
**Default:** `on` for fresh installs

**Note:** When enabled, device enters sleep mode between radio transmissions

**Companion:** on ESP32 the flag switches automatic light sleep at once (no reboot). Light sleep stays off on USB-serial, hardware-serial, Ethernet and ESP-NOW builds, and while a WiFi network is configured; those builds still scale the CPU clock (80/40 MHz). ESP32-C6 uses the upstream Arduino 3.x core without power management, so it gets neither. nRF52 companions sleep between events regardless of the flag.

---

### Routing
Expand Down Expand Up @@ -1196,3 +1201,35 @@ Ethernet support is available on RAK4631 boards with a RAK13800 (W5100S) Etherne
- Connect with any TCP client (e.g. `nc`, PuTTY) to access the same CLI available over serial.

---

### Periodic reboot

`get reboot.interval` / `set reboot.interval <0-255>`: hours since boot (0 disables). Repeater, Room Server and Sensor persist this setting. A due reboot waits for current TX and an active OTA session to finish.

---

### RX power saving (RXPS)

Repeater, Room Server, Sensor and Companion. SX1262 and LR1110 receive in a duty cycle; LR1121, LR2021 and SX127x stay in continuous RX (`supported=no`).

- `get radio.rxps`: `desired` (saved on/off), `effective` (`armed` or `continuous`), `supported`, `err` (last error), `fail` (arm failures), `level`, `catch` (preamble symbols still caught), `preamble`, `rx`/`sleep` (µs). `erx`/`eslp` appear when the driver had to clamp the periods.
- `set radio.rxps off|on|conservative|balanced|max|overdrive|riskyWorkingMax`: `on` = `conservative` = level 3; `balanced` = level 6; `max` = level 8; `overdrive` (9) and `riskyWorkingMax` (10) run outside the datasheet timing rule.
- `set radio.rxps level <1-10> [preamble <16|32>]`, `set radio.rxps max|overdrive|riskyWorkingMax preamble <16|32>`
- `set radio.rxps <rx_us> <sleep_us>`: manual periods, 1000–30000000 µs, kept across SF/BW changes.

**Default:** Balanced (level 6, preamble 16) for fresh installs. A saved setting, including `off`, wins.

**Errors:** a profile that does not fit the active SF/BW is rejected, or, after a radio change, leaves the node in continuous RX with `err=-10001` while the saved choice is kept. Other nonzero `err` values come from the radio driver; after three failed arm attempts the node stays in continuous RX until the setting changes. `set radio` takes effect at reboot; until then the windows of the running modulation stay in use.

---

### Repeater return path (outpath)

Remote admin console of a Repeater only; the command needs the requesting client, so it fails on the local serial console.

- `get outpath`
- `set outpath flood|direct|clear`
- `set outpath <hop>,<hop>,...`: 1-, 2- or 3-byte hop hashes, e.g. `set outpath 12,34` or `set outpath aabbcc,ddeeff`.

The path applies to replies to this client. `flood` survives reboot, login and learned PATH messages; `direct` and a hop list are replaced when the client logs in again by flood or a new PATH arrives; `clear` returns to automatic path learning. Saved with the ACL about 5 s later.

Loading
Loading