Another mill project



I have a project is nearly same as lot of people
A cnc mill!
I have read a lot of build thread and i see lot of different hardware people use but the one keep my mind is odrive.

I “cross” read all the availaible document on odrive site and i dont understand all what is explained but i dont want to go further till i have my answer

I want to use odrive to the spindle of my cnc mill.
Odrive, why? To orient the spindle for future atc, do rigid tapping and use outrunner dc motor because the ratio, price/torque/speed and ability ,i hope, to use odrive, a powerfull drive cheaper than other solution,i think.

My question is, can i do it with odrive?
And how? Just to know the term, because i dont know all the term was used in the documents,

And can i control it with linuxcnc?
My plan is to use mesa card but for now i only have a “cnc4pc” breackout board

I dont need all the explanation but only some clue to know exactly what i have to seach for ( term like step/dir)

For the moment im in developpement, my plus side is on mechanic, but i dont realy know electronic thing but i understand apromimatly how it work



Hey there!

In the midst of development on a small CNC mill myself.

It’ll mostly come down to your controller and what it has for spindle communication. I’m planning on using a smoothstepper and Mach 4 for motion control. The smoothstepper has a lot of options for communication over it’s spindle output. I’m not super familiar with the messa’s but I think I may have ruled it out because of the spindle output and it’s limited number of axes.

I would double check and make sure it provides a com protocol thtlat the odrive can receive to successfully control the spindle.


Ok thank

I will smoothstepper with mesa’s card to find if they have some similitude

But wich option on the smoothstepper work with odrive?


I found this in the mesa’s manual

The 7I76 provides one analog output for spindle control. The analog output is a
isolated potentiometer replacement type device. It functions like a potentiometer with
SPINDLE + being one end of the potentiometer, SPINDLEOUT being the wiper and
SPINDLE- being the other end. The voltage on SPINDLEOUT can be set to any voltage
between SPINDLE- and SPINDLE+. Polarity and voltage range must always be observed
for proper operation. The voltage supplied between SPINDLE+ and SPINDLE- must be
between 5VDC an 15VDC with SPINDLE + always being more positive than SPINDLE-.
Because the analog output is isolated, bipolar output is possible, for example with
SPINDLE+ connected to 5V and SPINDLE- connected to -5V, a ±5V analog output range
is created. In this case the spindle output must be offset so that 50% of full scale is output
when a 0V output is required. Note that if bipolar output is used, the output will be forced
to SPINDLE- at startup or when SPINENA is false.
The 7I76 provides 2 isolated outputs for use for spindle direction control, and
spindle enable. These outputs are OPTO coupler Darlington transistors. They are all
isolated from one another so can be used for pull up or pull-down individually. They will
switch a maximum of 50 mA at 0 to 100 VDC. The SPINENA output is special as it uses
the same signal that enables the analog output. When the analog output is enabled, the
SPINENA OPTO output is on.

It is enough info?

I just searching for few minutes an i found this

Mesa card look way more powerfull than the smoothstepper , depend of wich one you take


Doesn’t sound like that would work with the odrive. You would need an intermediate controller to turn the signal coming from your analog outout into something the odrive will work with.

The smoothstepper has a bunch of config options on the spindle output, including step/direction and pwm.

From what I saw of the messa the main draw seems to be that it has an integrated computer. So you don’t need a PC to run your g-code. In terms of functionality though the smoothstepper has a lot more going on. You do need a PC running Mach 3 or 4 or some other control software though to make it work.


Hi Tommy,

I built several CNC machines with Mesa cards, they are very powerful and professional cards with FPGA chips to provide motion control for all kind of stepper or servo motors. You do need a PC anyway.
As for your plan to use BLDC as spindle drive: yes, in my opinion you can use BLDC motors and Odrive, in velocity mode, then you have stable speed/torque, you can change the spindle speed and direction with Odrive. But you need an intermediate circuit/device like arduino or something similar, which will read the expected speed and send this command to Odrive. Maybe even you can eliminate the arduino, because you can program the Odrive from python script. But for reliable threading or rigid tapping there must be an encoder on spindle (with index signal) which will be connected to Mesa card . This way Linuxcnc will know exactly when to enter the thread . If you have more questions, I happy to answer but for special topics I’d recommend to go to linuxcnc forum or IRC channel.

