tests: 8814AU validation harnesses + rail_check SDR-degraded arbitration (#110)#282
Merged
Merged
Conversation
au8814_5g_baseline.sh — one cold session: computed TXAGC index (DEVOURER_LOG_TXPWR), CU-ground decode (frames/EVM/RSSI) and a single SDR duty read. au8814_dual_soak.sh — max-duty TX measured CONTINUOUSLY by the ground and periodically by the B210, so a low SDR reading is attributable (transmitter collapse = both drop; bad SDR read = ground stays strong). These are the harnesses behind the #110 re-validation: stock index 14 airs 46-67% duty / RSSI 91 / EVM -54..-59 sustained (10/10 rounds over 8 min); the historic 1.5 Mbps readings were the #252 TX-feed collapse plus back-to-back SDR-read artifacts, not a power-calculation bug. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The rail-sag guard itself had the failure mode it guards against being confused with: the B210 has a degraded-read mode on back-to-back sessions (reads ~1.5% duty with a clean-looking noise floor while the air is saturated — verified by a simultaneous devourer-ground decode at 156k frames / RSSI 88), and the old check took its 5 GHz reading in exactly that second-read slot, false-declaring RAIL SAG. rail_check.sh now: pins per-band noise floors from idle reads (an unpinned floor on a busy 2.4 GHz channel under-read duty and poisoned the ratio heuristic); takes the 5 GHz reading in the trustworthy first-of-session slot; on a low reading cools down, usbreset's the B210 and retries once; and arbitrates a persistent low reading against an independent devourer ground — ground-hears-strong-RSSI means the SDR is degraded, not the rail (new exit code 2). The 5GHz/2.4GHz ratio check is demoted to a warning; the absolute 5 GHz floor is the guard. bench_onair.py aborts with an SDR-degraded banner on exit 2 instead of emitting a garbage table. Live-bench validated: idle floors -49.5/-31.3 dB pinned, 5 GHz 50.1% in the fresh slot, 2.4 GHz 60.7% despite ambient -> rail OK, exit 0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bench-tooling from the #110 re-validation. No library/driver code changes —
tests/only.au8814_5g_baseline.sh/au8814_dual_soak.shThe harnesses behind the #110 resolution (comment):
DEVOURER_LOG_TXPWR), the CU-ground decode (frames/EVM/RSSI) and a single SDR duty read.Measured with these on current master: stock index 14 airs 46–67 % duty / RSSI 91 / EVM −54…−59, 10/10 soak rounds over 8 min with zero variance — the historic "1.5 Mbps under-drive" was the #252 TX-feed collapse plus SDR read artifacts, not a power-calculation bug.
rail_check.shv2 +bench_onair.pyThe rail-sag guard itself had the failure mode it guards against being confused with: the B210's degraded-read mode on back-to-back sessions (~1.5 % duty with a clean-looking noise floor while the air is saturated — proven by a simultaneous ground decode at 156k frames / RSSI 88) landed exactly in the old check's second-read slot, false-declaring RAIL SAG and pointing users at hub power.
Now: per-band noise floors pinned from idle reads (a busy 2.4 GHz channel used to under-read duty and poison the ratio heuristic); the 5 GHz reading takes the trustworthy first-of-session slot; a low reading gets a cooldown +
usbresetof the B210 + one retry; a persistent low reading is arbitrated against an independent devourer ground — ground-hears-strong-RSSI yields the new exit 2 = SDR DEGRADED verdict (rail fine, bench numbers still unusable this session). The ratio check is demoted to a warning; the absolute 5 GHz floor is the guard.bench_onair.pyaborts with the matching banner on exit 2 instead of emitting a garbage table.Live-bench validated: idle floors −49.5/−31.3 dB pinned, 5 GHz 50.1 % fresh-slot, 2.4 GHz 60.7 % despite ambient →
rail OK, exit 0. README 8814 row re-confirmed with the fixed tooling: 65 / 30 / 26 Mbps (ch6/ch36/ch149).🤖 Generated with Claude Code