A developer at Oxide Computer Company recounts debugging a broken XMODEM file transfer on macOS in 2022. The root causes were two-fold: an FTDI USB-to-serial chip's 16ms latency timer adding ~17 minutes of overhead, and a macOS driver bug that silently dropped bytes mid-packet. The latency timer fix was straightforward via libftdi, but the dropped-bytes issue required bypassing the macOS driver entirely. The solution was a minimal XMODEM sender written in 143 lines of Rust using the ftdi crate and libftdi, which reliably transferred a 64MB ramdisk. The tool was polished and released as rfsx on GitHub, using the oxidecomputer/xmodem.rs fork for protocol handling.

9m read timeFrom mattkeeter.com
Post cover image
Table of contents
Using XMODEM for file transfersGetting startedFailing fasterThe first rule of debugging embedded communicationsSidestepping the macOS driverPolishing and releasing

Sort: