Current zeroing procedure, proper procedure and questions...

So after using the lowrider pretty intensively over the past 2 weeks I developed my own routine. I’m not sure it’s right but it works, but it could probably be better.

I have 4 x 1/2" shims that put next to the Z-rods to hold them up so the router bit doesn’t hit my spoiler board when I power down the unit and so it’s level in all 4 corners.

To start a job I power the unit on, raise the Z axis above my work material. I have the X axis start configured to 10 mm from my work material. (so home in CamBam (for Linux) is -10,0) so it’s not sitting over it, just next to it. The CNC is smart about the fact that my Z position is already where I told it to lift to in CamBam so lining up my work is pretty easy for my 1st print. For my 2nd print I have to manually bring the CNC back to 0,0,0 using the knob. Is there some post processing code that would do that automatically?

I should mention that for my first 2 week learning curve I’ve been mostly limiting my jobs to a single piece or just a few simple pieces. I’d hate to screw up a whole sheet. So this technique worked pretty well as it allowed me to position smaller pieces, including scraps just big enough, right at where the CNC would start.

Another question: there were occasions where it would have been great to set the CNC to a new zero location. Say I had a small piece that was easier to clamp closer to the edge of the table so having a lower (or higher) Y home would have been helpful. Is there a way to do this?

Also, is there a way to have the Home functions simply return the CNC to it’s 0 positions? I get the impression that like my 3D printer the Marlin software is expecting input from endstops. Even if I could add some post-processing code to return it to 0 after the job I’d still like to be able to do this manually since I might abort a job and then want to get back to home.

Any feedback and help would be much appreciated!

I’m loving this machine by the way. It’s cutting great despite my plates being all hand cut. So well that I’ve been delaying machining replacements since I’d have to take much of it apart. I’m about to order a nice stack of Ultralight MDF, going to cover my entire table (just using a small spoiler board right now for my so far small jobs), surface the top of it and maybe hook a vacuum to it to see how well that works vs. clamping. I’m really getting into it and thinking of more projects all the time.

Thank you!

There should be an ending gcode section, you can add G91 X0 Y0 Z0, or something like end at origin.


I pretty much start all my cuts manually, starting at 0,0,0 after positioning the machine there with the LCD.


You can add a custom menu item in the firmware. Pretty easy, use the gcode above.

So glad to hear it!

1 Like

I can’t speak directly to the Lowrider (yet ; ) but I’l try to help a bit. I know others will fill in my blanks.

Do you run direct to the machine or use an SD card? I know if you’re using an SD card you can just add a final line to the gcode to return to 0,0,0. Just open it up in a text editor and you’ll quickly see how you can do that. I also know ESTLCam allows you to add code that adds itself to the start of all your files and to the end. Can you do that in CamBam?

As for starting points. On my MPCNCs 0,0,0 is wherever the gantry and z-axis happen to be the moment I start running a file. So if I want my Z-0 to be the material surface I make sure that’s where the cutter is sitting when I start a print. I actually use the LCD to move any axis I don’t want to “jump” when the Dewalt is turned on before I start. As soon as the machine moves a stepper, zero has been set on that axis. Quite often that’s the Z axis for me. Since the cutter is sitting on the work surface I raise it a few mm with the LCD to engage the stepper and “lock in” the zero. Then I can turn on the Dewalt and it’ll stay put.

Because of this if I have like a 3X3 part that I need cut I can park the tool right in the right spot on any of my scrap pieces of ply even if it’s way off in the far right corner. I don’t toss much junk wood in the fire pit. I sneak bits in everywhere I can.

I suspect the Lowrider works much the same in this regard but again, don’t know for certain.

1 Like

A) I “talk” too much


B) Ryan types faster than me ; )

G91 sets relative positioning. I think you want absolute, and then a G0

G0 X0 Y0
G0 Z0

The Z can be tricky though. You don’t want to cut your work accidentally.

