Repository navigation
Bug fix — realtime data never arriving
Root cause: read_timeout=1 causes Linux epoll to fire EPOLLIN after 1 second via the termios VTIME mechanism, even when no serial data is present. serialx's descriptor_transport treats the resulting empty os.read() as peer-closed (EOF) and permanently shuts the stream reader down. Historical packets flow without issue because they arrive with sub-second gaps; the 2–6 second pause between history completion and the first realtime packet is long enough to trigger the false EOF.
Fix: read_timeout=0 (non-blocking / VMIN=0 VTIME=0) — epoll only wakes on real data, so os.read() never returns b"" spuriously.