New MPCNC Primo build in California (with some questions)

Finally made some progress on my MPCNC!
I’m embarrassed to say that I printed about 90% of the Burly a couple years ago and kept delaying the project. When the Primo released, I again took my time. :sweat_smile:

While I’m waiting to build my table, I decided to just dive in and start on a couple of sawhorses, aluminum plate (temporary support), and MDF.

I had some issues getting everything square but I had help from some people over on the unofficial prusa3d #cnc Discord channel.

Some questions:

  1. How to check if my MPCNC is square after everything is assembled? Should I have it draw a square at the full length/width of my cutting area and then check the measurements?

  2. Got Repetier-Host working on my Mac by setting 250000 baud rate, but I’m having issues running the gcode that I create in Estlcam. When I run it I get the error ‘Unknown command: “M3 S24000”’. If I comment out this line I have another error having to do with M140. Wasn’t really sure how to proceed so I just used Ryan’s 12mm/s crown test gcode.

  3. Still need to order endstop wiring kit (extension cables) but I’ve been playing around with that in the firmware. Perhaps I need to so some more reading, but how do I set the endstop stop blocks on my tubes? All I did was offset each stop block 50mm from the corner of each truck. Is that wrong?

  4. Wire darryl: what the heck is it for? Only for setting the pulley position?

  5. (EDIT) I noticed that two of the rollers on my front truck along the X axis do not make good contact. I’ve circled the problematic ones in red in the following photo. Seems like they only make contact in a small area near the middle. Is this common or is there something I should do to fix it?

Here’s my result after running Ryan’s crown test with a ball point pen. TWICE!
The lines almost perfectly overlap!

Some more pictures:

MPCNC/printer specifics for anyone wondering:

  • 24" x 24" x 3.25" workspace
  • Stainless steel 1" OD x 0.065" wall
  • Hatchbox PLA - black
  • TECBEARS PLA - gray
  • Prusa MK3S+ with 0.6mm nozzle
  • 0.3mm layer height with 3 perimeters, 4 top, 4 bottom
  • 45% rectilinear for most parts and 70%/30/70% variable infill for the core
  • First layer temp: 215 deg nozzle, 65 deg bed
  • Other layers: 210 deg nozzle, 65 deg bed

First make sure the machine itself is square. Measuring the legs across the diagonals as per the instructions is the best way. These diagonal measurements magnify any errors, so getting them as close as possible is best.

Squaring the gantry at home position is next. With the dual endstops, you start with a tape measure and make sure that the distance from stop to end is as close as possible. Without, you can still use the stops the same way, just without the switches. From there, drawing a square isn’t a bad idea, but you really want it as large as you can get it. Again measuring the diagonals is the easiest way to check how square (or rectangular is ok) it is. If the diagonal measurements match, it will be good.

1 Like

Diagonal measurement of the inside of the legs is fine?
I’m measuring 43-5/8" for both of them…one might be 1/32" smaller; it’s really hard to say.


  1. Yep. That is a good test. Before all the dual endstop stuff (and still some of us), we just hold the gantry up against some clamps or something when we engage the motors. Then you have a repeatable procedure to make it square. Checking it by making some corner marks (the whole rectangle isn’t needed) is useful, but only after you have something repeatable.
  2. M3 is enable spindle and probably comes from estlcam. M140 is bed heat or something. That may be coming from repetier host, but it shouldn’t be there. The M3 shouldn’t hurt anything.

I am not sure I can answer the rest. I haven’t built the primo myself.

1 Like

I set my stop blocks set so that the switch is triggered just before the truck hits its minimum position…and obviously the same distance on each end of each axis. Doing it this way maximized the working area, and also provides some protection for the switches if a mistake is made and your machine goes to a negative machine coordinate.

1 Like

The problem is that with these errors it stops the program so it doesn’t even draw the crown.

Thanks! 50mm on my Primo is just about touching the truck so I guess that’s a good place for the endstops to be.

Something else must be going on. It should just ignore the m3 command.

Can you paste the first few dozen lines of your gcode?

Can you also paste the log?

I have a crazy guess, which is a common problem, that you have the wrong units set in the gcode file. It should say stuff like F600 for 600mm/min, or 10mm/s. I am guessing there is something like F10, which would look like it is paused.

