LoRa Scanner: a MeshCore preset (the default), its packets and public channel read #96

Merged
twisla merged 3 commits from meshcore-scanner into main 2026-10-09 20:23:29 +00:00
Owner

The LoRa Scanner can listen to MeshCore as well as Meshtastic.

  • Preset: MeshCore's EU/UK (Narrow) setting (869.618 MHz, 62.5 kHz, SF8, CR 4/8, sync word 0x12), in the Scanner's list and as lora preset MeshCore. It is the default for a new device. The setting now accepts it: it only took the 7 Meshtastic presets.
  • Packets read: header, route and path; adverts (name, kind, key, position); searches for nodes and their answers; who a private message is between; the channel's byte.
  • Public channel: messages are decrypted with the channel's published key (AES-128, checked with HMAC-SHA256) and shown with the name the sender gives, the time and the text. Other channels and private messages stay encrypted.
  • Captures opened in the Storage App are read the same way.

Tested

  • 577 host tests pass; the firmware builds; the site check is clean.
  • On the device: two real MeshCore packets were received and decoded (a search for repeaters and a repeater's answer); both are test vectors.
  • Not yet seen on air: an advert or a channel message. Those are tested against packets built from MeshCore's format docs (the channel messages encrypted with openssl), and the AES code against the FIPS 197 block.

🤖 Generated with Claude Code

https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk

The LoRa Scanner can listen to MeshCore as well as Meshtastic. - **Preset:** MeshCore's EU/UK (Narrow) setting (869.618 MHz, 62.5 kHz, SF8, CR 4/8, sync word 0x12), in the Scanner's list and as `lora preset MeshCore`. It is the default for a new device. The setting now accepts it: it only took the 7 Meshtastic presets. - **Packets read:** header, route and path; adverts (name, kind, key, position); searches for nodes and their answers; who a private message is between; the channel's byte. - **Public channel:** messages are decrypted with the channel's published key (AES-128, checked with HMAC-SHA256) and shown with the name the sender gives, the time and the text. Other channels and private messages stay encrypted. - Captures opened in the Storage App are read the same way. ## Tested - 577 host tests pass; the firmware builds; the site check is clean. - On the device: two real MeshCore packets were received and decoded (a search for repeaters and a repeater's answer); both are test vectors. - Not yet seen on air: an advert or a channel message. Those are tested against packets built from MeshCore's format docs (the channel messages encrypted with openssl), and the AES code against the FIPS 197 block. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
twisla added 3 commits 2026-10-09 20:20:36 +00:00
- MeshCore joins the presets (EU/UK Narrow: 869.618 MHz, 62.5 kHz, SF8,
  CR 4/8, sync 0x12), after the Meshtastic ones so stored choices keep
  their number; `lora preset MeshCore` on the console
- lib/meshcore reads what MeshCore sends in clear: header, path, and a
  node's advert (name, kind, key, position)
- the list row, the details, a Capture's viewer and the console echo read
  a packet by the sync word it was received on
- the bandwidth is printed as 62.5, not 62

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
The first two MeshCore packets heard were these: a search for repeaters
and a repeater answering. Both are in clear; they are the test's bytes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
LoRa Scanner: MeshCore by default, and its public channel read
Site / build (pull_request) Successful in 9s
CI / build (pull_request) Successful in 2m19s
305818466f
The MeshCore preset is the default for a new device, in the Settings and
in the radio before the Scanner is opened. The setting now accepts it:
it only took the 7 Meshtastic presets, so MeshCore picked in the App was
not saved.

Messages on MeshCore's public channel are decrypted with the channel's
published key (AES-128, checked with 2 bytes of HMAC-SHA256): the row
shows who says they sent it and the start of the text, the details the
sender, the time and the whole text. Other channels and private messages
stay encrypted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
twisla merged commit 015a9c59bc into main 2026-10-09 20:23:29 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: twisla/roro9stack#96