qfx5252-stress-usb was started with --runtime 60. It finished a minute into an overnight run and the USB path sat idle for the rest of the night - nothing failed, nothing said so, and the log looked complete. SSD had the same shape at --runtime 3600. Both are now 86400, and the BMC DDR memtester drops its loop count so it runs until stopped. 86400 is 24h, not forever. Past that SSD and USB die quietly and the only clue is the shorter bgctl list Script B already prints each round. Said so in the version history, the release notes and ARCHITECTURE. Adds blanton_multiphase_margin.sh: the multiphase controllers on both switch boards over the native i2c buses (SWB0 on i2c-13/15, SWB1 on -14/-16), 19 rails each. high3/low3/comboA/comboB set voltages and print one line per rail; save commits them and prints Multiphase Save All, because that list has no per-rail mapping to report against. Two hazards it carries: save is STORE_USER_ALL and permanent, and these are NOT the LTC2980s margin.sh drives - the two tools reach the same rails from opposite sides with no interlock between them. The emitted commands were diffed against tools/Multiphase_*.txt: argv identical for all five. The rail-to-netname mapping was cross-checked against the bus numbers rather than trusted by line position - blocks 1..19 are all bus 13/15 and 20..38 all 14/16, matching the SWB0/SWB1 split of Multiphase_Netname. blanton_traffic_linespeed v0.7.0 appends PatternRandom=yes to every tx including ce0, and the defaults become tx 200 length=324. A fixed pattern can sit on a benign bit sequence for a whole run; a changing one is what exposes a weak lane. -r no forces fixed, -r "" omits the argument for an SDK that will not take it. Bytes per burst went 51200 -> 64800, so absolute counter totals do not carry across this build - the pair cross-check that decides PASS/FAIL does. Script A -> V1.1.5. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
4.7 KiB
v1.1.5 — The stress jobs now last the whole soak
🐛 Bug fixes
USB stress ran for sixty seconds of an overnight soak
qfx5252-stress-usbwas started with--runtime 60. It finished a minute in and the USB path sat idle for the rest of the night. Nothing failed, nothing said so, and the run looked complete.- SSD stress had the same shape at
--runtime 3600— one hour of a soak that usually runs far longer. - Both are now
--runtime 86400, and the BMC DDR memtester lost its loop count (64M 1→64M) so it runs until it is stopped rather than finishing one pass. - 86400 is 24 hours, not "forever". A soak longer than a day leaves SSD and USB dead for the remainder. Script B prints
bgctl listevery round (since v1.0.10), so the shorter list is visible there — but nothing raises an alarm.
✨ New features
Multiphase VRM margin
-
New
blanton_multiphase_margin.shdrives the multiphase controllers on both switch boards over the native i2c buses — SWB0 on/dev/i2c-13and-15, SWB1 on-14and-16. 19 rails per board, 38 in all. -
high3/low3/comboA/comboBset the voltages and report one line per rail:SWB0_0V9_ANLG0 - 0.930V Configure Done SWB0_0V75_ANLG0 - 0.775V Configure Done ... [ OK ] high3: 38 rail(s) configured -
savecommits them. It has no per-rail mapping, so it reports as one operation:Multiphase Save All. -
-u 0/-u 1for a single board; rails belonging to the other board are skipped and counted separately, not failed. -
savewrites NVM permanently (PMBusSTORE_USER_ALL, and0x17on the TH6 core rail). A power cycle does not undo it. -
These are not the LTC2980s that
margin.shdrives. The two tools reach the same rails from different sides and each assumes it is the only writer. There is no interlock — do not run both.
Traffic bursts carry a random pattern
blanton_traffic_linespeedv0.7.0 appendsPatternRandom=yesto everytx,ce0included. A fixed pattern can sit on a benign bit sequence for an entire run; a changing one is what makes a weak lane show itself.-r noforces the fixed pattern;-r ""leaves the argument off entirely, which is the pre-v0.7.0 wire format if a future SDK rejects it.- Defaults change from
tx 100 length=512totx 200 length=324. - Counter totals are not comparable across this build: 64800 bytes per burst instead of 51200, about 27% more. The PASS/FAIL cross-check compares a pair against each other and is unaffected — only absolute figures moved.
📦 Downloads
| File | Contents |
|---|---|
Script_ABC_Blanton_V1.1.5.zip |
The full Tera Term working directory, including Blanton_Script/ to copy onto the DUT |
After copying to the DUT:
chmod +x ~/Blanton_Script/*.sh # see below
grep -rlU $'\r' ~/Blanton_Script # expect no output
blanton_ber.sh, nfc_polling.sh, blanton_tr518.sh, blanton_multiphase_margin.sh and the two TH6_SWB*_power_readback.sh are invoked through ./ or ~/, so they need the execute bit along with bmc_monitor.sh and usb_target.sh — neither git nor a Windows/USB copy carries it reliably.
⚠️ Before you run
- A soak longer than 24 hours needs the runtimes raised.
--runtime 86400is a ceiling; past it, SSD and USB are idle and only a shorterbgctl listhints at it. blanton_multiphase_margin.sh saveis permanent. Read the rails back before committing, and never run it during a test.- Do not mix
blanton_multiphase_margin.shandmargin.sh— same rails, two different access paths, no interlock. - Traffic counters changed scale. Any absolute thresholds taken from earlier logs need redoing.
- Script 4 (thermal/safety) has no teardown — finish with
blanton_tr518.sh stopandkill $(jobs -p). - These three cannot share the switch:
blanton_ber.sh,blanton_tr518.sh,blanton_traffic_linespeed. - Margin is only sampled at the start and end of a soak (since v1.1.4), not during it.
FAN_SPEEDis 100 — the fans run flat out unless you changeconfig.ttl.- The three items listed as unverified in v1.1.0 are still unverified: the
ce0ingress mirror, the 120s settle inblanton_tr518.sh, andtest mode nr=noon stop.
🔗 Links
- Blanton_Test_Flow.drawio — the four scripts side by side
- ARCHITECTURE.md — test flow, data models, constraints
- CLAUDE.md — commands and the bench gotchas
Full changelog: V1.1.4...V1.1.5