• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.
  • PLEASE: Read the FORUM RULES BEFORE registering!

X2 Mill Cnc Conversion


Active Member
Active Member
I have been working for a few weeks now on a CNC conversion of my X2 mill. Originally, I was going to stick to manual for a while, but after making a power feed with a stepper motor, a full cnc conversion seemed inevitable.

As with anything, budget was a concern, and any money I can save on the conversion is money I can spend on stock and upgrades. I know its a HF mill so my expectations of it aren't super high. I know I won't be making parts accurate to .0005". If I can hold .003" or better, I will be pleased.

For the controller, I am running linux CNC on an oldish computer my boss and I built from spare parts when I was an intern at my company. It isn't a workhorse computer, but it seems to be good enough. I found an old mac keyboard tucked away in my parents attic and snagged an old 19" monitor from work. I also gutted a very old (Probably around 2000) computer to use the case to house the CNC electronics.

For the motion, I am using 400 oz in Nema 23 motors on all 3 axes, TB6600 drivers, and a 7.3A 48V power supply. I got an el cheapo break out board for about $10 on ebay to interface the computer with the drivers. It is optoisolated, is powered by USB, and communicates with the parallel port.

I ordered some 1605 ball screws on ebay for $160 for all 3 axes and got them installed. I haven't measured the backlash correctly yet, but when I use the DTI and order a .001" movement in the opposite direction, the DTI indicates .001" movement. At the very least, it should be close to 0 backlash. I am using thrust bearings in the X and Y axis, and 2 "angular contact" bearings for the Z axis. I have the X and Y mounted, wired, and moving, and I am working on fabricating the Z axis at the moment.

The ball nut took away some movement in the Y axis. I am getting right around 3.9 inches now. I will break out the grinder and remove some material from the base to get that back. I should be able to get to 4.75 easily, maybe 5 if I really push it. The X is getting 9.75 without overtraveling the ways, and maybe 10.5" while overtraveling one direction safely. When I finish the Z, I should gain 1.5" of travel at the top.

The X and Y have no trouble rapiding at 108 IPM, and when setting up, it was able to get to 5 inches/sec (300 IPM) before it started to stall, but it didn't seem to be going that fast. I may have been losing steps at some point. Though 100 IPM is plenty for me.

I still have a good bit of work to do, and I will have a lot of questions. I am going to do the hoss pneumatic tool changer once I finish the Z axis and I got a 1.5"x36" piece of 4140 for christmas to make a bunch of tool holders.

Here is what I have done so far.

Here are the parts I have made for the Z axis so far.

Here is the whole set up on the bench.

This video shows the X and Y axis motion.

Here is a facing cut in 6061 aluminum at 60 IPM and .003" depth of cut.

Here is another cut, roughly .5" deep at I think .01" wide. Please pardon the overlay and the vertical video.

Im happy to answer and questions and I am open to tips and suggestions if anyone has them.


Active Member
Active Member
I got the Z axis stepper and ball screw mounted up and attached yesterday. The ball screw I got for it is oversized, but it doesn't look like it will get in the way of anything so I am not going to mess with it. I couldn't figure out how to remove the Z axis rack and pinion handle to make some measurements for a block to attach the nut and the head. I have a big block of scrap aluminum (the one seen in the test cuts) that I will probably square up and bolt to the side of the head, then take a piece of 3/8" aluminum bar, drill and tap to attach the nut, then bolt it to the protruding block. It will limit (or eliminate) the ability to adjust the Z axis gib screws so I will have to learn to live with that or come up with a better way.

For the Z axis, all thats left is to wire it into the driver, make the coupler, and make the blocks to attach the head.

Here is a picture of the stepper mounted up. I will need to make a small spacer to tighten down the ballscrew to the bearings.

Here is a wider view of what I have now.

I plan to come up with a better way to cover the ways sometime soon, maybe something that will protect the motor and coupler as well. Since I have been working on the parts with the ways uncovered and Y ball screw exposed, its going to need to be removed and cleaned. I will grind the base when I do that to get my Y axis travel back and hopefully get a decent increase as well. I plan to make a few parts with it before I do the flood coolant and enclosure. Too excited to wait while I do those... I should probably think of the time as an investment since clean up will not take 15 minutes at the end of every day. I don't think the bench is going to cut it for these machines. When I built it, it had my 90 lb mini lathe and the manual mini mill that I ran pretty slow. When I make cuts quickly with the CNC, the whole table shakes and rattles. When the Y axis rapids, the entire table gets pulled back and forth. Then the 450ish lb PM1030 is too much as well.


