Would you pair put the handbags down! :)

In terms of Mach3, Ethernet is the more reliable communication method for external motion controllers.
The reason for this, is Mach3 can't handle any errors or glitches in the communication method.
Ethernet handles errors and glitches at a hardware level, it's also an isolated system, so is much more tolerant of external noise, and should a packet fail to reach it's destination, the hardware (ok, it's technically the embedded code in the Ethernet controller if you want to split hairs) will handle the problem and resend it until it reaches it's destination.
USB doesn't have that, so any packet of data that gets corrupted, has to be detected and handled by software. I'm sure if the plugins could be designed to do this, they would, however it's one of the things that Mach3 was never designed to handle, as it was originally written to talk directly to the parallel port.
I think it would be fair to say external motion control, was simply patched onto the Mach3 core.

One key point to remember, is once you involve Ethernet or USB, you are no longer running realtime. All you're essentially doing is running a faster version of ye olde RS232, in that you send commands to a controller, and the controller (hopefully) tells you it's been done.


However, USB can be used reliably. I run several KFlops, and they are far more stable than my USS ever was with Mach3. My lathe still occasionally locks up Mach3 (my manual lathe is the sole trigger for this!), but no where near as often as the USS ever did.
I am in the process of moving to KMotionCNC, as it can handle communication problems far more gracefully (and it has less issues, but that's for another topic!), and will happily resume once things are back to normal.