LR3 (SKR Pro v1.2 Marlin) motion pauses when laser turns on or off

My issue is that controller (SKR Pro v1.2 Marlin) pauses the motion while it processes the M03 and M05 commands. I expected the machine to move through the full range of motion at a constant speed, with the laser turning on and off as it passed the edges.

Machine is a 10W Laser Tree laser module mounted to a Lowrider 3 with SKR Pro V1.2 controller (Marlin). The machine has a lot of mass to accelerate (doubles as a CNC Router), so I bumped up the Overscanning settings in Lightburn (LB) to 10%.

I’m doing a LB Material Test with Fill to test engraving settings on plywood. I’m using a matrix of 10-50% for Power, and 500-5000mm/min for speed.

After bumping up the Overscanning settings, I’m still getting burning on the edges of each line.

During a single line of motion, the machine will:

  • move to a distance away from the edge (overscan distance, varies with speed),
  • accelerate to full speed until it reaches the edge,
  • slow down or stop at the edge while it turns the laser on,
  • accelerate again and move to the far edge while the laser runs,
  • slow down/stop again at the far edge while it turns the laser off
  • accelerate and move to the overscan distance from the far edge.

The gcode looks ok:

G90
; Scan @ 4500 mm/min, 10% power
M8
M05
G0 X68.079 Y37.281 F0
; Layer
G91
G1 X7.5 F4500
M03 S25.5
G1 X5
M05
G1 X7.5
G1 Y0.1
G1 X-7.5
M03 S25.5
G1 X-5
M05
G1 X-7.5
G1 Y0.1
G1 X7.5
M03 S25.5
G1 X5
M05

Looking at the Marlin Docs, that behaviour may be normal in Standard Mode.

" In Standard Mode the M3/M4/M5 commands wait synchronize the planner (causing a momentary stop) before changing the power"

I’m not too familiar with Synchronous Mode in Marlin ( LASER_SYNCHRONOUS_M106_M107). Can I use the same Output Pin (PC9) that is currently defined for laser in my Marlin configuration, or do I need to configure one of the Fan outputs instead?

I know for GRBL controllers LightBurn defaults to not toggling M3/M5 each time the laser goes to 0. I believe there is an option somewhere to control that. Not sure if the same applies to its use of Marlin, but I can’t see them only having the results you’re currently getting.

I would poke around in the device config (under devices) as well as machine settings.

Oh… you want to use M4 mode, rather than M3 mode.

1 Like

There is a speed limit, I can not find the details. I ran a bunch of tests, so many dots per second. If you go over the machine will hesitate. It is not a machine thing it is a board/processor thing.

The skr was maybe 50mm/s at a certain resolution.

1 Like

Not quite sure why this would be the case. The difference between M03 and M04 is CW vs CCW spindle rotation. Laser on/power level is same for both.

It is happening at all speeds, even as slow as 500 mm/min (8.33 mm/s).

I did a bit of reading through the Marlin docs, and it seems that Inline Mode may be the answer. I set LB output to Inline (from M3/M5), and the laser no longer turns on, so I’m guessing that there are some changes that may need to be made in the Configuration.h and Configuration_adv.h files

Because you want to use Dynamic Inline Mode, which is enabled by M4.

Constant inline mode, M3, won’t adjust laser output power for actual speed vs. target speed.

Either is better than standard mode which, as you’ve quoted from the docs above (and witnessed), stops motion to turn the laser on and off.

Yes, thanks for pointing that out. I later found that in the Marlin Laser Configuration Guide (2.0.9) after I read your post.

What was confusing to me is how you would implement this in LB. It occurred to me that you might have to manually edit the Gcode and replace M03 with M04? Which led me to …

So it turns out that LB Inline mode doesn’t use any M03 I (or M04 I) commands in its gcode output. It puts an Xnnn Ynnn I Snnn string as part of any G0/G1/G2/G3 commands, but it never actually turns the laser on or sets it to Inline Mode.

I added an M03 I start code (and an M05 I end code), and now the laser turns on and off when it is supposed to (more or less - there’s still something odd going on where it seems to turn off briefly mid-pass).

Poorly written software for something they charge for (IMO).

I’ll play around a bit more, and substitute M04 I instead of M03 I in the start code, and see what happens.

Odd. They got it right for GRBL controllers. The start gcode has an M3 or M4 (whatever you choose in device settings) and ends with an M5.

Is the gcode turning it off with an S0 or are you running into the controller issue that @vicious1 noted above?

No

I’m not sure at this point. It seems to do it at both higher and lower speeds, and more at higher power levels than at lower power levels. I need to do some more investigation to figure out why.

I was reading some threads in their forum related to Marlin Inline mode. The LB developer seems to think that Marlin is a pile of steaming turd, and based on his questions and comments, he really didn’t understand (and/or didn’t really want to understand) how Marlin Inline mode had been implemented.

I got the impression that writing code for Marlin users wasn’t worth his time. It makes me feel less than warm and fuzzy about shelling out cash to purchase his product.

Yeah, his bread and butter certainly seemed to be GRBL and Ruida controllers. I think it’s partly a reflection of feature implementation timing, and not circling back to it once things became supported. He defintely is, not uniquely, strongly opinionated.

You may have seen this thread. It sounds like you may have to enable fast whitespace and set the speed to 0 if you want to use M4 mode.

1 Like

I did see that thread, thanks. I’ll do some testing once I replace M03 I with M04 I in the user start code, and see if I need to tweak that setting.