Commit Graph
3292 Commits
Author SHA1 Message Date
Jared DohrmanandClaude Fable 5 e5cbd082c9 docs(release): add 2026.7.0 notes for observer-eastmesh tracks
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 13:16:35 +10:00
Jared DohrmanandClaude Fable 5 1fb9737f95 fix(mqtt): trust GTS WE1 for eastmesh/meshmapper broker TLS
mqtt2.eastmesh.au switched from a Let's Encrypt cert to a Google Trust
Services WE1-issued *.eastmesh.au wildcard (July 2026), so devices on the
pinned-PEM fallback path failed the handshake with mbedTLS -9984. Pin the
combined ISRG Root X1 + GTS WE1 bundle for these brokers so either chain
verifies.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 13:06:46 +10:00
Jared DohrmanandClaude Opus 4.8 54a167f60f fix(prefs): stop reading misaligned tail into later prefs fields
loadPrefsInt guarded each EastMesh field with its own available() check
and no bail-out. On a short prefs file that skipped a large field but
still satisfied a later, smaller one: with 8 bytes left, bridge_peer_host
(64) was correctly skipped, then bridge_peer_port (2) passed its guard
and read two misaligned bytes. It has no constrain(), so it loaded 0
instead of its 1883 default.

Read sequentially and stop at the first field that isn't fully present,
leaving the rest at their constructor defaults.

This does not make a differently-laid-out prefs file safe to read, only a
shorter one -- fan_mode and fan_timeout_secs still take whatever bytes sit
at 512..514. A format marker on the EastMesh block would close that.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 20:23:58 +10:00
Jared DohrmanandClaude Opus 4.8 b9006d14dd fix(prefs): move EastMesh NodePrefs fields behind a reserved gap
Upstream's persisted fields end at 295. EastMesh's own fields sat
immediately after, so any future upstream append would shift them and
conflict. Base the EastMesh block at 512 instead, with the 295..511 gap
reserved for upstream growth.

Upstream can now append fields with no change to EastMesh offsets; a
static_assert fails the build if upstream ever overruns the gap.

EastMesh fields now occupy 512..741 (was 295..524).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 17:19:05 +10:00
Jared DohrmanandClaude Opus 4.8 24fdc70acc ci: bump Python to 3.13 across build and docs workflows
Adopts upstream's 3.13 bump. Also renames the uv cache key from py311
to py313 so a 3.11-built .venv is not restored under the 3.13
interpreter, and updates .python-version so local uv runs match CI.

pyproject requires-python stays >=3.11; 3.13 satisfies it and the
existing uv.lock resolves unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 17:10:04 +10:00
Jared DohrmanandClaude Opus 4.8 2358245c04 fix(prefs): realign NodePrefs to upstream byte offsets
Keep upstream's persisted layout verbatim (rx_boosted_gain 290 ..
cad_enabled 294) and append the EastMesh-only fields after it, rather
than interleaving fan_mode/fan_timeout_secs into upstream's range.
Minimises CommonCLI.cpp conflicts on every upstream sync.

EastMesh fields now occupy 295..524: fan_mode, fan_timeout_secs, and
bridge_peer_*. Existing prefs files written by prior EastMesh firmware
will be misread from offset 292 onward and need reconfiguring.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 17:10:04 +10:00
Jared Dohrman 3d460106ee Merge branch 'integrate-upstream-dev-2026-07-09' into develop 2026-07-09 16:51:34 +10:00
Jared Dohrman 9fd108f946 Merge remote-tracking branch 'upstream/dev' into integrate-upstream-dev-2026-07-09
# Conflicts:
#	.github/actions/setup-build-environment/action.yml
#	README.md
#	examples/simple_repeater/MyMesh.cpp
#	examples/simple_room_server/MyMesh.cpp
#	examples/simple_sensor/SensorMesh.cpp
#	src/helpers/CommonCLI.cpp
#	src/helpers/CommonCLI.h
#	src/helpers/radiolib/CustomLR1110Wrapper.h
#	variants/tenstar_c3/target.h
2026-07-09 16:51:30 +10:00
Florent fec88e1300 fix tenstar c3 repeater build 2026-07-06 12:04:42 -04:00
Florent 3ee2f77877 restore display and radio poweroff in ui 2026-07-06 08:46:57 -04:00
fdlamotte 9e66a2e246 Merge pull request #2895 from IoTThinks/MCdev-Fixed-poweroff-to-uA-202607
Fixed hibernate / poweroff for BLE companions and repeaters to stay at uA
2026-07-06 08:02:23 -04:00
Kevin Le 35f654ced3 Fixed hibernate/powerOff for ESP32 boards to stay at uA 2026-07-05 23:47:27 +07:00
Kevin Le 6b205da4e9 Added missing driver/rtc_io.h 2026-07-05 23:33:56 +07:00
Kevin Le eec75eab31 Cleanup Poweroff for NRF52 boards 2026-07-05 22:10:47 +07:00
Kevin Le 7d7de88707 board->powerOff() is sufficient to power off radio, display, GPS and components 2026-07-05 21:22:13 +07:00
Kevin Le 73b7367e45 Put powerOff to NRF52Board 2026-07-05 21:20:39 +07:00
Kevin Le a92046b0eb Put powerOff and enterDeepSleep to ESP32Board 2026-07-05 21:20:13 +07:00
liamcottle b40968a0f0 stop tracking vscode extensions.json 2026-07-05 12:23:22 +12:00
ripplebiz 61e21462aa Merge pull request #2867 from entr0p1/feature/sx1262-ldo-support
SX1262 LDO Support
2026-07-04 12:35:03 +10:00
Liam Cottle acdf4e5bdc Merge pull request #2372 from jirogit/fix/region-save-return-value
fix(RegionMap): save() returns actual write success instead of hardcoded true
2026-07-03 12:40:22 +12:00
ripplebiz 33fdf67e4d Merge pull request #2874 from neilalexander/neil/replyregion
Fix `recv_pkt_region` incorrect usage
2026-07-02 22:20:30 +10:00
Neil Alexander 0d7379520f Fix recv_pkt_region incorrect usage
The `recv_pkt_region` is set when processing a flood packet in `filterRecvFloodPacket`
but direct/non-flood packets would never pass through that function, so the pointer was
not cleared for them.

