Files
etwenandClaude Opus 5 78a8f641c9 fix(scriptc): Capture the BMC USB service log to a file, not the console
journalctl now runs with -o short-iso into log/bmc_usb_net.log and is
copied into the job directory with the other monitor logs. rm -f first so
the file covers this run only, and the ISO timestamps line up with
mgmt_ping.log and nfc_poll.log for cross-referencing.

The cost, recorded rather than glossed over: it is no longer echoed to
the console, so the USB copy is the only copy. That cp return value is
not checked - the same shape as the nfc_polling.log filename bug, which
failed silently and was only noticed back at the desk with a job archive
missing a file.

Folded into V1.1.6 rather than bumping: the tag has not moved on and this
is the same delivery.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
2026-09-02 21:44:06 +08:00

5.9 KiB
Raw Permalink Blame History

v1.1.6 — The PDB bricks were never being asked the right question

🐛 Bug fixes

Every PDB reading was NA, and the cause was a page number written in the wrong base

  • The four ADPM12200 bricks put each measurement on its own PMBus PAGE, and the page has to be written before every read. The bring-up spreadsheet listed those page numbers in decimal but with an 0x prefix, so four of the five selected the wrong page:

    Reading Datasheet PAGE Should send Spreadsheet said
    Vin 9 0x09 0x00
    Iin 10 0x0A 0x10
    Vout 2 0x02 0x02
    Iout 14 0x0E 0x14
    Temp 18 0x12 0x18
  • Only Vout worked — because 2 reads the same in either base. That is why Iin and Iout answered 0xFFFF and the temperature answered 0x0000, and why a Vin scaling had to be invented to make 50 V appear.

  • blanton_pwr_data.sh sends no page at all (its PDB table has page "-"), which is the reason it reports the whole PDB section as NA.

New features

pwr_brick.sh — the five power bricks, read properly

  • show prints Vin / Iin / Vout / Iout / Temp for all five: SWB0.PU207 (0x62), SWB0.PU13 (0x63), SWB1.PU332 (0x60), SWB1.PU85 (0x61) and CPB.PU37 (0x26). -r adds the raw words.
  • Conversions come from the datasheet's DIRECT equation, X = (1/m)(Y × 10⁻ᴿ b), with Table 3's coefficients: voltage Y × 8 mV, current Y × 0.04 A, temperature Y × 0.01 °C.
  • Cross-checked, not assumed: READ_VOUT returns 0x05D4 → 1492 × 8 = 11936 mV, which is exactly the figure show platform voltage reports for that rail from a completely separate sensor path.
  • CPB.PU37 is a different part — no page writes and its own scaling — and is handled separately.
  • The datasheet is now in the repo (docs/ADPM12200CMLZxx_DS_*.pdf) so the pages and coefficients can be checked without hunting for it.

Every value is validated before it is printed

  • This bus corrupts the high byte only. That turns 11.98 V into 32.00 V — positive, plausible in magnitude, and invisible to any "reject 0xFFFF" filter. Each value is re-read (up to PB_TRIES, default 8) until it is not 0xFFFF, not 0x0000, and lands inside a plausibility window.
  • 0x0000 is rejected as a raw word for the same reason: on the temperature register it decodes to a perfectly believable 0 °C.

Complementary margin profiles per board

  • comboA / comboB for CB and each SWB CONN. comboB is comboA with every direction flipped, so running both covers each rail high and low while its neighbours sit the other way.
  • NC channels stay at nominal in both — there is nothing to margin on an unused rail (CONN14 CH10/11/13, CONN15 CH10).

The BMC USB service log is captured again — to a file

  • Script C's journalctl dump had been commented out, so that service log reached nothing at all. It now runs with -o short-iso into log/bmc_usb_net.log and is copied into the job directory for the USB archive. The ISO timestamps line up with the other monitor logs, and rm -f first keeps the file to one run.
  • It is no longer printed to the console, so the USB copy is the only copy. If that cp fails — and nothing checks it — the service log is gone. Check the job directory before packing up.

📦 Downloads

File Contents
Script_ABC_Blanton_V1.1.6.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, pwr_brick.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

  • READ_VIN and READ_IIN are not in the datasheet's coefficient table. They are decoded here with the voltage and current coefficients — consistent with a ~50 V input, but not stated by the datasheet. Anything quoting brick Vin should have that confirmed first. PB_VIN_M / PB_IIN_M are where to change it.
  • The BMC USB service log only exists on the USB stick. It is not in the master console log any more.
  • NA has two meanings: nothing readable, or read but outside its plausibility window. Use PB_TRIES=1 ./Blanton_Script/pwr_brick.sh show -r to see the unretried raw words and tell them apart.
  • Margin profiles are positional. comboA_SWB_CONN13 applied to a CONN16 board margins the wrong rails and nothing detects it.
  • blanton_multiphase_margin.sh save is permanent, and it must not be mixed with margin.sh — same rails, two access paths, no interlock.
  • A soak longer than 24 hours needs the stress runtimes raised--runtime 86400 is a ceiling.
  • Script 4 (thermal/safety) has no teardown — finish with blanton_tr518.sh stop and kill $(jobs -p).
  • These three cannot share the switch: blanton_ber.sh, blanton_tr518.sh, blanton_traffic_linespeed.
  • FAN_SPEED is 100.
  • 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.

Full changelog: V1.1.5...V1.1.6