Skip to content

V2 Tx: apply SSB BPF to data and EOO uniformly, default on - #80

Open
drowe67 wants to merge 3 commits into
mainfrom
dr-tx-bpf
Open

V2 Tx: apply SSB BPF to data and EOO uniformly, default on#80
drowe67 wants to merge 3 commits into
mainfrom
dr-tx-bpf

Conversation

@drowe67

@drowe67 drowe67 commented Sep 4, 2026

Copy link
Copy Markdown
Owner

tx2.py now applies SSB BPF consistently across Tx signal and EOO. First step in fixing #28 and making it consistent with C Tx.

Companion PR on rade_c (TX-side filter implementation) to follow.

radae_v2.py's RADEv2Transmitter (used by tx2.py, the streaming reference
rade_c ports) previously used a different, narrower carrier-bandwidth-derived
filter than inference.py's actual SSB radio emulation (300-2700Hz, matching
training), and never filtered the EOO frame at all. Both now use the same
300-2700Hz filter, applied continuously across data and EOO through one
persistent filter state -- a real SSB radio's front end doesn't distinguish
data samples from EOO ones.

tx2.py's --ssb_bpf flipped to default-on (--no_bpf added as opt-out,
matching the existing --no_auxdata/--no_eoo pattern), since this is the
filter the model was actually trained under. inference.py's own default is
left untouched; --ssb_bpf added explicitly to the v2_tx2 ctest to keep it
matched now that tx2.sh defaults to filtered.

Also replaces rade_c_v2_rx_eoo (which used inference.py's --end_of_over_v2
splice -- AWGN-only on the EOO tail regardless of channel flags, and never
SSB-filtered) with a tx2.py -> ch -> C rx stack that genuinely fades/filters
the whole continuous data+EOO stream, plus MPP variants for both tx2.py and
the C Tx.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PzNQqmYXwUStAMrN4a5GFy
drowe67 and others added 2 commits September 5, 2026 08:47
tx2.py is the streaming reference (what rade_c ports, what the new
default-on SSB BPF applies to for both data and EOO); inference.py's V2
path never filtered EOO and used a different, non-canonical filter
definition. V1 stays on inference.sh -- untouched.

tx2.py is Tx-only, so runs rx2.sh separately on the clean, untransmitted
output to get the genie decode reference, same pattern already used for
the --v2_c (C) branch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PzNQqmYXwUStAMrN4a5GFy
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.

1 participant