`sendFloodReply` would then later use it blindly, which meant that the response would
either inherit the region from the last flood packet, or refer to a non-initialised pointer
if no region floods had been received yet.
2026-07-02 09:28:41 +01:00
ripplebiz affe61dc3b Merge pull request #2880 from ckoehler/push-sonzsorqmwqz
refactor: split MeshTables::hasSeen into pure query + markSeen
2026-07-02 13:58:48 +10:00
Christoph Koehler 4f701b7aec refactor: split MeshTables::hasSeen into pure query + markSeen
hasSeen() was simultaneously a predicate and a mutator — it inserted the
packet hash on every miss, making five call sites that only wanted to mark
a packet as sent call it with the return value discarded.

Split into:
- wasSeen()   — pure predicate, no side effects
- markSeen()  — explicit insert

All query sites now call markSeen() immediately after wasSeen() returns
false, preserving identical runtime behaviour. The five mark-only send
sites (sendFlood, sendDirect, sendZeroHop x2) now call markSeen directly.

Also fixes three bridge sites (BridgeBase, ESPNowBridge, RS232Bridge)
that had the same query+implicit-insert pattern.

Tests: add test/test_mesh_tables/ covering wasSeen purity, markSeen,
dup stats, and clear. Update SHA256 mock to produce deterministic output
(previously finalize() was a no-op). Add Packet.cpp to native build filter.
2026-07-01 21:51:38 -06:00
Liam Cottle dd87371574 Merge pull request #2873 from ckoehler/fix/nix-devshell
build: add gcc, gtest to nix shell, fix native test framework
2026-07-02 11:32:21 +12:00
Christoph Koehler 4f7c1cb88f build: add gcc, gtest to nix shell, fix native test framework 2026-07-01 08:19:27 -06:00
entr0p1 2cb3a29fa8 SX1262 LDO Support
- Added build flag "SX126X_USE_REGULATOR_LDO" (set to 1 to enable) to use LDO for the SX1262 radio instead of DC-DC when the DCDC pin isn't wired up (e.g. t-echo lite)
- Added additional debug mode diagnostic messages during SX1262 init to better highlight faults
2026-06-30 16:55:16 +10:00
Liam Cottle 1869b57d62 Merge pull request #2853 from HDDen/dev
Add Data-Type to number_allocations.md
2026-06-29 21:49:19 +12:00
HDDen 58b0f7df9c Update number_allocations.md 2026-06-29 12:41:44 +03:00
HDDen bc35208682 Update number_allocations.md
Added Data-Type range for MeshCore Images codec (range is for small reserve to future versions)
2026-06-28 00:32:22 +03:00
Jared DohrmanandClaude Opus 4.8 7fab384e4c docs: remove public references to the MQTT bridge track
De-emphasize the observer-eastmesh-bridge-mqtt feature in public-facing
docs (the community prefers not to surface another MQTT-backed mesh):

- eastmesh-docs: drop the track from index/releases/boards track lists,
  the custom-cli "MQTT Bridge Settings" section, and the web-panel peer
  broker fields; keep only a vague mention in local-builds.md.
- release-notes.yml: remove the track from the list and drop the
  2026.7.0 observer-eastmesh-bridge-mqtt entry.
- README: remove the "bidirectional MQTT mesh bridge" bullet and add the
  missing repeater-bridge-espnow track to "What This Repo Adds".

The feature, build envs, and CI are unchanged; this is visibility only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 23:33:42 +10:00
Jared DohrmanandClaude Opus 4.8 7176f62dae feat(mqtt): add packet counters to status; complete and reorganize MQTT bridge variants
MQTT status payload:
- Add packets_sent and packets_received (cumulative radio TX/RX totals)
  to the status `stats` object, aligning with the Waev/MeshMapper schema.

