Posted by SainSmart on

Written by Graham

I received this to review (Thank you SainSmart). Let me say that this is a pre-release model, the documentation is not yet complete and it is possible that minor details may be changed before release.

This is my first attempt at using a rotary 4th axis so please bear with me and if you know better please correct me.


This is a review so the how to use details will be brief. I do plan to produce a getting started with the 4th axis guide in the very near future which will go into much more detail about how I have set it up and use it.


4th axis tutorial


What is a 4th rotary axis?

Firstly the 4040-PRO is currently unique in the SainSmart range in that it has support for the 4th axis on the control board. Often a rotary axis is plugged in to the Y axis stepper cable once the bit has been centred above the rotary axis, the movement of the bit in the Y axis is ‘simulated’ by the rotation of the stock.

‘Normal’ 3D routing involves the end of the bit being able to be positioned in the X, Y and Z axes. In other words it can move freely in three dimensions. If you want to produce a cylinder then you will have to mill the top half, turn the stock over, re-align it and then cut the bottom half. Tricky and tedious to get right.


Often rotary attachments plug the Y axis into the rotary which effectively wraps the Y axis movement around the surface of a cylinder. The actual Y axis movment is disabled and the position of the bit is fixed over the top of the cylinder. This is the way that a rotary roller normally works.


A full rotary axis adds a 4th axis, the Y axis is not disabled and can be moved as well, for example machining the top and bottom of a surface is possible, not just wrapping the machining around a cylinder. It can be turned to create angled pockets or expose another surface to be fully machined.


This on the 4040 PRO is a full 4th Axis! In the Gcode it is refferred to as the A axis, rotation around the X axis.

Limitations of a 4th Axis

The bit will always be vertical with regards to the rotary axis, Taking the example in the picture you cannot cut the left-hand hole, this would require a 5th axis to rotate around the Y axis as well! The bit cannot align with or reach through the hole. There is a possibility of machining the part with the rods, but you will not get any bit to produce crisp corners.

The hole on the right is aligned with the rotation of the A axis can be cut easily, it doesn’t even have to be at the centre of the stock.


Perhaps a better example is these two knobs. The left hand one can be cut, no parts will be underhung (an underhang is a place that the bit cannot reach using a straight bit as it is under another feature).


The one on the right however has a recessed base, the bit, moving vertically will not reach into the recess. This is a limitation of using any 4th rotary axis.

BUT the non-underhung knob can be machined in a single operation without machining half, turning the stock over and cutting the other half which means working out how to align and secure it.


Open the box, take out the few pieces, count the screws!!!

As always well packaged with nothing missing and the customary spare screw which is always useful.


Nothing to do here it is fully assembled; however, it is always worthwhile checking screws for tightness, the only ones would be the ones holding the Stepper assembly to the baseplate. I didn’t find any problems though.

Parts Description

Although it is fully assembled these are the main components.

Stepper Motor

This is a Nema 17 motor with a 10:1 geared reduction. The motor driver is fitted into the end housing on the motor. The connection to the router, while a 6 pin connector, is not the same as an X, Y or Z axis stepper which take the output from a motor driver. This carries the input signals to the internal motor driver which then connects to the actual stepper motor via the green screw connector.

There is a blue power LED on the end cover which is lit when power is connected.

There are 4 DIP switches next to the connector, these control the microstepping of the motor and the control voltage. These need to be set correctly for the rotary axis to function correctly. They are factory set, as mine were, but checking is recommended!

The required settings (from top to bottom in the picture) are:

M0 Off

M1 On

M2 Off

HV On (3.3-5V)

In the photo off is with the switch tab to the left, on is to the right.


Already mounted onto the motor this is a K02-50, a 2-50mm diameter 4 jaw geared chuck.

At first glance this will only take stock from 2mm (0.08“) to 24mm (0.94“) diameter. But the jaws are easily reversed as in the right picture, giving a maximum diameter of 55mm (2.17“)

I am using my measured values which are slightly higher than SainSmart says. To be safe use their values, the differences are small and I don’t support the warranty!

The knurled collar at the rear is used to open and close the jaws, once the jaws are snug on the stock by hand, then use the chuck keys, one in the collar and one in the chuck body to tighten or release the stock.

