Modbus RTT Jitter at 30–80 ms: Gateway Measured 1–4 ms — the Root Cause Was the Test Bench

An industrial gateway (TI AM64x, Linux PREEMPT_RT) measured 30–60 ms Modbus-TCP RTT and 50–80 ms RTU jitter against a Windows simulator. After correcting the measurement semantics and running a three-step orthogonal isolation loopback (localhost → dual-NIC netns direct link → dual RS-485 crossover), the jitter is attributed to the test peer under these test conditions: board-side pure software stack 0.69 ms, physical NIC 1.02 ms, serial 4.15 ms (wire time about 70%); peer-side interventions such as the FTDI Latency Timer pinned the Windows bench’s measured lower bound at 45–50 ms, from which a reference timeout baseline is derived; a single gateway transaction consumes roughly 1%–15% of the end-to-end link budget — not a blocker.

2026-09-21 · 19 min · 3979 words · Intent

Linux Release CI/CD Postmortem: "It Runs" Is an Appearance, Not Evidence

How the first automated Linux release pipeline for Modbus-Tools (Qt 6 / C++) converged over multiple CI rounds. Six of the seven cross-platform failure classes share one pattern: “it ran elsewhere” is merely a localized surface phenomenon, not proof of correctness. From GNU ld member stripping and epoll/Winsock event ordering, through undefined behavior from two Qt socket engines fighting over one fd, to ELF RUNPATH contract splitting — building a deterministic release pipeline.

2026-09-18 · 13 min · 2642 words · Intent

Windows Docker Ghost Port Mapping: EMQX 1883 Silently Reserved by WinNAT Postmortem

Docker Desktop on Windows with a full stack (backend + EMQX 5.8.9 + TimescaleDB + Valkey). Backend ping/pong works, but mosquitto_pub keeps returning Connection refused. Other ports in docker ps map fine; only 1883 lacks the 0.0.0.0:1883-> prefix and Docker reports no error. Root cause: Hyper-V/WinNAT dynamic port reservation holds 1883 (in the 1802–1901 range). Four remediation options: swap port, temporary reclaim, admin allowlist, fix the dynamic port range.

2026-08-25 · 4 min · 645 words · Intent