This is not standard. Kelly probably has G92 X0 Y0 Z0 at the starting gcode. G92 forces the coordinates for the current position. The origin is usually where the machine is turned on.

You could use G92 X10 Y0 Z0 at the spot you wanted to be the corner and it will move the zero 10mm to the left.

Personally, I use a computer to jog and send commands. I often reset just the X, Y or Z independently. Especially the Z. I usually use the center of the work to measure Z. I know I am weird though.

You can add custom gcode to the lcd menu in the firmware. You can also make files on the sd card. Or you can hook up a raspberry pi and use my v1pi image to control it and add in buttons for common things.

1 Like

This is all great information, thanks Ryan, Kelly and Jeff.

Jeff, great point about the Z axis home. I’ve been leaving it above the work piece so I really only want to bring the X and Y back to 0.

The one question that didn’t see answered probably because I didn’t ask it clearly is: can I reset the origin without having to turn the machine off? Anyone know the answer to that?

Also, I’d love to remove the homing options from the firmware or change them to just use the G0 commands since I am always accidentally hitting them which overruns my axes and freezes Marlin.

Ryan, I have a Pi ready to go so I can remotely monitor the CNC via camera and on my 3D printer I use Octoprint. I didn’t know about your v1pi until now! Looks great:

Hopefully the “motion” capture software will work on it. I’ll try this today. Thanks!

OK, last thing. What are people’s thoughts on a Z axis pressure sensor thing (I’ve seen them used in YouTube videos) and for that matter end-stops in general? Should I add them rather than modify the Marlin software?

Thank you all for the quick and informative replies!

Yep. G92 does this.

The glib answer: it’s open source, you can make it do whatever you want. I don’t think there is a normal configuration option for this. There probably is a songle line to change, but I am pretty sure it’s not in Configuration.h.

Thanks, that’s me. It’s called v1pi, but not owned ny Ryan. If you start using that, look at the macros or find a plugin for octoprint. That would be the easiest way to make your home functions do what you want.

It does, but the camera url needs a slight change. I don’t remember what it was, but it’s in the docs, I think.

Z probing is pretty simple, you attach a wire to the bit and the zmin pin. Then you attach a wire to something flat and metal and the ground on your marlin controller. When you home Z, the bit touches the metal and it closes thw circuit. You need to then remove the offset from the thickness of the plate.

Single endstops on X and Y don’t make sense on a cnc machine. The zero is where the work is, not where the machine is. Dual endstops is different. They are used one for each motor, with dual drivers so each motor can be driven independently. When you home each motor moves until it reaches it’s own endstop, which squares up the axis. Either do dual or none and the larger the build the easier it is to square without dual endstops. Thats primarily why I dont think dual endstops on the LR make sense. Also, get pretty experienced before tackling dual endstops.

1 Like

v1pi thread:

Don’t leave your machine unattended. These will catch fire faster than a 3D printer. /psa

1 Like

Sorry, I typed the wrong name! I was thinning of you but my fingers typed “Ryan”! Getting old…

Thank you! Now I’m ready to roll. That sounds like a great idea rather than modifying Marlin. I’d much rather control the CNC from a computer than the little knob anyway. I’ve made a ton of mistakes with it due to a slight turn-click when I just wanted a click!

The information on the Z probing is great. I’ll have to consider that. I see what you mean about the end stops. Now that I have a plan to reset the origin and your v1pi I think I’ll be all set. I’m looking forward to getting this all running.

Thank you very much!

1 Like

Regarding unattended: I already got into a smokey situation when my holding tabs were too shallow and got cut free but I was right there. I suppose you’re right since it only takes a moment for something to go wrong. I was in 3D printer mode so I hadn’t really thought it through.

I guess I’ll have to make my garage a bit more comfortable. :slight_smile:

Thanks for the sobering warning.

Yeah. I really like the knob from prusa, which I have in my LCD screen case here:

It’s just easier to turn or click.

1 Like