1 Like

For dialing the trucks and the core in I found the best way was to set my end stops such that the auto squaring got it perfect (measuring from the side tube to the appropriate gantry) and then adjust the trucks/core until the bearings could all be manually spun with a bit of drag on them. Worked out well for me at least.

1 Like

OK, here is the beginning of my gcode:

Code (dropdown)

;Project 0102
;Created by Estlcam version 11 build 11.239
;Machining time about 00:02:12 hours

M03 S24000
G00 X0.0000 Y0.0000 Z0.0000 F2100
G00 Z2.0000 F480

;No. 1: Engraving 2
G00 X54.8480 Y5.4899 F2100
G00 Z0.5000 F480
G01 Z0.0000 F180 S24000
G03 X55.8466 Y5.4356 Z-0.5000 I23.3742 J420.6560 F180
G02 X54.8480 Y5.4899 Z-1.0000 I22.3757 J420.7103 F180
G03 X101.5965 I23.3742 J420.6560 F900
G03 X116.8745 Y6.8799 I-12.1547 J218.2518 F900
G03 X126.7075 Y8.6745 I-9.7383 J81.1962 F900
G03 X130.5136 Y9.9236 I-6.4385 J26.0404 F900
G03 X132.3863 Y10.9608 I-3.1982 J7.9842 F900
G03 X133.5543 Y12.3749 I-2.9148 J3.5967 F900
G03 X133.7925 Y13.4920 I-2.4274 J1.1017 F900
G02 X137.1356 Y25.5852 I59.3497 J-9.8981 F900

If I comment out the 5th line and clear the log before running the job, I no longer get ‘Unknown command: “M3 S24000”’ obviously. However nothing new appears in the log.
The machine just does a travel move that appears to be at “normal” speed and then stops.

The S24000 shouldn’t be there. The rest looks ok.

There is no G92 at the beginning. So I assume you are resetting or forcing the zero before you start this?

Yes I’m just manually homing X and Y or just setting home at some random location.
This is what happens when I click run:

I just let it sit for 10 minutes but there is still nothing in the log. Repetier thinks the job is running and the 2m:07s ETA doesn’t change at all. :man_shrugging:

Try removing the S24000. Is that in there again?

It was in there but commented out. Now I’ve completely deleted the both instances of it and for whatever reason I’m now getting something in the log:

5:10:40 PM: N80 G90 *8
5:10:40 PM: N81 G0 X0.00 Y0.00 Z0.000 F2100.000 *30
5:10:40 PM: N82 G0 Z2.000 F480.000 *33
5:10:40 PM: N83 G0 X54.85 Y5.49 F2100.000 *124
5:10:40 PM: N84 G0 Z0.500 F480.000 *32
5:10:40 PM: N85 G1 Z0.000 F180.000 *32

The Nxx and *xx are line numbers and checksums. They get added im to prevent noise from getting in the way so the firmware can validate the commands. The part in between are the actual gcode commands

1 Like

Thanks for that info, I didn’t know that.
Any indication what is holding up the machine? Would it help if I posted screenshots of my Estlcam/Repetier settings or is this something that can be figured out if I post the entire GCODE?

Sorry, I don’t have any experience with editing gcode manually…just taking what my 3D printer slicer outputs :expressionless:

Sorry to make another post so quickly, but the fix is to DISABLE “Use arc commands G02 / G03…” in Estlcam Setup → CNC Programs

Somehow I missed Ryan’s third comment in the EstlCam Basics mentioning this. I was just going off the settings I saw in the screenshot, and someone on Discord pointed it out to me :slight_smile:

Sorry to waste your time troubleshooting my bad configuration.

That still doesn’t really make sense to me. I’m glad it’s working for you. But I still can’t explain it.

1 Like

I’m going to setup some drag chains, but I have a question.

I read all over that you should not mount anything to the Z-axis, especially if you want to try machining aluminum. There is a nice drag chain mount that I found here but is that not recommended?
If not, what are other options for mounting?

Generally the recommendation is to connect to the core rather than to the Z tubes as connections to Z tend to apply forces that negatively impact the tool’s alignment to the work.