Active Member
Active Member
Shooter, It looks like your moving along quickly. Looks like a nice build.
I appreciate that. I have all week while I am at school to think about what I want to do to and with the machine so by the time it comes around for me to head to my parents house to work on it, I have a specific plan worked out for what I need to do. It seems to make things go pretty quick.


Active Member
Active Member
I am so close I can taste it... I have the Z axis mount done and mounted up, the Z axis stepper coupler machined and ready, the Z axis head block drilled, tapped, and in place, and the clearance hole for the ball screw drilled. Just need to drill and tap 6 holes for the ball nut, and make a small spacer for the lead screw and I should be in business!

I had a bear of a time removing the rack and pinion feed and handle. Once I had removed all of the hardware I could see, I couldn't get the rear cover to budge. I hit it probably a dozen times with a dead blow hammer, I tried to smack a screw driver between the head and the cover and launched a screw driver to the other side of the garage, and spent a good 30 minutes trying to figure out what else was holding it on. Once I concluded after spending a good amount of time online looking at pictures that there was nothing else holding it in place, I got a 10 pound sledge hammer and get it 2 taps and it broke free. Im thinking they stuck in on there while the paint was still wet and that bonded it to the head. Well from there it was just lining up 2 holes then drilling and tapping the head for the mounting screws, and drilling the through hole. I will enlarge it on my lathe because it is slightly misaligned and the largest drill bit I have is .750. It may rub on one side if I don't correct it.

Here are the pictures of the progress.



I had the table off so I got started on grinding away the base with a dremel tool and thats going to take forever. Unfortunately, I can't think of a faster way to do it with the tools I have. I want to get that Y axis travel back.



Active Member
Active Member
All 3 axes are up and running now. Right now I am getting about 8" of travel in the Z axis and 12" from the spindle to the table at its highest point. I picked up an extra 1.75" or so by removing the stop and letting it run to the top of the ways on the column. I should have another 4 inches or so to the table, but the spring head support stops it before it can get any lower. If I wanted to improve that, I would need a counterweight or air spring support. I was able to rapid the head to 120 IPM which was surprising to me. I figured it would stall out much sooner than that. Should make for some relatively fast tool changes.

I ground out the base of the mill to increase the Y axis travel a bit and I got it up to 4.4". I should be able to squeeze out just a little bit more if I need to. I think that will be just enough to get a 3/8" tool all the way around a 4" ar15 lower, though it is going to be a little bit tight. A little more will allow more wiggle room. It only over travels the Y axis by about .5" if I remember correctly.

Of course, progress identifies issues that need to be addressed.

First, the nuts that came with the ball screws to lock them in place don't work for crap. They have a set screw in them that is supposed to hold them in place but the set screws back up almost as fast as the nuts do. It can't change direction more than 3 or 4 times before they have backed out completely.

I identified a design flaw in my Z axis block. I put both bearings on top of each other with nothing in the middle to tension them against and lock the ball screw in place. So right now, gravity and the Z axis motor are the only things that hold the head down. I don't think thats good for the motor, so I will need to make that block again at some point.

The gibs aren't going to cut it I don't think. The Y axis has a tendency to fall and have only a tiny portion of the top corner touching the ways. I respotted the dimples which helped, but it doesn't solve the problem. X axis doesn't get great contact either and its tough to adjust it without binding. I got away with it by getting them tight and locking each axis when it wasn't moving for the cut, but I don't think that its sufficient for CNC. So I will be making some brass gibs for them at some point.

I am also using set screws on the ballscrews for the motor couplers. They don't have flats on them so they have a tendency to start slipping after a few minutes of motion. I will either grind flats into them or make new split couplers.

