• V1.2.4 4db9b45ce7

    etwen released this 2026-10-01 13:32:24 +08:00 | 12 commits to main since this release

    ✨ New features

    tray_id_stress.sh — Tray ID I2C write / read-back stress

    • Buses 34 / 35 / 38 / 39, device 0x70, register 0x02. Each bus gets 0xA5 written and read back, then 0x5A written 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 single Tray ID stress RESULT: PASS|FAIL line. Exit 0 = all PASS, 1 = any FAIL or I2C error, 2 = bad arguments.
    • FAIL (the read worked but returned the wrong value) and ERROR (i2cset / i2cget itself 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. -R skips that; -n N repeats 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_dmesg as 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 Ber 10 s after prbsstat STArt Interval=30. Checked against the error counts that prbs get reports 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: its Ber goes out 30.15 s after STArt, just before the first interval is published. SONiC's bcmcmd adds ~0.3 s and just makes it.
    • The macro now uses Interval=30 + sleep 40. Over 73 cycles both sides agree with the prbs get estimate 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 +x after deploying. Script A and B call tray_id_stress.sh by path; without the exec bit every call is Permission denied and 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) needs prompt_sonic / prompt_sonic_root edited, 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 YourPaSsWoRd placeholder, and it does not read config.ttl or secret/.
    • Script 4 has no teardown: finish it with blanton_tr518.sh stop and systemctl stop mlucas-amm.
    • FAN_SPEED is 100.

    🔗 Links

    Full changelog: V1.2.3...V1.2.4

    Downloads