Mesa cards are not capable of driving Odrive (except step/dir mode , I am not sure, but driving Odrive with PWM could be doable from Mesa…maybe… I have to check it…) but you can use them for looping back spindle encoder signals. Mesa cards are better in many areas and more powerful than smothstepper.


Oh nice, this exacly what im looking for answer

I do some searching on mesa site, i saw a board like odrive but i see is accept less current and have less fonctionnality of odrive

I see somewhere in the odrive manual the have pinout to communicate with Rx and Tx , and same thing on 7i77 mesa Daughter card but i didnt go further abouth what exactely it does

But if i need arduino to control the odrive, how linuxcnc send command to odrive?

Seriously im not sticking with any brand or board ive talked before, the reason i choose it is

Mesa- i didnt found any bob or anything it have as much of I/O possibility and it seem to be powerfull. It seem to be very customisable too ,with lot of knowing and im not scared about this.

Linuxcnc, lot of customisable option and i try it for the first time and it took me 20minutes to make a stepper moving.

And odrive because price/power/fonctionality is the most better on the market

What im understand from odrive : is a driver,same as gecko drive for stepper motor
And drive connect to BOB then to computer
Like drive->daughter card->anything I/O card (from mesa like 7i77+5i25). wright?

Im not talking about arduino because i dont know a lot of it and i dont know all of its possibility
So im stick with pc because it seem to be powerfull than an arduino and im more confortable with it

So any suggestions of hardware is welcome i will see if is for me


Drew -Mesa start from pci card or a usb or ethernet board look like a breackout board and it goes to another board with the fonction you want, step/dir for stepper or servo, another to drive motor like odrive another with like 56 I/O etc


Im typing “linuxcnc python”" on google and i found this on linuxcnc site

1. The linuxcnc Python module

User interfaces control LinuxCNC activity by sending NML messages to the LinuxCNC task controller, and monitor results by observing the LinuxCNC status structure, as well as the error reporting channel.

Programmatic access to NML is through a C++ API; however, the most important parts of the NML interface to LinuxCNC are also available to Python programs through the linuxcnc module.

Beyond the NML interface to the command, status and error channels, the linuxcnc module also contains:

  • support for reading values from ini files
  • support for position logging (???)

It is help for my need?

I just look 2 minutes and it look like a good new’s?

I asking because i dont know exactly all therm on linuxcnc ,for the moment ,but like all said about it “learning curve”


I found hal2arduino or emc2arduino, it seem to be doable with this?

Probably i will have to learn arduino before mesa card

But if anyone know anything, i will take it


I’m looking at using a beaglebone with machinekit (a fork of linuxCNC) for my cnc. The beaglebone is cheap arm based computer and have a PRU-ICSS chip (Programmable Real-Time Unit Subsystem and Industrial Communication Sub System) which is a processor with very good timing and suitable for outputing step/dir or quadrature or pwm signals for controlling motors. I dont really get why so many use mesa card when it is more expensive. Could anyone tell me the advantages of using a mesa card?


It depends … what is your goal?
To build a reliable CNC machine to be used for making money 8 hours a day ?
Or cheap hobby category machine for doing some fancy stuff?
Do you want to experiment and you have time to finish it?
Or do you want it in few days without much hassle and used proven solutions

I used BBB for CNC and it was a painful experiment. Sure, BBB is cheap, but anyway you need a break out board, which costs nearly the same as BBB or more. Then BBB graphic capability is limited due to closed source hw driver , there is no way to make it better. So Axis and all other GUI programs are so slooow. You can use some remote access, but it is not convenient and not professional (can you image to control a CNC machine from a tablet ?) . You need one more PC to control the whole BBB… The software support is limited because the Machinekit is used by small group of people, many things you must discover on your own, etc.