The centreline of the rotational axis is 40mm (1.57“) above the top of the baseplate, (50mm (1.97“) above the router bed). This would allow stock up to 80mm (3.15“) diameter to be used with an adapter or some machining at the end of the stock to form a cylinder which would fit in the chuck.

Maximum opening

The chuck jaws are opened and tightened by the teeth at the base of the jaws fitting into spiral grooves on the chuck plate, there are 5 teeth on each jaw.

At all times all teeth must have at least 2 teeth in those spirals to mount the stock securely, if not the jaws may not hold the stock square and can ‘wobble’ even after they are tightened, and are more likely to work loose during machining.

The picture shows the chuck jaw ready for removal with 5 ‘teeth’ showing.

With the chuck fully open the edges of the chuck jaws will collide with the top of the axis baseplate, do not force them past, if you need to rotate the chuck when fully open tighten the jaws a little, then rotate the chuck and open them again. They will NOT collide at the maximum usable diameter!

Reverse mounting the jaws

Using reverse mounting of the jaws increases the maximum stock diameter which can be clamped. See Maximum Stock Sizes below. A simple process, it’s called reverse mounting as the jaws are reversed in the chuck mountings.

The price paid is that while normal mounting allows a 14mm (0.55”) clamping length on the stock, when reversed the outer jaw has a 5.75mm (0.23“) clamping length while the inner jaw is 5.5mm (0.22“) but will take 11.25mm (0.44”) of the stock before it clears the jaws.


How to reverse the Jaws

Use the knurled knob to fully open the jaws and move the slot (diagonal line in the picture) just past a jaw with all 5 teeth on the bottom of the jaw showing, the jaw will now slide out of the side of the chuck. Rotate the knurled knob anti-clockwise by 90° so the next jaw can be removed. Remove each jaw in turn. The chuck may be a little stiff, especially when new so you may have to use the chuck keys but do not force the chuck. Also beware of the outside of the jaws catching on the top of the baseplate, when fully open they will!


Once all the jaws are removed*, you do have to remove all 4 before re-inserting them,* reverse each one so the stepped side is toward the centre of the chuck and re-insert each one in turn rotating the chuck clockwise by 90 each time.


IMPORTANT NOTE: The jaws are numbered on the top, 1,2,3 and 4 they are all different in the position of the teeth on the base of the jaw which engage with the threads on the chuck plate. They MUST be re-inserted in the correct order.

Normal mounting, with the long jaw to the inside, when fitted the numbers increase in the Clockwise direction with 1 and 2 bracketing the K02-50 engraving on the chuck plate.


For reverse mounting with the long edge of the jaw on the outside the order is also reversed, when fitted the numbers Decrease in the Clockwise direction with 4 and 3 bracketing the K02-50 engraving on the chuck plate.

There may be other orders possible but this order works!


A certain amount of wiggling and rotary adjustment may be needed to remove and reseat each jaw.

Once all the jaws have been reversed and re-fitted rotate the knurled clamping knob by a minimum of 2 full turns clockwise to make sure the jaws are securely seated. Each jaw must have at least 2 of the teeth on the base are within the ‘thread’ of the chuck, a maximum of three teeth outside.

To check the alignment and the correct order of the jaws fully close the chuck, the centres of each jaw should come together evenly in the fully closed position.


Maximum Stock Sizes

I measured the jaw openings for each configuration.

Measurements are in mm and (inches) With Tailstock Without Tailstock
Jaw Mounting Min Diameter Max Diameter
Normal 2 (0.08”) 24 (0.94”)
Reverse (Inner) 18 (0.71”) 39 (1.54”)
Reverse (Outer) 34 (1.34”) 55 (2.17”)



  • Min and Max Lengths are from the end of the Jaws, add the Jaw length, the length of stock which will be inside the jaws, to determine the actual stock length.
  • The maximum unsupported length is determined by the actual cutting area of your router and the size of the bit being used.
  • Some of these values are slightly larger than SainSmart quotes but only by a few mm. SainSmarts values are safer, mine are at the absolute maximum I consider possible.
  • The absolute maximum diameter of stock which can be used is 80mm (“) this would require some sort of adapter or cutting a round boss at the end of the stock which would fit in the jaws.
  • The jaws could also be used to clamp the inside of a hollow object, such as a tube, as long as the hollow is straight but I have not tried this yet.


