Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MKF7C75bhA4ArQhyMpnsxU
2.7 KiB
2.7 KiB
v0.7.1 — sendlnretry: stop losing commands to a booting device
🐛 Bug fixes
Scripts no longer hang forever when a device swallows a command
- A device that is still booting can silently discard console input the moment its shell takes over the tty. The line you sent is gone — the device never echoes it and never runs it — so the
waitthat follows blocks forever and your test rig sits dead until someone notices. - This is a race, not a delay: adding
pausebeforesendlnonly lowers the odds of hitting the window, it can never close it. In a 45-cycle overnight power-cycle run, 3 cycles hung this way — and the sends that got swallowed landed at exactly the same moment as the ones that worked.
✨ New features
New TTL command: sendlnretry
sendlnretry '<text>' '<confirm keyword>' [max attempts]
- Sends the text, then waits for proof the device actually ran it — and resends if that proof doesn't arrive. Omit the attempt count and it retries until it gets through.
- On success
result = 1. If it runs out of attempts,result = 0and the script keeps going, so you can handle it yourself:
wait 'root@(none):/#'
sendlnretry 'tpm2' 'TPM 2p0' ; retry until the DUT really runs it
wait 'PASS'
sendlnretry 'tpm2' 'TPM 2p0' 3 ; or cap it and handle failure
if result = 0 then
dispstr 'tpm2 got no response after 3 tries'
endif
- Pick a confirm keyword from the command's output (
TPM 2p0), not its echo (tpm2) — a tty echo comes from the kernel and doesn't prove the shell ever read the line. - Each send clears the receive buffer first, so a match can only come from this send; on a hit it consumes only up to the first occurrence, leaving the rest for your next
wait. - Per-attempt timeout follows
timeout/mtimeoutif you set them, otherwise 3 seconds. (Unlikewait,0doesn't mean "wait forever" here — that would mean never retrying.)
Full command reference: TTL Script Reference → 送出並確認
📦 Downloads
| Build | Needs .NET Runtime? | Notes |
|---|---|---|
| ETTerms_v0.7.1 (Standard) | ✅ Requires .NET 8 Desktop Runtime | Smaller download |
| ETTerms_v0.7.1_portable (Portable) | ❌ Runtime included | Unzip and run anywhere, no admin |
Run ETTerms v0.7.1.exe.
🔗 Links
Full changelog: v0.7.0...v0.7.1