Files
etwenandClaude Opus 5 db44f72352 feat(thermal): Add a standalone thermal/safety run, and move margin out of the soak loop
4_Blanton_Script_thermal_safety.ttl brings the DUT up the way Script A
does, then loads it - mlucas-avx2 -cpu 0:15 in the background plus
blanton_tr518.sh start - and samples platform data and both switch
boards' rail power every minute. Power per rail under sustained full
load, over hours, is the whole point of it.

It is standalone: nothing starts it, it starts nothing, and it must not
share a DUT with Script B because both take over the cd ports.

It also has no teardown. When you interrupt it the unit is still in
port cd lb=mac / l2 learn off / test mode nr=yes and mlucas is still
running, and show interfaces status does not reveal any of that. Called
out in the version history, the release notes, CLAUDE.md gotchas and the
ARCHITECTURE future-work list, because whoever uses the box next will not
find out on their own.

Script B's per-round loop drops the margin scan. The loop is meant to be
a quick minute-by-minute sample and margin_status_all.sh walks nine
LTC2980s over I2C, which dominated the round. Script C takes it instead,
once, before show uptime. The trade-off is real: margin drift DURING the
soak is no longer visible, only a start and an end reading. Documented
rather than glossed over, with a suggestion (scan every N rounds) if it
needs to come back.

Script C also sends exit and waits for "Script done" before
hw-test-session finish, so finish runs in the login shell rather than
inside the session it is closing.

Adds docs/Blanton_Test_Flow.drawio: all four scripts side by side, with
the config flags that change each step marked, Script B's one real goto
drawn, and the A->B->C handoffs shown as the manual steps they are.

The new script arrived LF-only while every other .ttl is CRLF and
.gitattributes marks *.ttl as -text, so what is committed is exactly what
Tera Term reads. Converted.

Script A -> V1.1.4.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
2026-08-31 22:19:38 +08:00

4.7 KiB

v1.1.4 — A thermal and safety run that loads the box and watches the rails

New features

4_Blanton_Script_thermal_safety.ttl

  • A standalone script — it is not part of the A → B → C chain and is not started by any of them. Run it on its own when the question is thermal or safety rather than functional.
  • Brings the DUT up the same way Script A does (login, session reset, fan speed, wait_init, DUT inventory, BMC, PCIe error clear, pcie_bus, PMON, dmesg), then loads it: mlucas-avx2 -cpu 0:15 in the background and blanton_tr518.sh start on the data plane.
  • Then loops every minute: platform data, both switch boards' rail power via TH6_SWB0/1_power_readback.sh, and bgctl list / jobs. That is the point of the script — power per rail under sustained full load, sampled over hours.
  • It has no teardown. When you interrupt it the DUT is still in port cd lb=mac, l2 learn off and test mode nr=yes, and mlucas-avx2 is still running. Run blanton_tr518.sh stop and kill $(jobs -p) before anything else uses the box — nothing in show interfaces status reveals the leftover state.
  • It cannot share a DUT with Script B. Both take over the cd ports.

Test flow diagram

  • docs/Blanton_Test_Flow.drawio draws all four scripts side by side, with the config flags that change each step marked, the one real goto in Script B drawn, and the manual handoffs between A → B → C shown as such.

🐛 Bug fixes

The soak loop spent most of its minute reading margin

  • Script B's per-round loop is meant to be a quick sample. margin_status_all.sh walks nine LTC2980s over I2C and dominated the round. The scan moved to Script C, which takes it once before show uptime.
  • The trade-off is real and worth knowing: margin is now only measured at the start (Script A) and the end (Script C). Drift that happens during the soak is no longer visible.

hw-test-session finish ran from inside the session's own shell

  • Script C now sends exit and waits for Script done first, so finish runs in the login shell that opened the session.

The new script arrived with LF line endings

  • Every other .ttl in the repo is CRLF, and .gitattributes marks *.ttl as -text — whatever is committed is exactly what Tera Term gets. Converted to CRLF to match.

📦 Downloads

File Contents
Script_ABC_Blanton_V1.1.4.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 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

  • Script 4 leaves the switch loaded and looped back. Always finish with blanton_tr518.sh stop. If the next test starts without it, traffic and BER results are meaningless and nothing warns you.
  • Do not run Script 4 and Script B on the same DUT. Same ports, same L2 settings.
  • Margin is no longer sampled during the soak — only Script A (start) and Script C (end).
  • Re-baseline your margin limits if you have not already: VNOM became the measured median in v1.1.3, which moved both the deviation % and the margin window.
  • These three cannot share the switch: blanton_ber.sh, blanton_tr518.sh, blanton_traffic_linespeed.
  • PRBS takes the links down while blanton_ber.sh is armed.
  • ce0 keeps circulating until you stop it.
  • Two numbers must stay in step: Script C's sleep 30 and blanton_ber.sh's BER_INTERVAL.
  • FAN_SPEED is 100 — relevant here more than anywhere: a thermal run at full fan is not the same test as one at 30%.
  • The three items listed as unverified in v1.1.0 are still unverified: the ce0 ingress mirror, the 120s settle in blanton_tr518.sh, and test mode nr=no on stop. The settle matters most for this release — Script 4 depends on tr 518 still driving traffic minutes after it was started.

Full changelog: V1.1.3...V1.1.4