I have been working on designs for the parts I want to make with it. First, I will make some better clamps to hold the vise to the table like Hoss's design. Ive been meaning to do that for a while, but I never got around to it. I also saw some cool custom vices on another site and I plan to make my own version. Once I get the pnuematic tool changer up and running, I plan to make an AR15 charging handle and once I get all the kinks worked out, I am going to do a lower.

Here it is all CNCd up.


Active User
H-M Supporter-Premium
On my PM-932 conversion I added two pointed set-screws 90 deg apart to all my motor couplers and drilled mating dimples on the ball screw shafts. I have had no slipping issues and I'm running 34 size 1800 in/oz on the X & Y and a 42 size 4200 in/oz on the Z.


Active Member
Active Member
On my PM-932 conversion I added two pointed set-screws 90 deg apart to all my motor couplers and drilled mating dimples on the ball screw shafts. I have had no slipping issues and I'm running 34 size 1800 in/oz on the X & Y and a 42 size 4200 in/oz on the Z.
I hadn't thought of that. That would be easier than trying grind a decent flat. Thank you for the tip.


Active Member
Active Member
I have all 3 axes running great now. I was doing some test cuts in aluminum and steel and it was absolutely shredding it. I am very pleased to say the least.

I got myself some nicer end mills to see if it made a difference, and it is night and day. I got a carbide 2 flute rougher, a 3 flute high helix carbide, a 4 flute carbide ball nose, and a 4 flute carbide. All 3/8". The difference in how hard the machine is working, the vibrations, and resulting cut is simply night and day compared to the 6/$20 HSS end mills I have been using. I also got a 5/16" 2 flute carbide with radiused ends, a 2mm 2 flute and a 2mm 2 flute with a titanium coating, all for around $50. I should have done that years ago. The rougher was able to take a .5" DOC .05" WOC without any vibration or hesitation. The 4 flute carbide was able to take a .125" DOC .05" WOC in steel, with vibration, but nothing extreme.

I got lock washers to keep the nuts on the ball screws from walking out all the time and that seemed to work great. I think new gibs are going to be the first order of business as the ones I have aren't cutting it. The Y axis especially isn't adequate.

I go an idea for a control panel for it as well. I had one put together to control the single stepper on the x axis for the power feed originally. It looks like this:

Well, I can use the arduino to send keyboard commands to the PC controller. I will be able to add more buttons then tell the arduino what keyboard input to send to the PC with the press of each button. I have used buttons with the arduino board before and there is no discernable lag when processing the button press. I can also use the touch screen to add more buttons than I can fit on the face of the panel. Then I can also use the switches to control coolant, the spindle light, mill power, and power to the drives, etc.

I plan to add 6 buttons for X, Y, and Z movement, 3 buttons for selecting an axis, 1 for changing feed rate and increment, a tool change button to send the Z axis to the top of the column and a tool release button to actuate the tool changer.

Im getting close to making actual parts at this point!


Active Member
Active Member
As with any machine build, it takes a good bit of troubleshooting to get everything going.

Im thinking my Z axis design flaw is going to need to be corrected sooner rather than later because when the motor pushes the head down, I can see the ball screw push on the motor shaft and it moves about 3 mm. Thats no bueno. It should be as simple as popping the bearing block off, sticking it in the lathe, and boring it for another bearing underneath. Im hoping that won't be too bad.

I had the Y axis seize up because the ball nut slipped out from the set screw in the apron. I need to get it secured in there better. Same deal with the X axis. The set screws don't hold well enough with just the nut. I haven't figured out how I will address that yet.

In taking some cuts, I have started to get motor oscillations which sounds like it is getting right to the edge of its performance. I also had a bit of trouble with it stalling on me. I am thinking my motor has gotten weaker since I got the mill. I checked the brushes, and as far as I can tell they are fine. I am not sure what else I should be looking at. The reason I think its lost some of its kick is that in January, I was able to drill a .750" hole in 303 stainless from a 1/2 pilot hole. Just recently, I tried to drill a .750" hole in 6061 aluminum from the same 1/2" pilot hole, and it would stall out almost immediately. Im open to ideas for fixing or replacing it. I wouldn't mind sticking a treadmill motor or something similar to it to replace the little 4/5 HP motor it has (though the 120V @ 4.5 amps is a little under 4/5 HP and from what I have read, they don't drive it at 120V).