The function of the tailstock is to support the stock while allowing it to freely rotate, the longer and thinner the stock the more it will be deflected by a bit which is ‘bad’.

The tailstock housing is bolted to the bed using the supplied M4x12mm cap head screws. It is accurately aligned along the centreline by the centre guide on the base. The alignment holes, 5 positions, are 20mm apart giving a movement range of 100mm. The tailstock point is also adjustable by the screw and has a 33mm range from retracted to extended.

There are a number of parts, the mounting, the telescopic outer and inner tubes with the adjustment knob at the end, the inner tube contains the actual tailstock point which is mounted in bearings allowing it to turn freely. At the rear side is a clamping nut which when tightened will lock the telescopic section in place.

NOTE: The clamping nut locates into a slot in the side of the telescopic inner tube. If the clamping nut is slackened too much, it only takes ½ a turn to release, it can come out of the slot. If this happens just rotate the telescopic inner tube so that the slot is located under the clamping nut and re-tighten it.

The point is 9mm diameter with a tip angle of 60° (inclusive). While it is not sharp enough to be a danger it is sharp enough to make an indentation into wood by using the telescoping adjustment. If using harder stock drilling a small pilot hole in the centre of the stock may be required and may give more accurate positioning.

The rotary axis can be used without the tailstock to take longer stock if required, but deflection at the end of the unsupported stock could be a problem when machining. If shallow engraving around a solid cylinder it could be done. Using a Laser to engrave would not be a problem.

NOTE: At the moment it is all clean and shiny, but if you move the tailstock make sure the base of the housing and the bed plate is clean and free from dust and chips before re-mounting to ensure correct alignment!

Bed Plate

A solid aluminium plate 8mm thick, the dimensions and spacing of the mounting holes (in mm) are shown in the drawing.

The slotted holes are used to attach to the 4040 router bed holes with the rotational axis oriented along the X axis. The narrower spacing of the centre slots aligns with the central holes on the 4040 Bed.

The edge holes could be used on other routers or bed configurations but I haven’t checked what they would be compatible with.

Other parts


Length is 100cm, plenty long enough to mount the rotary axis anywhere on the 4040-PRO bed. A six-pin cable compatible with the 4040-PRO 4th axis port and obviously the Rotary axis. This is not a stepper motor cable to be connected directly to a stepper motor but specific to the 4040-PRO 4th axis port.

Mounting bolts

Mine was supplied with nine M6 x 16mm round head bolts. If you have a spoilboard fitted these are too short!

With a 6mm (1/4”) spoilboard fitted I used M6 x 25mm. If you use a thicker spoilboard you will need even longer bolts.

Please check the length of the bolts supplied, SainSmart are normally good at fixing things like this. And mine is a pre-release model.

Chuck Keys

They do the job perfectly.

Tools etc.

All needed Allen keys are included along with a user manual. The manual is OK and is being revised.

Mounting and Alignment of the Rotary axis

The centreline of the 4th axis needs to be parallel to the Z axis movement, so if you have not fitted and surfaced a spoilboard this is a good time to start. I am assuming here that the top of the bed/spoilboard is level with the movement of the Z axis. If you don’t have a surfaced bed/spoilboard you can add shims underneath the mounting holes and check the bedplate alignment with the router Z axis to make sure it is level.

Setting the Motor mounting height

Before fitting move the motor Z frame to its highest setting, this gives an extra 20mm of clearance below the spindle and means the frame will clear the top of the 4th axis.

At the low setting (left pic) the Z frame base won’t clear the top of the rotary axis, regardless of what motor you have, and a collision may occur.

Where to put it

The mounting slots are designed to fit the 4040-PRO bed holes with the rotary axis in the middle of the bed along the X axis, stepper to the left, closest to the control box. Place it in position and loosely tighten all 8 mounting bolts. Where you mount it on the Y axis, front, rear or somewhere in the middle is entirely up to you.

