CNC Mill Update - 2023

In this update post I will describe a few of the modifications and improvements I’ve done to the mill. I occasionally get emails requesting information about modifying the mill and I hope this post will be helpful for anyone else working on a benchtop mill.

CNC Mill Update - 2023
Before and After

I have previously written two posts about converting my manual Shopfox Mill (SX3 variant) into a CNC mill.

The first post (here) discussed the stepper driver and motor selections.

The 2nd post (here) is about a LCD driver and button board I designed for the mill.

It's been a few years since those posts and I’ve continued to use and improve the mill over time. In this update post I will describe a few of the modifications and improvements I’ve done to the mill. I occasionally get emails requesting information about modifying the mill and I hope this post will be helpful for anyone else working on a benchtop mill.

Completed Upgrades


I experimented with a few controllers and software packages for driving the mill. In the end I settled with a Mesa FGPA controller board paired with a LinuxCNC installation running on a PC. I am extremely happy with this combination and have used Mesa boards on other projects since.

I have not had any stability issues and the system is extremely solid. I enjoy the easy configurability of LinuxCNC and I haven’t found any missing features for my use-cases.

I am specifically using the Mesa 7i76E configured with communication over Ethernet. It drives the three stepper drivers and spindle speed. I think this is an ideal setup for a CNC mill conversion.

The Mesa 7i76e board fits into the enclosure I was previously using. 


I tried to get away without coolant for awhile and I found it pretty frustrating. I had few issues with chips welding to endmills and some failed parts. I tried to avoid coolant because I’ve used flood coolant in the past and I didn’t like the mess it created or the upkeep required.

I purchased a Fogbuster system for the mill and I’ve found it perfect for my use-case. The Fogbuster sprays a fine coolant spray instead of a full flood of coolant. It provides adequate cooling with basically zero mess — the amount of liquid is so low it barely even pools on the part I am cutting and does not require cleanup. I also like how easy it is to cool with air only (when I am cutting wood). The system requires almost no upkeep.

I got the fog buster with two nozzles and I find it helpful to have both for chip clearing in deeper pockets.

TTS Tool System

The Shopfox mill ships with an R8 spindle collet. R8 collets aren’t ideal for CNC work since they don’t maintain a consistent z-height when changing tools or even adding and removing the same tool.

I switched the R8 collet for this R8→TTS Tool Holder adapter. The TTS tool system works well for mills of this size. Now I have a library of tools that I can swap back and forth between without having to re-set my z-height between operations. This really speeds up jobs that require a few different tools (roughing, facing, ballnose, drill, chamfer, etc).

These are the tools I end up using the most:

  1. 3/8in TAS roughing end mill
  2. 1/4in TAS roughing end mill
  3. 3/8in High Helix end mill - 3 flute
  4. 1/4in ball nose endmill
  5. 1/8in ball nose end mill
  6. TTS Fly cutter
  7. 1/2in 45 degree chamfer bit
  8. TTS boring head

These tool holders from Thingiverse have worked well for holding the tooling.

I printed 20 of these tool holders and ended up mounting them onto a 3/4in piece of plywood in a 2x10 configuration.


I purchased an iMach P4-S Pendant from vistaCNC.

This is by far the most important accessory I’ve gotten for the mill and it completely changed how I used it. It would be one of the first accessories I would buy if starting over again. Driving each axis with the rotary encoder is a lot quicker than typing the GCODE manually or using the buttons on an LCD screen.

The pendant is well-constructed and has been completely reliable.

The pendant works OK with LinuxCNC, but I haven’t taken the time to get all of the functionality working and I suspect it may take a bit of configuration work. I mostly use it for the various jog functions. If I were to buy another I would consider saving some money and getting one with less functionality.

Gas springs for Z-assist

The SX3 mill relies on the friction of the Z-axis ACME leadscrew to prevent the head from crashing down into the work. After replacing the leadscrew with a ballscrew the 100+ lb head will fall under its own weight if not driven by the z-axis motor — sometimes with some significant force. The ballscrew is so efficient it can be backdriven pretty easily. This also puts a significant load in the motor during operation because it has to overcome the weight of the head when moving in the positive direction.

