Skip to content

This PR delivers a broad set of compatibility, firmware, and hardware improvements across the stack.#72

Merged
rightup merged 18 commits into
mainfrom
dev
May 16, 2026
Merged

This PR delivers a broad set of compatibility, firmware, and hardware improvements across the stack.#72
rightup merged 18 commits into
mainfrom
dev

Conversation

@rightup
Copy link
Copy Markdown
Collaborator

@rightup rightup commented May 16, 2026

This PR delivers a broad set of compatibility, firmware, and hardware improvements across the stack:

  • Added default flood scope and improved group data handling in the companion layer.
  • Expanded SX1262 compatibility with support for multiple EN pins, normalized pin handling, and several timing stability fixes for Luckfox Pico Pi devices, including configurable init delays.
  • Updated protocol support with new PAYLOAD_VER_3 and PAYLOAD_VER_4 constants to maintain upstream parity.
  • Added new TCPLoRaRadio and USBLoRaRadio implementations for pymc_usb firmware support.
  • Fixed firmware export contact wire formatting and bumped FIRMWARE_VER_CODE to 11.
  • Performed repository cleanup and documentation updates.
  • Finalized release preparation with version bump to 1.0.11.

agessaman and others added 18 commits April 23, 2026 11:17
- Added support for persisted default flood scope with commands `CMD_SET_DEFAULT_FLOOD_SCOPE` and `CMD_GET_DEFAULT_FLOOD_SCOPE`.
- Introduced `CMD_SEND_CHANNEL_DATA` for sending binary channel datagrams.
- Enhanced flood transport key resolution to utilize the default scope when transient keys are unset.
- Updated frame server and bridge to handle new commands and ensure compatibility with firmware v1.15.
- Added tests for default flood scope functionality and channel data processing.
Fix: Luckfox Pico Pi SX1262 Timing Issue
FIRMWARE_VER_CODE 10→11: MeshMapper requires ≥11 for full protocol support.

_cmd_export_contact self-export now emits a real MeshCore advert packet
(header + path_len + pubkey + timestamp + Ed25519 sig + appdata) instead
of the previous custom struct. The wardrive API verifies the signature
using the standard advert format; the old struct caused signature
verification to fail with HTTP 400 on every registration attempt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…parity

Upstream meshcore-dev/MeshCore Packet.h defines four payload-version
constants (PAYLOAD_VER_1..PAYLOAD_VER_4); pyMC_core currently exposes
only the first two. Downstream tooling that diffs the PH_* / PAYLOAD_VER_*
sets against pinned upstream Packet.h flags PAYLOAD_VER_3 (0x02) and
PAYLOAD_VER_4 (0x03) as upstream-only.

Add both as named constants alongside PAYLOAD_VER_2, marked as 'Reserved
for future use' to match how PAYLOAD_VER_2 is already treated. No
behavioral change: MAX_SUPPORTED_PAYLOAD_VERSION is unchanged, so
Packet.read_from() continues to accept only versions 0-1; the new
constants only provide stable names for the reserved version values.

Co-Authored-By: Oz <oz-agent@warp.dev>
protocol: add PAYLOAD_VER_3 and PAYLOAD_VER_4 constants for upstream parity
Two stdlib-friendly LoRa radio drivers that talk to the pymc_usb
firmware (https://github.com/itk80/pymc_usb) over a TCP socket or
USB-CDC respectively. Drop-in replacement for SX1262Radio when the
SX1262 module isn't attached to the same host as pymc_core (sector
arrays, distant antennas, multi-modem deployments).

Wire protocol is bit-identical between the two; only the transport
differs. CRC-16/CCITT-FALSE framing verified against fixed reference
vectors in tests/hardware/test_tcp_radio_protocol.py (20 tests, no
hardware required).

examples/common.py: support radio_type='pymc_tcp' and 'pymc_usb',
configurable via PYMC_TCP_HOST / PYMC_TCP_PORT / PYMC_TCP_TOKEN env
vars (with legacy HELTEC_* aliases retained for backward-compat).
This PR adds a shared wire-protocol module plus two new LoRaRadio implementations (TCP + USB-CDC) that talk to a remote pymc_usb firmware modem, enabling MeshCore host deployments where the SX1262 is not physically attached to the host running pymc_core. this is a local LAN system and firmware prevents any WAN links using this system.
@rightup rightup merged commit 827a6c3 into main May 16, 2026
3 checks passed
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.

4 participants