3D printing
K40 Laser Cutter Rebuild (12x24in)

K40 Laser Cutter Rebuild (12x24in)


If you are reading this post, you most likely already know about the cheap 40 Watt CO2 Lasers available from China which are commonly referred to as K40s. There are several sub variants of the K40 but generally they are in a white and blue or red steel case and have a cutting area of 12 x 8 in (500 x 300mm).  The original Chinese manufactures state they are for making stamps and as such will come with a very weird set of features and mechanics that are “optimized” (Very generous term) for this function.

Quick Reference Links

The stock machine is capable of basic laser operations at reasonable speeds but has been ham strung by the use of a proprietary controller board, called a Moshi Board. This board communicates with a computer running Corel Draw. Most of the time, when you purchase a K40, it will come with an illegal copy (Trial Copy maybe) of Corel draw. I personally don’t like this as a permanent solution, so I choose right out of the gate to replace the electronics with a more legit, and open hardware/software solution.  I knew I would do that before even purchasing the machine.  If you are interested in just upgrading the electronics, this guide will cover some of that as well.  Even with the reworked electronics, I quickly became tired of the “sub-par” mechanics. My machine would bind and move unreliably.  After some tinkering, I decided finally to just rip the old mechanics out. Being committed to gutting the cutter, I decided to see just how big of a cutting area I could get. Please take note that I have included the STP (Generated in Fusion 360) file on Thingiverse, please use this for reference as this guide, being done from memory, may miss a few items.



Get The Files

Most of the parts required for this conversion will be 3D printed.  The rest can be ordered through amazon, or Openbuilds.com.  Links to many of the items used can be found below in the Bill of Materials.

The 3D printed parts are available over on thingiverse at: https://www.thingiverse.com/thing:3401855. I printed everything out of PETG at a 0.2mm layer height on an Ender 3.

The Tear Down

To start, we will need to empty the case of everything.

Proceed at your own risk as we are dealing with high voltage, cutting and Lasers

  • Start by FIRST taking a picture of your wiring. That way, you will have a reference of how things were before you/we broke it.  Don’t stress, there is also a wiring diagram below.  However, there is a chance your power supply (PSU) is different, so please make sure it looks the same before using my work as an example.

  • Make sure the Mains power is disconnected and let the power supply sit over night (Just to be safe)
  • I would recommend you unscrew all of the wires and remove all of the switches, gauges, and everything else from the right hand side of the machine first.
    • If your machine is like mine, you will have a RED wire going from the PSU (Blue power supply) through the case to the back of the laser. You can follow the instructions online for changing the laser tube to learn how to disconnect this wire, or you can be lazy like I was and just cut the wire half way between the PSU and the Laser Tube. This wire appears thick on the outside but is actually very thin on the inside. It appears to have a LOT of insulation. Keep that in mind when splicing it back together. I wrapped mine with ample electrical tape.
  • Next, the two lids (Doors) can be removed. Raise them up and you will find a spring loaded pin on one side of each lid, pull the pin back and the lids should just come right off.
  • Disassemble / remove the X-Y mechanism. The whole unit will come out as one piece.
  • The center divider as well as the front support “shelf” will need to be cut out. Use a grinder or rotary tool to cut the tac welds. I was able to cut several of the welds and those I couldn’t reach I was able to bend the metal back and forth until they snapped.
  •      I used an orbital sander to knock the metal burs down and get the bottom of the case smooth.

Preparation for new Install

I masked everything off on the case that I didn’t want to be painted. Then, I gave the interior of the case a good coat of self-etching primer

  • The bottom of the case is not actually super flat, nor rigid. Not to mention the two large holes that the manufacture thought were a create idea to add to the bottom of a laser.
    • To solve this problem, I cut a piece of 1/2in MDF (Any 1/2in sheet good will do) to 29.75in x 18.5in.
    • I cut a thin piece of aluminum sheet (Purchased at local Home Improvement Store) to the same dimensions.

I then laminated the aluminum sheet to the piece of MDF

  • Taking both the primed case and the laminated board outside, I applied several layers of Rustoleum Flat White
  • Before placing the laminated board into the case, I added the two horizontal pieces of 2020 V slot. Two pieces, both 29.75in long were attached to the board, one along the front edge and the other along the back. I attached these to the board by drilling and countersinking 4 holes along the front and 4 along the back from the bottom of the board. The V Slot was then attached using M5 screws and T nuts:

  • Place the Board inside the case, but do not secure it. We will do that later, once everything else is installed.  Things will be tight and you want the flexibility for now.