I added a gas assist spring to the mill to provide some force to counteract the pull of gravity on the z-head. I ended up using this spring from McMaster which provides 50lbs of force. In order to maintain the full range of motion of the machine I made a bracket to offset the attachment point of the spring.

Gas struts should be mounted with the gas-filled thicker portion on top like shown. This helps maintain a proper seal and prevent leaks.

I originally installed two of these gas struts on either side of the machine, but this added too much lifting force and the head was basically “floating” and maybe even biased a bit in the positive direction. I’ve since changed to using only the spring on the left side. I think its helpful to have some weight still pulling down the head for increased consistency since the z-axis does have some backlash.

If I were doing this again, I would consider two springs that are 20-25lbs each. I haven’t noticed any issues with driving the head in a cantilevered fashion, but I would prefer to apply the force equally on each side.


I added three of these end stops on X,Y, and Z. They’ve worked great, and I appreciate that they are moisture and ingress resistant. Locations of mounting are shown. Email me if you want the STL files for the end stops.

The Z-axis gomes directly against the Z carriage. 
The X-axis is tucked behind the build area. I may need to adjust this location when I add the below covers. 
The Y-axis endstop homes against a 3D-printed stopper. 

Spindle Drive Gear

The SX3 mill has a belt-driven spindle with a max speed of 1800RPM. I typically want more speed from the spindle so I installed this drive gear to increase the max speed to 3000+ RPM. I am pushing the limitations of the spindle bearings, but haven't had issues so far. In the future I may disassemble the spindle and upgrade the bearings.

I am also considering adding a secondary high rpm (6-10k+). spindle to the machine for engraving and fine detail work.

Before upgrade with RPM sensor mounted
Post upgrade – I still need to re-mount the RPM sensor. 

In Progress Upgrades


The enclosure is a work-in-progress. I designed an enclosure using 80/20 1” extruded aluminum bars and 3D-printed connector pieces. The frame is complete, but I need to add panels and hardware for a door. The enclosure will be very helpful to keep shavings from making it into the rest of my garage (and ultimately into my house!)

Enclosure without panels 

I designed and built the enclosure in 2021. At that time polycarbonate sheets were in extremely high demand due to the COVID19 pandemic (clear sheets were used as protective barriers for retail workers). I expect the sheets will be more readily available now and I'm looking forward to getting them installed.

Bellow Covers

I am building some bellow covers for the Z -axis of the mill. This will keep the shavings from getting into the ways and causing maintenance or reliability issues.

This website has great info on the folding plan for various shapes of bellow covers.

I am going to attempt to make the bellows out of denim material coated with an oil-based urethane.

5oz denim with a single coat of urethane. 
Paper mockup of a section of bellow cover on the Z-axis. 

I will post an update when/if this works!

Future Upgrades

To further improve the mill I'd like to finish a few more projects:

Power Drawbar

Right now I am using some wrenches to change out the tools. This works well, but it would be convenient to be able to swap them out with the push of a button. I plan to add a pneumatic power drawbar to assist with this.

Wrenches I built for swapping out the TTS tool holders in the spindle. 

Automatic Tool Changer

Once the power drawbar is complete I can consider adding a rotary tool holder and support automatic tool changes.

Improve work holding

I'd like to find some ways to expedite work holding – especially when flipping and re-orienting parts.


Please reach out if you have any questions about these modifications or even suggestions for future improvements! I've benefited so much from seeing what others have done to their machines and would like to share what I've learned wherever possible.

As a final conclusion, here are a few pictures of some of the parts I've created using the mill. I end up using it for a lot of projects around the house and for friends and family.

Custom shift knob for a friend's LS engine conversion project
Steel washer for a transmission drive shaft on an old Buick convertible. 
Mt. Hood topography 
Hardwood floor vent out of 3/4" material. 
D&D Dice and Miniature holder