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
75 lines
5.9 KiB
Markdown
75 lines
5.9 KiB
Markdown
# 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:**
|
||
|
||
```bash
|
||
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.
|
||
|
||
## 🔗 Links
|
||
|
||
* [ARCHITECTURE.md](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/ARCHITECTURE.md) — test flow, data models, constraints
|
||
* [CLAUDE.md](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/CLAUDE.md) — commands and the bench gotchas
|
||
* [Blanton_Test_Flow.drawio](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/docs/Blanton_Test_Flow.drawio) — the four scripts side by side
|
||
|
||
**Full changelog:** [V1.1.5...V1.1.6](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/compare/V1.1.5...V1.1.6)
|