Im ordering the parts to build a tach for it with the arduino that will be on the control panel. It will be good to know exactly how fast the spindle is moving so I can get my feeds and speeds dialed in better.

I have been working on some of the tool holders for the pnuematic tool changer. Im trying to minimize the runout as much as I can. What would be an acceptable/realistic value to shoot for? I am all about chasing the tiny numbers, but I also need to know when to quit.

I have some videos for your view pleasure.

Here is a video of the Z axis testing. I think it was going 40 IPM at the slowest and 108 at the fastest. You can hear the rough ball screw movement as it runs. I think there is a little bit of eccentricity there that I could improve. The Y axis sounds much better and its the same ball screw.

Here it is cutting A36 steel. It is .125 deep and probably .02" wide on the cut. Though it does change a good bit since I was just tapping the keyboard to move the X over. I think I had the spindle turned all the way up around 4500 RPM and it was moving about 14 IPM. The bit is a 4 flute carbide .375" in diameter. At the end, I get a little ambitious with the width of cut and stall the motor.

Here it is cutting 6061 aluminum with a 2 flute .375 serrated carbide rougher. Depth is .750" and width is around .025. It had no trouble with this one at all.

Here is the 3 flute high helix .375 carbide end mill. Depth is .750" and width is .015". You can hear the spindle oscillations I was talking about. And this is where the Y axis binds from the ball nut slipping. Though until then it was holding its own.

I am a little suspicious of my motors being 400 oz in as advertised. The 425 oz in I see are all nearly twice as long as these are. These look to be the same size as the 275 oz in ones. I am happy with the performance so far so I will probably let it be for the time being.


Active Member
Active Member
I got a little antsy and wanted to see what the machine could do even though I know its not entirely ready. I am working on a CAD file for an AR15 lower and had enough to do one side of it. I scaled it down to half so I wouldnt use as much material and it wouldnt take as long.

I fixed the issue with the Z axis by taking the Z axis bearing block off, indicating it in the lathe, then boring the bottom for a 3rd bearing. Once I stuck it back on, I added a little steel strip to brace the whole Z axis assembly from the other side of the column. I tested it and found a very repeatable .005" backlash. Using Linuxcnx, I added the backlash property to the Z axis in the ini file and retested and it was under .001" after that, maybe .0005" at most with the backlash compensation. I am very pleased with that. I had trouble with the Z axis gib, so I took the gib screws out and gib, and realized (after using the machine for over a year no less...) the spots on the Z axis or too small for the screws and the screws had mushroomed heads. I put the screws in the lathe, faced them, and turned down the ends a bit so they would fit into the spots on the gib. Worked like a charm, no more sliding gib and the head wasnt tilting off the ways anymore.

Still having little issues here and there with the Y axis. The gib is so bad, it can be tightened down almost all the way (as in stepper cant move it without me pushing to help) and there is still rocking there. I have put it off but I doubt it can go much longer without having the gib replaced. Im pretty sure it is also moving around because the gib axis can work perfectly in one direction but as soon as it switches, it stalls. I got it about as good as I think it will get before running the part, and it worked well except for somewhere about halfway through it must have stalled a little because the finishing passes were about .125" off. The part still looked good and I am still pleased.

Here is a picture of it.

I have a few videos of it running that I will upload shortly. I have to say, im astounded by how quickly and accurately the head was able to move. Never would have thought it would be so nimble. I would like to stick the part back in with a 3/8" ball nose and do parallel finishing pass to see how it looks, but I was excited and didnt want to ruin my first CNCd part.


Active Member
Active Member
Here are the videos I mentioned. There is a bit of chatter in some places that I hope will be eliminated when I get that Y axis squared away. The first time I hit the start button, the Z axis shot up to its home position and I panicked and hit the E stop. Then I turned the rapids down to 1% and started it again, and it was just going there because the program started with a tool change. I think I just about had a heart attack then.



Active Member
Active Member
I made brass gibs for the mill and oh my what a difference. With the old ones, there was visible and measurable rock in the table, even when they were tight enough to cause binding. I ran some cuts with the new gibs, and I wasn't able to make it chatter with a 3/8 rougher in aluminum before the spindle motor started to struggle. When I try to rock the table, it feels rock solid now. No noticable movement and it has smooth motion from end to end.

