Script A: header to V1.2.4 / 2026-10-01; entries for tray_id_stress.sh, the Script A and Script B hooks, and 6_Blanton_Script_BER_Cycle.ttl, with notes on the exec bit, the sleep-vs-Interval rule, the hard-coded BDF, the hostname, the SONiC-only fan setting and the placeholder password. CLAUDE.md: status and last release to V1.2.4; the Tray ID stress and the BER cycle in the overview; a commands block for tray_id_stress.sh; a gotcha that prbsstat Ber must be read after the first interval is published, and that Script A / C's own BER (Interval=30, sleep 30) sits on that edge and has not been verified. ARCHITECTURE.md: Script A ref and the tag checkbox to V1.2.4; Script 5's current file name and the new macro 6 in the tree; tray_id_stress.sh in the tree. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UniUXkxgCG2Ty74advL8Pd
4.3 KiB
4.3 KiB
v1.2.4 — Tray ID I2C stress in Script A and B, and a Diag / SONiC BER cycle that reads the BER correctly
✨ New features
tray_id_stress.sh — Tray ID I2C write / read-back stress
- Buses
34/35/38/39, device0x70, register0x02. Each bus gets0xA5written and read back, then0x5Awritten and read back — the two patterns put every bit in both states. - One line per step (
PASS/FAIL/ERROR), then a per-bus Summary table and a singleTray ID stress RESULT: PASS|FAILline. Exit0= all PASS,1= any FAIL or I2C error,2= bad arguments. FAIL(the read worked but returned the wrong value) andERROR(i2cset/i2cgetitself failed) are counted separately, because they point at different faults.- The original register value is read first and written back at the end, verified by a read.
-Rskips that;-n Nrepeats the whole sequence N times. Buses, address, register and patterns are editable at the top of the file.
Script A and Script B run it
- Script A runs one pass after
show_dmesgas the baseline. - Script B runs one pass in every soak round, before
sleep 60— 12 writes per round, registers restored each time.
6_Blanton_Script_BER_Cycle.ttl — Diag ↔ SONiC BER cycle (standalone)
- Each cycle measures PRBS BER on unit 0 in the Diag OS, cold-boots into SONiC, measures again, and cold-boots back to Diag.
while 1, no end. The boot target is picked in the BIOS Boot Manager (USB Device= Diag,Hard Drive= SONiC). - Log:
Logs\Blanton_BER_Cycle_<ts>.log, timestamps always on.
🐛 Bug fixes
prbsstat Ber was read before the first interval had been published — BER read 40–60× low
- The BER cycle originally read
prbsstat Ber10 s afterprbsstat STArt Interval=30. Checked against the error counts thatprbs getreports in the same cycle, that read Diag ~60× low and SONiC ~40× low. - Moving to
sleep 30(equal to the interval) fixed SONiC but not Diag: itsBergoes out 30.15 s afterSTArt, just before the first interval is published. SONiC'sbcmcmdadds ~0.3 s and just makes it. - The macro now uses
Interval=30+sleep 40. Over 73 cycles both sides agree with theprbs getestimate to within 0.1 decade. The rule: the sleep must be longer than the interval.
📦 Downloads
| File | Contents |
|---|---|
Script_ABC_Blanton_V1.2.4.zip |
The full Tera Term working directory, including Blanton_Script/ to copy onto the DUT |
chmod +x ~/Blanton_Script/*.sh
grep -rlU $'\r' ~/Blanton_Script # expect no output
⚠️ Before you run
chmod +xafter deploying. Script A and B calltray_id_stress.shby path; without the exec bit every call isPermission deniedand the round carries on without the check.- Any BER log taken before 2026-09-30 14:13 reads 40–60× low (BER cycle with
sleep ≤ Interval). Relative Diag-vs-SONiC trends are usable; absolute values are not. - Script A / C's BER is the same edge case:
blanton_ber.sh start(Interval=30) →sleep 30→report, on SONiC. Whether it catches the first interval has not been verified. Lengthening that sleep to 40 is the safe change. - The BER cycle's SONiC → Diag boot writes a hard-coded BDF (
pcimem /sys/bus/pci/devices/0000:05:00.0/resource0 0x480). Check the CB FPGA BDF on every unit before running it. - The BER cycle expects the hostname
sonic. A unit with another hostname (e.g.Margin02) needsprompt_sonic/prompt_sonic_rootedited, or the macro waits forever. - The BER cycle sets the fan to 30 % on the SONiC side only — SONiC runs ~11 °C hotter than Diag, a variable in any Diag-vs-SONiC comparison.
- Its SONiC password is the
YourPaSsWoRdplaceholder, and it does not readconfig.ttlorsecret/. - Script 4 has no teardown: finish it with
blanton_tr518.sh stopandsystemctl stop mlucas-amm. FAN_SPEEDis 100.
🔗 Links
- ARCHITECTURE.md — test flow, data models, constraints
- CLAUDE.md — commands and the bench gotchas
Full changelog: V1.2.3...V1.2.4