Skip to content

radioserver v3: the DIO1 fix, and a protocol that grew a field - #16

Merged
A13xB0 merged 2 commits into
mainfrom
radioserver-v3
Sep 3, 2026
Merged

A13xB0 merged 2 commits into
mainfrom
radioserver-v3

Conversation

@A13xB0

@A13xB0 A13xB0 commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Bumps radioserver.version to 3 so the DIO1 fix can be published.

Two reasons this cannot go out as another v2:

  • The stats record grew from 37 to 39 bytes in radioserver: report the DIO1 routing mask #15, and this file versions the
    wire protocol rather than the build, so that the two ends can say which they
    need.
  • The publish step edits a release in place when its tag exists, replacing
    every asset. MeshBench pins radioserver-v2 by digest, so re-cutting v2
    would swap the binaries under a live pin and every existing MeshBench build
    would fail its own integrity check.

What v3 carries that v2 does not: DIO1 gated on the DIO1 routing mask rather
than the IRQ enable mask (#14's submodule bump), which is what made an emulated
board hear every advert and forward about one in three, plus the routing mask
reported on the wire (#15) so that fault is visible from outside the chip.

Also drops a stale line from the release notes telling people this needs
VirtualSX1262.cpp beside it. It needs the submodule.

After this merges, the build workflow has to be run to publish the release,
and then MeshBench's toolchaincatalogue.go digests and
packaging/emulator-pins.env move together in one change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Q9HbD44EKWWTRYgxbFGxf6

random-thought and others added 2 commits September 3, 2026 17:21
Two reasons this cannot go out as another v2.

The stats record went from 37 bytes to 39 when it started reporting the DIO1
routing mask, and this file versions the wire protocol rather than the build,
precisely so the two ends can say which they need.

And the publish step edits a release in place when its tag already exists,
replacing every asset. MeshBench pins radioserver-v2 by digest, so re-cutting v2
would swap the binaries under a pin and every existing MeshBench build would
fail its own integrity check. A bump is the only safe way to publish.

What v3 carries that v2 does not: DIO1 gated on the DIO1 mask rather than the
IRQ enable mask, which is what made an emulated board hear every advert and
forward about one in three, and the routing mask reported so that fault is
visible from outside the chip.

The release notes also stop telling people this wants VirtualSX1262.cpp beside
it. It wants the submodule.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9HbD44EKWWTRYgxbFGxf6
Cutting a radioserver release meant running the whole workflow, which with a
blank ref input means every upstream tag plus main and dev, for every live
platform. That is an hour of runners and a great many ways to fail, to publish
one translation unit that needs neither a MeshCore checkout nor Crypto.

radioserver_only skips the role build and its publish and leaves the two
radioserver jobs, which is what a protocol version bump actually needs. discover
still runs, because that is where the radioserver platform list comes from.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9HbD44EKWWTRYgxbFGxf6
@A13xB0
A13xB0 merged commit 8cbaed3 into main Sep 3, 2026
2 checks passed
@A13xB0
A13xB0 deleted the radioserver-v3 branch September 3, 2026 16:23
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.

2 participants