Installing the Y Axis

  • Start by assembling the Left Y Axis. Cut two lengths of 2040 V slot to fit (Mine were 17.75in each). All of the screws used were M5. I used full size V bearings with eccentric bushings for the top two bearings and fixed spacers for the bottom two.
  • Then Assemble the right Y Axis:
  • Place the Left and Right assemblies into the case, lining the brackets up with the front and rear 2020. Install the M5 bolts with T nuts into the brackets, but leave them loose in the V slot for now as you will want to be able to move the assembly in the next step.
  • The left and right y carriages are driven by a single motor. They are connected in the back with a piece of 5/16 in threaded rod. Install the Motor to shaft coupler on the left side of the screw. Then Cut the screw to a length that is long enough to get through the bearing mount on the right carriage assembly, but not so long that you can’t get it installed with the amount of play you have available. Mine ended up just under 28in. You will want to also install the right pulley as well.
  • Now is a good time to attach the belts on the left and right carriage. Reference the photo below for how I did it. I zip tied the belt to one of the M5 bolts on the carriage, then routed it around the pulley and then the idler before I zip tied the other end to the other bolt. (HINT: Loosen the pulley a little before routing the belt, then after the belt is secure, add tension by pulling the pulley back into position and securing.)

Installing Lighting

  • Okay, it is a little out of order, but I felt I needed more light while working. I picked up an RGB LED strip kit from a clearance isle but you can get them from Amazon Pretty Easily. I wrapped it along the top inner lip. It was super easy, super cheap and made a great addition. The one I got was USB powered.

Installing the X Axis

  • Cut a piece of 2040 V Slot to length (Mine was 29.3in)
  • Assemble the X Carriage using 3 Large V Bearings with an eccentric spacer on the rear bearing. Slide it onto the rail.
  • Attach the Motor Mount, with stepper motor and the pulley.
  • Attach the mirror mount
  • Attach the end stop (M3 screws)
  • Attach the Mirror Holder (Stock from K40)
  • Route and attach the belt in the same way as the y carriage assembly, loosening the pulley during routing and then tensioning the belt by pulling the pulley back into position.
  • The astute observer may have now noticed that the X Carriage laser head is not stock. I picked this one up off amazon for cheap. It is solid aluminum with an adjustable height lenses and air assist assembly. This allows for adjustment up to 10 mm in height which will allow me to have a static cutting bed that does not need to adjust up and down. The build quality of this part is not the best, but the adjustability was worth the trouble.
  • Take the X Axis assembly and place it into the case. Attach it to the Y carriages with M5 screws.

The Bed

  • I thought about how to build the cutting bed for a long time. The first iteration used a metal grate bought at the local hardware store. This worked fine, but left burn marks where ever the laser cut through and hit the grill. Professional machines use aluminum honeycomb, so I went looking for that. I found a reasonable price on Amazon and picked up a 12x24x1in piece. When I got it, I was surprised that, although 1in thick, it was still a little bit flexible… I would have to support it on all sides…

A little bit of time later, I came up with the following:

  • Four lengths of 1in aluminum angle iron.
    • 2 x 22.9 in
    • 2 x 18 in with a 45 deg cut off one end
  • I 3D printed the corner pieces, used them as a guide for drilling the mounting holes into the aluminum, then tapped the aluminum. I then used (Don’t be mad, its what I had) #4-40 x 0.25in screws to secure through the plastic and into the aluminum. You could just as well use M3 or M2.5 screws.
  • The whole assembly slides into the case and secures in the front with M5 bolts. The back is left floating, resting on the rear 2020 V slot.

Secure the Assembly