Variants (variants/eastmesh_mqtt -> variants/eastmesh):
- Rename the variant folder to variants/eastmesh.
- Add the remaining *_repeater_observer_mqtt_bridge envs (2 -> 36), one
  per observer board.
- Regroup envs by board (observer -> espnow -> mqtt_bridge) and add
  per-vendor section banners.

Docs & release notes:
- Update folder path references in README, AGENTS, and boards docs.
- Add observer-eastmesh and observer-eastmesh-bridge-espnow 2026.6.6
  release notes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 22:09:31 +10:00
Scott Powell 4f8cb8db78 * ACK packets being 'clipped' (in Dispatcher send). Needed to extend max_airtime timeout calc for short packets 2026-06-27 21:06:01 +10:00
Liam Cottle 5ff39c6243 Merge pull request #2570 from IoTThinks/MCdev-Fixed-flashmode-XiaoC6-202605
Added flash_mode=dio to avoid boot loop when flashing using merge.bin
2026-06-27 11:32:10 +12:00
Liam Cottle dc200cf22d Merge pull request #2639 from sefinek/fix/typos-in-comments
fix: fix typos in source code comments
2026-06-27 11:26:54 +12:00
Liam Cottle 62b95b4e48 Merge pull request #2844 from oltaco/fix-rx-boosted-gain
Fix for Rx boosted gain on LR1110
2026-06-27 11:22:47 +12:00
taco f3d4d8cd5e always save boosted gain setting 2026-06-26 22:36:49 +10:00
Jared DohrmanandClaude Opus 4.8 d6fcabcb4c fix(mqtt-bridge): resolve release-notes conflict and clean up review nits
- Resolve leftover merge conflict markers in release-notes.yml from PR #73,
  keeping both the observer-eastmesh-bridge-espnow 2026.6.5 and the new
  observer-eastmesh-bridge-mqtt 2026.7.0 entries in track order
- Normalize the bridge-mqtt release entry `area:` values to the file's
  conventions (bridge -> mqtt, boards -> board)
- Remove dead bridge_peer_port > 65535 check in loadPrefsInt (uint16_t can
  never exceed 65535; the 0 -> 1883 default is handled at use)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 12:45:28 +10:00
xJARiD 4e5a6a6a31 Merge pull request #73 from prabathbr/main
Adding observer-eastmesh-bridge-mqtt track to bridge over a MQTT broker🤖🤖
2026-06-26 12:29:03 +10:00
prabathbr b2365c4ac0 Merge branch 'main' of https://github.com/xJARiD/MeshCore-EastMesh
* 'main' of https://github.com/xJARiD/MeshCore-EastMesh:
  docs: updated release notes for waev
  feat(mqtt): add Waev broker

# Conflicts:
#	release-notes.yml
2026-06-26 12:21:21 +10:00
Liam Cottle 3d4eec4a6a Merge pull request #1194 from ViezeVingertjes/nibble_zero_connect
Added support for the nibble zero connect
2026-06-26 13:59:59 +12:00
xJARiD cdf2cc6fa2 Merge pull request #72 from xJARiD/develop
Add Waev MQTT broker support and enhance web panel settings
2026-06-26 11:03:25 +10:00
Jared Dohrman a7a68c16cb docs: updated release notes for waev 2026-06-26 10:58:10 +10:00
Jared DohrmanandClaude Opus 4.8 6ad3e5224e feat(mqtt): add Waev broker
Add Waev (mqtt.waev.app) as a curated MQTT broker, selectable from the
web-panel Primary/Secondary dropdowns and the CLI.

- Broker spec on bit 0x20, audience mqtt.waev.app, Google Trust Services
  WE1 CA (matches Waev's cert chain); widen broker mask/count to 0x3F/6
- Per-broker JWT lifetime via BrokerSpec.token_ttl_secs: Waev enforces a
  1-hour max token TTL and rejects the 6h default with MQTT CONNACK 5,
  so it mints a 3600s token while other brokers keep the 6h default
- CLI get/set mqtt.waev, web-panel dropdown entry + hidden toggle, docs
- Log token TTL in the "token ready" line for broker auth debugging

fix(web): make Custom MQTT settings full width when Custom is selected

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 10:29:38 +10:00
taco b07aba7937 fix: report error when rxgain setting is unsupported or rejected 2026-06-26 08:45:03 +10:00
taco 1f9bb67400 return bool when setting rx boost 2026-06-26 07:44:01 +10:00
ViezeVingertjes b8f1fad654 Add trailing underscore to nibble_screen_connect env names to exclude from automatic builds 2026-06-25 23:27:07 +02:00
ViezeVingertjes eb938a9b78 Address review comments and sync with dev 2026-06-25 23:26:55 +02:00
ViezeVingertjes 69df5c7a95 Remove NeoPixel configuration as its unused. 2026-06-25 23:26:55 +02:00
ViezeVingertjes 9c7d71b9be Added support for the nibble zero connect 2026-06-25 23:26:55 +02:00