The ARM coprocessor's USB software was a version the supplier had stopped developing and replaced. We have shipped releases on it and it worked — the USB serial console, telnet, and the USB-to-Ethernet adapter all functioned. The trouble only began when we started hot-plugging devices for the keyboard and mouse work: that exercises parts of the software a device present from power-up never touches, and there the old design does too much work with interrupts disabled. Long enough to interfere with the timing of machine control.
Since the supplier had already replaced that software, and the replacement is built around not doing that, we moved to it rather than patching a version with no future.
The move is now complete and tested on the bench. The USB-to-Ethernet adapter identifies itself, negotiates a network link, takes its address from the 386, and answers pings — the deciding test, since that adapter is how the controller reaches the network in EtherCAT mode, where the built-in Ethernet port is taken over by EtherCAT itself.
Two faults are fixed along the way. Plugging in a USB device could stall the ARM long enough that the 386 stopped receiving responses and reported an error, which in turn stopped EtherCAT and faulted the drive; plugging and unplugging no longer disturbs machine control. Separately, high-speed USB devices could appear to disconnect and reconnect repeatedly on their own.
The diagnostic USB serial console had to be moved to the new software at the same time, because the old and new versions could not coexist in one build. It works as before.
Keyboard and mouse support remains switched off and is the next stage.