This is not a long section, but it is important.  Now would be a good time to secure the whole assembly in the case.  I found sliding the assembly all of the way forward worked well.  I then slide it as far left as I could, leaving about 1/4in clearance between the outer wall of the case and the X axis motor.  Run the head around a bit by hand and evaluate that it makes since in that location.  When I was happy I used self tapping screws to come up from below through the bottom of the case, into the 1/2in sheet of MDF.  This is also why you will see me assembling the unit on saw horses, I anticipated the need to work from below.


  • I reinstalled the lids and bolted the two halves together, using an existing hole in the middle of the two halves.
  • Then, I used some of the left over aluminum sheet from the bed and taped it in place with Aluminum Tape over the now exposed holes in the lid.


  • I was putting this off. The first thing you may notice in the images above is that there is no longer any room for the electronics inside of the case. Luckily, I had a salvaged case that worked perfectly for my needs. I’m sorry I don’t have a source for this part, it literally was pulled from a trash bin. You can see it mounted to the right side of my machine immediately above.
  • First, I made a new face plate for the case. This face plate had an Amp meter, a Main Power and a Laser Power Switch. I cut this from sheet plastic by hand.  The switches were salvaged from the original unit.  The AMP meter was purchased from here: “Uxcell a11052500ux0047 0-20mA Analog DC Current Panel Meter Ammeter 85C1-A”
  • Then, in the upper right corner of the case I drilled a 1in hole into the Laser Tube area. This hole served to route the laser power wires. I also drilled a hole in the lower right corner to route the motor and end stop wires.
  • I then secured the PSU (I removed the blue film from the PSU, so now it is silver) and the Arduino Uno with GRBL shield.
  • I then wired it as follows (A big thank you to http://donsthings.blogspot.com who has done a lot of research on these units and from which I based much of my work)

Wiring Diagram

GRBL Shield

  • In the above it is worth pointing out again the PWM signal. Using GRBL 1.1 the PWM signal was present on the End Stop -Z pin, not the Spindle Direction or Spindle Enable. I should also not that I tied the Laser Fire pin straight to ground to reduce the number of connections and complexity. I have not had an issue with this setup, but use at your own risk. I keep the laser switch off until just before I run a program. I also always turn the laser switch off before opening the lid. A recommended upgrade would be to place in series another switch to detect if the lid is open. I have opted to delay that upgrade.
  • The end stops and motors were then wired as the GRBL shield was marked.
  • You will also need to install stepper motor drivers in the X and Y axis and tune them accordingly. I leave those details to other sources that have covered it much better than I will.

Software and Firmware

GRBL (I don’t know what it stands for) is open source firmware for Arduinos to control a CNC via a serial port. Head over to: https://github.com/gnea/grbl to download the most recent version. On there site you will also find a wealth of information on how to configure it and get it up and running. Newer versions even have a dedicated Laser mode!!! GRBL will be installed on an Arduino Uno, then the GRBL Shield will be placed on top of the Arduino to make interfacing easier.  Any G Code sender Software can be used to drive GRBL, but my two favorites are:

  1. Cncjs
  2. LaserWeb

Coming from using MARLIN and other 3D printer firmware, configuring GRBL was a refreshing experience.  Most configuration for Marlin requires you to edit the source files.  GRBL doesn’t really require this step for most 3 axis setups.  I downloaded GRBL 1.1 and scanned the config.h file.  In the end I only made one change to the file before uploading it.

I modified the homing cycles since my machine only has an x and y axis:

  // REQUIRED: First move Z to clear workspace

#define HOMING_CYCLE_0 (1<<Z_AXIS)

#define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS))  

To: #define HOMING_CYCLE_0 ((1<<X_AXIS)|(1<<Y_AXIS)) //#define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS))

Honestly though, this step didn’t seem to make much of a difference.

I uploaded the firmware via the Arduino editor and the instruction on the GRBL wiki. Then, using the Arduino Serial Monitor, I entered the following settings.

Step pulse, microseconds$010
Step idle delay, milliseconds$1255
Step port invert, mask$20
Direction port invert, mask$30
Step enable invert, boolean$40
Limit pins invert, boolean$50
Probe pin invert, boolean$60
Status report, mask$1016
Junction deviation, mm$110.010
Arc tolerance, mm$120.002
Report inches, boolean$130
Soft limits, boolean$200
Hard limits, boolean$210
Homing cycle, boolean$221
Homing dir invert, mask$233
Homing feed, mm/min$24100.000
Homing seek, mm/min$25750.000
Homing debounce, milliseconds$26100
Homing pull-off, mm$271.000
Max spindle speed, RPM$301000
Min spindle speed, RPM$310
Laser mode, boolean$321
X steps/mm$10080.000
Y steps/mm$10180.000
Z steps/mm$10234.000
X Max rate, mm/min$1101500.000
Y Max rate, mm/min$1111500.000
Z Max rate, mm/min$112300.000
X Acceleration, mm/sec^2$120300.000
Y Acceleration, mm/sec^2$121300.000
Z Acceleration, mm/sec^2$12210.000
X Max travel, mm$130609.000
Y Max travel, mm$131304.000
Z Max travel, mm$132300.000

I entered each one by typing the Setting number “$0=” followed by the desired value.  You can then verify that the values have been entered by typing “$$”, which lists all of the configuration values.  For more details, head over to the GRBL wiki.

Bill of Materials

The following is as complete a Bill of Materials (BOM) as I can generate. My build was completed with mostly items I had on hand from other projects and I spent a total of $5 in new hardware. Please also note, most of my links are to amazon products. I do most of my shopping there, so most of the items are found through my order history, but I also, by you using the links, receive a small cut that helps me keep my site active. If you decide not to purchase through these links, please consider donating the cost of a coffee so I can keep this site active and growing.

Electronics BOM 2

Item Description Qty
Endstop Mechanical Limit Switches 2 needed
3-Pin Extension Cables 1
Nema 17 Stepper Motor 2
Analog DC Current Panel Meter 1

Mechanical BOM

Item Description Qty
Air Pump 1
Aluminum Honeycomb Grid Core 1
Metric Button Head Socket Cap Screws 1
Aluminum Extrusions Slim T-Nut M5 1
OpenBuilds V-Slot Linear Rail (20mm x 20mm) (Silver, 1500mm) 1
Big V Wheels 9 of 10 Needed
Co2 Laser Head Mounts Mirrors Lens Integrative for Engraver Cutter K40 1
Blower 12V 130 CFM
5 Meters GT2 Timing Belt Width 6mm 1
20Teeth 3mm Bore Aluminum Timing Belt Idler Pulley 3 of 5 Needed