That’s cool! Interesting solution!


I’m giving your v1pi and CNCjs a try. I noticed some things and am wondering if I’m doing it wrong.

In the Connection area I chose Marlin, 250000 baud and “Enable HW flow control” and everything looked good, it connected and some apparently state information came back.

Then using the Axes area of CNCjs I tried to manually control the axes, starting with Z (to get it above my material) I pressed Z+ with the default of “G21 (mm)”. This acted as if it was moving the Z axis 1 inch very quickly (too quick which misleveled my 2 sides). When I changed the units to inches (“G21 (inch)” in the drop down) and chose 1 inch as the units the Z+ and Z- worked great, and the display of the lowrider incremented each time with 1 mm (despite the CNC.js units showing 1 inch).

So I figured “fine - Marlin is configured for mm not inches.” I then uploaded my gcode and tried to run it but got this in the console almost immediately:

feeder> G0 Z1
feeder> G90
echo:Unknown command: “( Made using CamBam - )”
echo:Unknown command: “( 611_plate - Final 2/2/2019 12:25:14 PM )”
echo:Unknown command: “( T1 : 2.0 )”
echo:Unknown command: “G21 G90 G64 G40”
echo:Unknown command: “( T1 : 2.0 )”
echo:T1 Invalid extruder

I looked in the CNC.js settings for tools but didn’t see anything about units and it seems like something is confused about the tool. Based on what little I know, I don’t think I’m supposed to be setting it to Grbl. Smoothie and TinyG don’t ring a bell so I think I have that right.

Any ideas?


What controller do you have?

It’s complaining about the parenthesis comments. You can enable parenthesis comments in Marlin, but they are probably off.

You would use grbl if your controller was grbl, etc.

I have the MiniRambo v1.3(a?) bought from Ryan from the v1 shop.

When I put the same gcode file on the SD card it works, does that change the diagnosis or not?

Thanks again for your help, Jeff.

Maybe the unknown commands are red herrings.

Marlin is the right choice though. Can you post the gcode here so I can take a look? At least like the first 100 lines?

Of course. Thank you very much for helping me with this.


611_plate-Final.gcode (22.1 KB)

1 Like

So here is the leading gcode:

( Made using CamBam - )
( 611_plate - Final 2/2/2019 6:15:22 PM )
( T1 : 2.0 )
G21 G90 G64 G40
G0 Z25.0
( T1 : 2.0 )
T1 M6
( Pocket )

And here is the ending gcode:

The T1 isn’t necessary, and it’s confusing someone. I’m not sure if CNC.js should care, but in Marlin, that’s used to select the extruder, and I think it starts from 0, to T1 is selecting the second extruder.

G17 is also strange, and unless you’ve got CNC_WORKSPACE_PLANES defined, it will be an error as well.

M30 in Marlin is the command to delete a file from the SD card. I’m sure it’s just doing nothing, but that’s also probably not good to leave in the gcode.

The line G21 G90 G64 G40 is only going to be treated as a G21. The other parts won’t be read. Marlin doesn’t know G64 or G40 either (it looks like that is turning off features Marlin doesn’t have). I would make sure to put G90 on it’s own line though, just in case you were jogging around and it left it in relative coordinates. So I would replace that line with:


I don’t use cambam, but it seems like maybe they aren’t using good gcode for Marlin. Is there a Marlin option there?

At any rate, I would delete these three lines. You aren’t doing automatic tool changing, and all your arcs are in XY and you don’t want to delete any files.

The parenthesis comments aren’t great either. They will end up with that warning. If there’s a setting to change them to start with a semicolon, that would be better for Marlin.

The reason I think it’s working from the SD and not from CNC.js is that when Marlin complains about the T1 command, the LCD doesn’t care, and just sends the next line. CNC.js is trying to help you (thanks, I guess…) by showing the error and stopping instead of continuing in an unknown state.

1 Like

Thanks for this info! I’ll let you know how I make out.