Mach3 for GCode interpreter


I am using Mach3 with a Smoothstepper ESS (Ethernet) to drive my Odrive. So this method will use step and direction for control. Can anyone point me where I need to start. I have just loaded the software tools and am getting into it tonight. I was just looking for a little guidance of where to go after I get my Odrive configured.



Hi Bart,
Unfortunately the step/dir interface is not ready yet.
You can try sending some test position commands using the USB interface.


Hmmm that puts a serious wrinkle in my plans. When do you expect to implement step-dir? And could I request that implementation be bumped to high priority?


Okay, I bumped it up.
The main thing taking up my time is shipping the kits. Once they are out the door, I should be good to just work on features.
I apologise that things will go slow, I’m only a 1 man operation. Maybe someone in the community wants to get started?
I expect step/dir will be 2-ish weeks maybe (one week to get the kits shipped, 1 week to implement).


That’s great! I will have plenty to do in the meantime. I suspect that i am not going to be the only one wanting to use step-dir.



Very nice. This is exactly what i want to do, too. Still i am not sure yet whether to buy the EthernetSmoothstep or Juicyboard as the Juicyboard team states that it will be compatible to the ODrive soon


7 posts were merged into an existing topic: Step / Direction


I checked out the JuicyBoard from the link. It looks pretty interesting. But my personal philosophy on hardware is to stay as generic as possible. That way if in the future anything happens to the company you can still use it and upgrade. I have been using the ESS for over a year now and it is very stable With Mach3. The best feature I believe is the Ethernet connectivity. I used the PC Ethernet to connect the Ess to the PC and just added a wireless dongle for regular network and internet connection. You can use the same ethernet for connection to both the Ess and regular connection but they recommend a dedicated nic for the Ess. I also added on a C23 breakout board to the Ess and that gives a lot of IO. I would just hate to be locked into the proprietary nature of the JuicyBoard. I looks like the main advantage of the JuicyBoard is the stepper drivers and if you are using the Odrive you would not use them anyway.


Greetings - Newbie here. What is the current status of step/direction please? I’m doing a CNC mini lathe build and just received my first ODrive. My plan is to use it for the spindle and Z axis, right now I’m concentrating on the spindle and have a concern over the maximum step rate.

I’ve seen in the docs that the step input is untested, but “should” be good to 50Khz. Has anyone tested this yet? I’m planning on running a Kollmorgen Silverline H-344 for the spindle with a 2:1 reduction via HTD5 belt drive.

My problem is the lowest resolution encoder I have that fits is 250 CPR. Now if my math is right, 250x4 (qudrature) x 2 (drive ratio) is 2000 counts per rev, a 50KHz rate would max the spindle at 1500 RPM, which is a tad low.

On the other end of this formula is Mach with the ESS Smoothstepper with can handle 4MHz step rate, which is obviously no problem.

So I’m weighing options. A lower rez encoder will have to wait for special order and cost a bit, or I could change the belt ratio, or just hope the ODrive step input rate is higher than 50Khz (I’d be very happy to see it hit 80Khz). Or is there any other option that is shipping now or soon to be?

Ideally, I’d really like to see something that has a HAL interface to Mach like the smooth stepper, but interfaces to the ODrive without the Step/Direction input.

I am BTW assuming that PWM is out for threading operations, but maybe a index pulse for the spindle could work along with PWM…

Any ideas appreciated…


The Step/direction works fine. Use as high a resolution of encoder as you can get, it’ll make the velocity control better. You can set the number of encoder counts per input step in the ODrive software, so you can hit arbitrary motor speeds. We also support UART, USB, I2C, PWM, and CAN


Great to hear, Thanks!