Skip to content

bridge: each node draws its own receiver noise - #23

Merged
A13xB0 merged 1 commit into
mainfrom
native-noise-per-node
Sep 9, 2026
Merged

A13xB0 merged 1 commit into
mainfrom
native-noise-per-node

Conversation

@A13xB0

@A13xB0 A13xB0 commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

Every native node ran the chip model's noise stream from the same seed (0) and the same counter, so every node's fast_rng (fast_rng.begin(radio.getRngSeed()), which reads the chip's random register) was seeded identically. CSMA backoff and advert jitter were correlated across the whole mesh (MeshBench/meshbench#720).

The chip's noise seed now defaults to the node's identity seed - which the simulator already makes distinct per node via --seed - XORed with a constant so it is not literally the number the keypair is derived from. --noise-seed N overrides it. This is the native equivalent of the per-node noise the emulated chip got in MeshBench/meshbench#556 (vsx_set_noise_seed); the vendored virtual-sx1262 already exposes setNoiseSeed, it was simply never called.

Unknown args are ignored by the parser, so an older simulator that does not send --noise-seed still gets per-node noise from the identity-seed default.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Q9HbD44EKWWTRYgxbFGxf6

The chip model's noise seed was never set, so every native node ran the
same receiver-noise stream from the same counter. That stream is what a node
seeds its RNG from - fast_rng.begin(radio.getRngSeed()) reads it - so every
node's CSMA backoff and advert jitter were correlated across the whole mesh,
and any result that depends on two nodes not choosing the same slot was
optimistic or pessimistic in a way nothing measured.

The chip's noise seed now defaults to the node's identity seed, which the
simulator already makes distinct per node, XORed so it is not literally the
number the keypair is also derived from. --noise-seed overrides it for a
caller that wants to set it directly. This is the native half of the per-node
noise the emulated backend already had (MeshBench/meshbench#556).

MeshBench/meshbench#720

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9HbD44EKWWTRYgxbFGxf6
@A13xB0
A13xB0 merged commit fae9011 into main Sep 9, 2026
1 check passed
@A13xB0
A13xB0 deleted the native-noise-per-node branch September 9, 2026 07:20
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