I made some D bits with O1 tool steel to make them, and used a piece of 1/4x3/4 brass bar. It made as much of a difference in rigidity as my column brace did. I don't even want to think about how poorly it must have worked without the brace and new gibs.

Here is the new Y gib with the old one and the 2 tools I used to make it.

The contact with the dovetails still isn't great but it is much better. In this picture, the darker areas of the brass gib is where it contacts the dovetails. I guestimate 35% contact there. The old one was only contacting a 1mm wide strip at the very top.

After I put the X and Y gibs in place, I was cutting the Z gib, and the fly cut had a perfect cross hatch and the cut was quieter than the motor running and there was zero discernable vibration.

I am still working on the tool holders for the pnuematic tool changer. Here is what I have now:

I ordered a facemill for $20 with 10 inserts thats on the slow boat from China. I wanted to give a facemill a try but didn't want to try an expensive one and find my mill cant handle it. I figure the worst case scenario, I can use just 1 insert and use it as a fly cutter and I won't have to wonder if those cheap facemills are any good.

I am going to replace the spindle bearings soon as well. If it has as much of an impact as the new gibs, the mill is going to be in seriously good shape.


Active Member
Active Member
I have decided to do a major round of upgrades after roughly 3 months of having it CNCd. The biggest issues I run into constantly are with the dovetails and spindle motor. The machine needs to be seriously babied and monitored because it loves to run just fine for an hour and a half, then stall one of the motors and rapid into the workpiece. The spindle motor also has a tendency to stall and shut off even with cuts I know it can handle. Now, even with the new gibs and lots of lube, I can't get decent travel along its whole range. In order for it to be tight enough to cut well in the middle, I risk stalling on the outside edges. If I loosen enough that it gets to both ends of travel, the middle will be very loose and chatter even with light cuts.

So I am getting rid of the dovetails and using linear rails instead. I scoured ebay to do it affordably and I ended up with:

2 22" Thomson Accuglide 25mm rails with 4 bearings for $150
2 19" IKO MLFG24mm rails with 4 bearings for $67
1 20" THK HSR20mm rail with 2 bearings for $80
The scrap aluminum I am using was about $60
This puts me at $357 for roughly triple the machining area and hopefully, much smoother motion and rigidity.

I plan to use the accuglides on the X axis, the IKO rails on the Z, and the THK rail will be cut in half and used for the Y.

Here is the model of the machine with the new rails. I need to change the Z axis to the IKO rails and bearings. Almost all of the new parts will be made using 3/4" aluminum. I found several large plates at a scrap yard that appear to be ground. I found a few high spots on the piece I am using for the table, but it cleaned up easily. The new table will be 8.5"x22" and the new travels will be about 15.5"x7.1"x8" (XYZ) and there will be roughly 5 extra inches in the Z that will extend past the top of the column which will be useful for very light cutting and drilling. The fusion 360 simulator says the weight of the head will cause the assembly to tip about .0003" and with a 100lb cutting force at the worst locations, the table will twist about .002" at the farthest and most will be under .001". With the head lower on the column and the table centered, which is closer to where 95% of my machining is, with the 100lb force, the table twisted .0007".

The second big upgrade is a new spindle motor. I have a 1.3HP treadmill motor that I will mount up. It isn't all that much bigger than the stock X2 motor, but it should have significantly more torque and I can gear up the spindle speed to 7200 RPM and still have more torque than the stock motor at its max speed of 4300 RPM. The treadmill cost me $25 which got me the motor, the controller, a big flywheel, a bunch of wires and bolts, and some steel.

Last, I got some encoders to add to the steppers to detect a stall and halt the program before anything breaks. The encoders can run at 2400 pulses per revolution and were $10 each. I read somewhere you can program linux cnc to use assist motors with the encoders to get faster rapids. That sounded like a fun possibility as well.

Here is the table having the ends machined. I squared it up against one of the edges and I may clean up the rest of the sides once it is finished. The top surface will also be flattened once the rails are finished and mounted on the machine.

If anyone has suggestions or questions, I am all ears.