I mounted it at the front middle of the cutting area.

Aligning the rotary axis along the router X axis

The X axis alignment is fairly critical and needs to be done as accurately as possible so that the bit will follow the centre line of the rotary axis as it moves along the X axis.

To make life easier when aligning remove the tailstock and move the chuck jaws to the smallest position.

If you have a lever action dial gauge which can be placed in the motor mount that will be the most accurate method, but while I have a dial gauge it is not lever action so I am using a manual (paper) method, as I think most people will. This method is accurate, not quite as good as a dial gage but perfectly adequate.

The best place to measure the alignment is along the edge of the centre bar where the tailstock fits, this is the most accurately machined and as it is used to align the tailstock and motor housings along the rotary axis bedplate this position is ideal.

Place a bit long enough to reach the top of the rotary axis bed plate with the Z axis of the router jogged down. I used a standard 3.17mm flat end bit, but mount it upside down so the round smooth end is at the bottom, otherwise the flutes on the bit will give you variable readings. For safety I also disconnected the spindle motor.

Jog the bit over the rotary axis bedplate and then jog it down so it is nearly touching the top of the bedplate.

Oops! I have already raised the Z plate so a ‘standard’ length bit won’t reach the top of the bedplate, I was a few mm short! If this happens there are 3 possible solutions which can be used, together if needed:

  • Slide the bit down in the collet a little
  • Slide the motor down in its mounting a little.
  • Use a longer bit, if you have one a 3.175mm (1/8”) drill bit could be used in a standard collet.

The lowest the bit has to travel when rotary machining is normally to the centreline of the axis, the highest will be a maximum of 40mm above that. So, after positioning the bed, the motor can be moved to its normal position withing the housing.

Now position the bit so it is just touching the edge of the bedplate centre bar at the front right-hand side.

I use the paper method for accuracy, place a thin piece of paper between the bit and the edge so that while there is a little friction between bit and bed the paper can be moved. This is more accurate than estimating contact by eye, it allows you to sense that the pressure needed to move the paper is the same at each position, if just using direct contact then it is more difficult to determine exactly the point where contact is made as the bit can be deflected slightly.

Adjust the position of the baseplate (and/or the Y axis position of the router) so that the end of the bit is just touching the edge of the centre bar Tighten one of the end bolts a little to keep the baseplate in place while allowing just a little rotational movement.

Once a position at an end has been set do not adjust the Y axis at all. Now jog along the X Axis to the left end of the centre bar and move the bed plate to align that end. Once you are happy carefully tighten all the baseplate bolts, then recheck the alignment at both ends.

To make life easier for when I remove and replace the rotary 4th axis I have marked a line onto the spoilboard around the bed plate. This will make the process much easier when re-mounting it (until I re-surface or replace the spoilboard), the alignment will still need checking, but just checking!

Setup and Testing

I tested the rotary axis, just to make sure it works, the DIP switches are set correctly and the router control board is configured correctly.

Connect the rotary axis motor to the control board and Candle (or another Gcode sender) to the router via a USB cable. The offline controller cannot easily be used for this as it does not display the current coordinates in the Jog menu (V2.3) and will not display or change the Grbl settings. Any Offline controller must be disconnected when a USB cable is used.

Checking Grbl Settings

Controlling the 4th axis adds some extra parameters to the Gcode used for a full 4th axis operation. All this is based on the Grbl version used on my 4040 motherboard (Grbl for GD32 Version:GD32 V2.3).

NOTE: The firmware has been updated from when I first received it. The Offline controller makes updating the firmware version on the controller board easy and simple. This update has not changed any of the Grbl setting options or values.

I have been informed by SainSmart that a new update to the firmware is being developed but as yet there is no release date set as yet. This will primarily affect the offline controller but could make minor changes to Grbl on the 4040 Controller.

The 4th axis is controlled by the A axis in the Gcode, just as G1 X2 will move the X axis by 2mm G1 A2 will turn the rotary axis by 2 degrees. The position of the rotary axis is set in degrees, not mm as the descriptions suggest, mm makes no sense on a rotary axis.

Before using the rotary axis make sure the settings are correct in the 4040-PRO board.

