Files
Blanton_TTL_Script/docs/release-notes/v1.0.9.md
T
etwenandClaude Opus 5 03d609cc1f feat(prbs): Add 100G PRBS monitor; fix the job log path and USB mount
port_prbs_monitor.sh drives PRBS on both 100G uplinks: lpmode off, arm
the pattern, then poll `phy diag <phy> prbs get` in the background until
stopped, counting a poll as PASS only when the output says "PRBS OK!".
prbsstat Ber is captured beside every poll for the record but does not
decide the verdict. `stop` runs prbsstat STOp and prbs clear before
rendering the report, so the test does not leave PRBS armed.

`start a` / `start b` runs one uplink alone, which is how a genuine port
fault is separated from the DUT not coping with two PRBS streams at
once. A port that was not run reports SKIP rather than FAIL -- deciding
on poll count alone would have made a deliberate single-port run look
like half the hardware was broken.

The port status is deliberately not printed at `start`: with PRBS armed
the link reports DOWN, which reads as a failure to anyone glancing at
the console. It appears in the report instead, after prbs clear and
labelled as the recovered state.

The calls in Script A, B and C are committed but commented out -- PRBS
is still under bring-up.

Fix: the job directory was written as /host/hw-eval/current/jobs in some
places and /host/hw-eval/jobs in others, so what Script B wrote was not
what Script C collected. Unified on /host/hw-eval/jobs.

Fix: Script C copied to /mnt/usb assuming it was mounted. It now finds
the device with usb_target.sh and mounts it first, so the logs actually
leave the DUT.

Script C also reorders its results -- stress logs, then the MGMT ping
report, then 100G status -- and cats the bgctl ssd/usb logs.

Script A -> V1.0.9. Docs and docs/release-notes/v1.0.9.md updated.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
2026-08-26 15:35:48 +08:00

4.4 KiB

v1.0.9 — 100G PRBS testing, and the job logs actually reach the USB stick

New features

100G uplink PRBS test

  • New port_prbs_monitor.sh drives a PRBS test on both 100G uplinks: it clears low-power mode, arms the pattern, then polls phy diag <phy> prbs get in the background until stopped. A poll counts as PASS only when the output says PRBS OK!; prbsstat Ber is captured alongside every poll for the record.

  • stop runs prbsstat STOp and prbs clear on each port before rendering the report, so the test does not leave PRBS armed behind it.

  • report gives the tally the bench actually wants:

    PORT           POLLS    PASS     FAIL     RESULT
    Ethernet513    42       42       0        PASS
    Ethernet514    42       40       2        FAIL
    
  • One port at a time is a first-class mode. start a or start b runs a single uplink, which is how you separate a genuine port fault from the DUT not coping with two PRBS streams at once. A port that was not run reports SKIP, not FAIL.

  • Every command and its full output — setup, each poll, teardown — goes to that port's raw log.

⚠️ The script ships in this build and can be run by hand, but the calls in Script A, B and C are commented out: PRBS is still under bring-up on this platform.

USB target detection

  • usb_target.sh reports an inserted USB device's node, mount point or by-id path. It excludes whatever disk backs / and /host — this platform can boot from a USB DOM, which also reports as USB — refuses to guess when several USB disks are present, and when mounting, verifies the result is writable rather than trusting that mount succeeded.
  • Script B builds the USB stress command from the detected node instead of a hard-coded /dev/sda1.

🐛 Bug fixes

The job logs were being written to a path nobody collected

  • Stress output, the monitors' logs and the USB archive disagreed about where the job directory lives. Everything now uses /host/hw-eval/jobs/, so what Script B writes is what Script C copies out.

Script C copied to a USB that was never mounted

  • The archive step assumed /mnt/usb was ready. Script C now finds the device and mounts it first, so a run's logs leave the DUT instead of being written into an empty mount point.

show interfaces status right after starting PRBS reads as a failure

  • With PRBS armed the link is out of normal operation and reports DOWN. port_prbs_monitor.sh deliberately does not print the port status at start — it appears in the report instead, after prbs clear, labelled as the recovered state.

📦 Downloads

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

mgmt_ping_monitor.sh and port_prbs_monitor.sh launch their workers through bash, so those two run without the execute bit. bmc_monitor.sh and usb_target.sh still need it, and neither git (mode 100644) nor a Windows/USB copy carries it. Without the chmod, start fails with Permission denied and the later cat finds nothing: the section ends up empty and nothing reports an error.

⚠️ Before you run

  • Declare the switch population. SWB_UNIT0 / SWB_UNIT1 in config.ttl say which switch units this DUT has; traffic and the readiness gate both follow them.
  • Set FAN_SPEED. It is applied at the start of every run.
  • Management connectivity is in use, not preserved. Both management NICs are up and pinging — drive the run from the serial console.
  • PRBS is not wired into the macros yet. Run port_prbs_monitor.sh by hand if you want it; uncommenting the calls in A/B/C is not supported in this build.
  • Two settings persist to config_db.json and survive a reboot: LLDP is left disabled and the 100G uplinks are left configured. Restore them before the DUT moves on.

Full changelog: V1.0.8...V1.0.9