While with LinuCNC you have solid user base, good support on forums, IRC, mailing lists and from Mesa too. 100USD motherboard with full Linux distro you have many GUIs.
Mesa cards are on professional level, used by many people and companies, well supported.

At the end of the day, having cheap PC and Mesa cards (or there are many other less known LinuxCNC compatible cards) you can build quicker a professional solution capable of handling all newly developed features. And again, supported by big community. ODrive is succesful, because it’s great thing with good support.

I built/retrofitted more than 15 CNC machines with Mesa cards, some of them working 10-12 hours a day more than 5 years. Never had any issues.

This is my lessons learnt :slight_smile:


Thanks for your feedback :slight_smile: I don’t have much experience of building cnc.

I got a Beagleboard X15 I’m gonna try to hook up with odrive with step/dir. I dont really see what I would need a breakout board for (enlighten me? :slight_smile: ). The annoyance with graphics drivers is very real. How I see it is that I use the the BBB (or X15) for controlling the actuators and running machinekit and use my regular computer (that I use for cam and stuff) for machinekit UI remotely (doesn’t need to be a tablet) to control it remotely.

I know setting this up will probably require more work than setting up a linuxcnc with mesa card. (By the way, X15 has a 2x pci express slot, so could maybe connect a graphics card for better UI :stuck_out_tongue:) I might try to get the hardware acceleration for graphics to work later.

What are those newly developed features you’re talking about? I thought that controlling a cnc is pretty much just interpreting gcode and sending signals to actuators and handling limit/end switch inputs?


Im agree with james, it depend of your goal, quality,reliability of your machine

I think the best option for me is the arduino to control odrive, combined with mesa.

The choice for hardware is not definitif but it will start with a odrive, im waiting for it, today its leave from california😊

Im on 3d conception for the moment but i will look for all suggestion that anyone make it

I have a final idea for my mill but i will get some difficulty is write on the sky!

Lauchpad- i was cnc machinist but for the moment a “newly feature” was on cnc market is hybrid cnc , metal 3d printer combined with a cnc milling. But like james said, depend of the feature you want, take a automatic tool change… Probably take a lot of work to do it, only mecanic side is a challenge,depend of your goal, an atc with 5 tool is a thing, but if you want ro run it 12 hour a day or you want to make a piece it was just little complicated… You need at least 8 tool
When i program a part it need oftem more than 20 tool and i think, all invested time and money to stay in the of the machine to pass my time to change tool by hand! Hell no!

The final hardware will depend of my needs, for the moment i dont know all the I/O will be needed, this is why i take any suggestion

Thank for reply


You can find BOB cards for BBB here:
I used CRAMPS, (nice, easy to use) and I have one Furaday cape (for sale if you are interested).

The new features I meant mostly GUIs (gmoccapy is excellent) which might not be available for ARM platform.
Some gcode functionality (jog while paused, etc) also available for LinuxCNC and I am not sure about Machinekit.


I have a question about odrive

Can i use Turnigy CA80 160kv with it?

I suppose yes because the voltage is rated in the range of the odrive and the amp max of this outrunner is 200a but i know odrive is limites with 60-70a with decent cooling, but the real question is, it is worth it?
What are the advantage over a 6374 150kv from odrive? 10kv différents is not a big deal but it will have more torque? Over the 6374 from odrive

Im asking because the outrunner from odrive limitation are similar (volt and amp) of the drive but the turnigy ca80 can go above

It will have a gain because body is bigger?

I try to seach info on youtube but the only thing i see is with no load it draw not more than 10 amp / 36 volt at full speed

Did a Turnigy CA80 160kv can be a good motor for spindle? I think i will be ok with the 6374 from odrive but i was asking


Thanks for the feedback and sharing of experiance :slight_smile:
The hybrid cnc functionality sounds interesting. I tried google for it but didnt find it :confused:. Do you have a link or anything where I can find more about it?

Since machinekit is a fork of linuxcnc I assumed much of the same functionality would be the same. If I find the functionality in linuxcnc documentation it is much easier to see if there is some corresponding functionality in machinekit.


Look at mms online (google)