Even though it does not support a 4th Axis Candle can be used for this. If you already have another Gcode Sender installed such as UGS then that can also be used, the process will be the same but the details will be different.

Display the Grbl settings by sending a $$ command to the router, this will display the current values of all the settings. To change a setting send $nnn=value command to the router where nnn is the setting number. All my default settings were correct but I did alter the $133 value but this is not really necessary.

The settings relevant to the rotary 4th axis are:

$103 (A axis pulse:step/deg)

The value MUST be 177.777

$113 (A axis Max rate:deg/min)

While there are a range of possible values the suggested, and default, value is 1000

To determine the maximum value will require extensive testing which I am not doing at the moment.

$123 (A axis acceleration:deg/s^2)

While there are a range of possible values the suggested, and default, value is 20

To determine the maximum value will require extensive testing which I am not doing at the moment.

$133 (A axis max travel:deg)

The axis will continuously rotate but the position is recorded, if you rotate by 100 revolutions in one direction (36,000°) there is still a zero position held.

The default setting is 9999, my suggested value is 360000 which is 1,000 revolutions.

There is really no practical limit, it will just keep on rotating. Grbl does have a limit on the size of the numbers it can handle though, this is well within that. This value is not significant unless soft limits are turned on!

Testing Rotation and direction

Clockwise and anti-clockwise are defined when looking into the face of the chuck!

While I am just testing, not calibrating, I built my (non-patented) rotation marker from a piece of cardboard between two washers and a nut and bolt from my spares box. But this should allow me to set a fairly accurate rotational position, using an edge on the centre block is ideal!

If you are just checking yours noting the position of the chuck jaws is quite sufficient.

Direction tests

Note the position of the rotary axis then send G92 A0 to the router to set the zero position of the rotary axis.

Send G91 G0 A90 to the router, the rotary axis should turn 90 degrees clockwise. The G91 says movement values are relative to the current position, G90 would use absolute values from the origin.

Send G0 A-90 to the router, the rotary axis should turn 90 degrees anti-clockwise rotation returning to the start position. No problems were encountered.


I set the starting position then sent a G0 A36000 command, this will rotate the axis by 100 full turns, the end position should be the same as the start position. (This takes a while!)

At the end I couldn’t tell the difference between the positions (the end of the pointer relative to the bedplate) not bad after 36,000°. Any visual difference is more to do with my lack of photography skills than the position. Definitely mine passed!

You can do a test with fewer revolutions (G0 A720 will just make 2 revolutions which is much quicker) which will show any obvious errors. You don’t even have to make the pointer, just look at the alignment of the chuck jaws relative to the Baseplate at the start and end positions.

If the end point is not as expected then check the DIP switch settings on the stepper motor and the Grbl $103 setting.


This is not really part of the review but you will need CAM software which supports a rotary A axis.

Before this was released for the 4040-PRO the use of a rotary axis was primarily the domain of people who built their own machines and those adding one as a substitute for the Y axis. So the software for ‘hobby’ machines like the 4040 tends to be either limited or expensive, but there are reasonable choices available.


There are a number of options available all of which have differing costs and features.

  • Fusion 360,but not the free hobby version.
  • Carveco Maker
  • Vectric Vcarve
  • DeskProto
  • Lightburn

To name just a few, some of these allow wrapping of a carve around a cylinder, some support full 4th axis operation.

My currently preferred option is DeskProto, unfortunately not free, but there is a free trial, though it has a reasonably priced perpetual Hobby licence and offers full 4th axis support. There are a number of versions available, you will need the Multi-axis edition. (My licence was provided by DeskProto for evaluation, basically this just removes a watermark from the trial version).

GCode Sender

For the Gcode sender there are a number of options

Offline Controller for the 4040 PRO

My preferred option, it supports the 4040 and a rotary 4th axis, but like all ofline controllers there are some features such as viewing Grbl settings and changing them which are not supported. I have written a separate review of the offline controller, see the files section of the Facebook group  SainSmart Genmitsu CNC Users Group for this.


Does not really support the 4th axis but still simple and useful for viewing and changing settings and manual commands.


Has full 4th axis support but is a little more complex than Candle for the Grbl Settings.


Plenty out there which I have not tried with the rotary axis.

Does it work?

My test project, a very simple uniform curved shape, a small drawer knob! Fusion 360 was used to create the .stl model which was then imported into DeskProto.

The router I am using is a standard 4040-PRO with the supplied 775 motor as it came out of the box. The only modifications are a spoilboard, surfaced, engraved and trammed and the dust baffles.


In DeskProto I have created the machine definition for the 4040-PRO with the rotary axis and bit definitions for the SainSmart 70SF17 3.175mm flat end and SainSmart 70SB17 3.175mm ballnose bits used, the flat end for roughing and the ballnose for finishing.

Machined out of an 18mm wooden dowel 100mm long, although only the end 38mm will be used, (make sure you leave enough clearance to avoid attempting to machine the tailstock and chuck jaws!). Metals and other materials may come later, but not now, I am learning how to use this and wood is cheaper and easier.

The alignment onto the stock is X0 at the left of the job, Y0 and Z0 along the centreline of rotation and for A0 I don’t care as it is machined out of a cylinder.

For roughing I am using a 1mm stepdown between passes and a 1.27mm stepover. For finishing a 0.19mm stepover, only 1 pass.

DeskProto will split the gcode files when a tool change is made, so there are two Gcode files created.

The roughing toolpath is shown on the left, finishing on the right.

All setup and machining operations were performed using the Offline Controller (although I have created some macro type .nc files to make setting the zero points on the Y and Z axes much easier, these will be described in the getting started guide).

Progress and results:

How to Z probe on top of the motor housing is in my Getting Started guide.

I am very pleased with the result, it feels smooth to the touch and came out as I wanted, in the pictures I have just roughly cut it off the stock.

No sandpaper or files have been harmed in the making of this drawer knob! Yet! A little will be needed to completely trim off the supports.

Unfortunately, one bit is no longer with us. I will remember in future that although the path from my probing location back to the stock would pass between the chuck jaws, they also rotate! Safe height and position have now been adjusted in my ‘macros’.


Feature Description
Type Rotary 4th Axis.
Overall size 300 x 125 x 86mm (14.96 x 4.92 x 3.39”)
Chuck K2-50 4 jaw with reversible jaws.
Chuck capacity 2 to 53mm (0.08 to ??”) diameter cylinder.
Maximum Stock ‘Diameter’ 80mm (3.937”) Note 40mm is the distance from the stock centreline to the base of the axis.
Maximum Stock length 124mm (4.88”) with Tailstock.
214mm+ (8.42”) without Tailstock
NOTE Length includes 14mm which will be in the chuck jaws!
Tailstock fine Adjustment 33mm (”)
Tailstock positioning 5 positions, spaced by 20mm.
Motor Nema 17 stepper with a 10:1 planetary geared reduction.
Rotational precision 0.1°
Maximum rotation rate 300°/sec
Weight 2.35kg (5.18lbs)
Connecting cable 6 Pin to Motor Driver, 100cm (40“)
Construction All aluminium and stainless steel.
Tools All needed Allen keys and chuck keys.


What I like the most

  • Easy to use, this is my first time using a 4


  • Simple mounting to and full compatibility with the 4040-PRO.

  • It’s a full fourth axis, not just a rotary extension of the Y axis.

  • Well designed.

  • Solid and accurate construction.

  • Takes a wide range of stock sizes.

  • Tailstock is easily adjustable and provides good support.

  • Works very well with the Offline controller.

  • Fully assembled.

  • Well priced (at the time of writing, May 2023 its £205).

  • Produces good results.

What I don’t like

I had to think long and hard about this.

  • On my pre-release model the mounting bolts were too short to use with my spoilboard.

My Overall Rating

Definitely a 4.99 star rating. The mounting bolts are the only negative and nothing is ever perfect!


I am currently producing a Getting Started guide which will have more details on how to set it up, tips for simplifying setting the axes zero points and use it with a step by step through this sample project, and perhaps some more, but this is a review.

This should be available shortly and will be posted in the files section of the Facebook SainSmart Genmistsu CNC Users Group


4th axis tutorial


Older Post Newer Post


Leave a comment

Please note, comments must be approved before they are published