Snapmaker A350 40W Incorrect Speed After Job

Ok… Here’s my weirdness:

Snapmaker A350 with 40W laser, Firmware V 1.17.17

If I have a layout that is arrayed in Lightburn and I select one of the grouped objects to burn (to test settings) it burns normally and the machine returns to end GCode (M5, G0 Z330 F6000).
If I select the next grouped object (after making minor power adjustments), select Go to Origin and start the job, the machine goes to the correct job location and starts the job, BUT, the machine runs at some unknown slow speed over burning the job and I have to pause and stop the job.
I then have to restart LB and do the second selection and it will work fine for that job, but subsequent jobs will run at the reduced speed and over burn. This also occurs if don’t even change the selected object, just selecting Start and I get the slow speed issue, it just remains stuck at the slow speed instead of the speed set in Cuts/Layers.






I changed the power on all layers to 1% for testing purposes, left the speed settings the same as in the original project. Ran the job with only one object of the array selected, ran fine in 7min, 18sec.
Went to run it exactly the same after the first one finished. Didn’t change a single thing, same object, just clicked Start and it took 18 min. to run, this would have seriously over burned the job.

Here is the start and end of the Gcode from both runs, Good and Bad:

GOOD:

Initial run, Get Position, Set Origin, click Start:

Waiting for connection…
ok
X:0.00 Y:0.00 Z:0.00 E:0.00 Count X:11280 Y:9560 Z:32580 B:0
ok
X:0.00 Y:0.00 Z:0.00 E:0.00 Count X:11280 Y:9560 Z:32580 B:0
ok
Project loaded in 75 milliseconds

Starting stream
M106 P0 S255
M3 S0
G21
G90
M8
M05
G0 X247.74 Y9.341 F3000
G0 Z0
Layer #2
G91
G1 X0.042 I S2.5
G1 X-0.083Y0.1 I S0
G1 X-0.072 I S2.5
G1 X-0.081Y0.1 I S0
set air pump switch: open
G1 X0.075 I S2.5
G1 X-0.048Y0.1 I S0
G1 X-0.088 I S2.5
G1 X-0.042Y0.1 I S0
.
.
.
M05
G0 X232.687 Y71.709 F3000
G1 X232.552 Y72.063F900 I S2.5
G1 X232.249 Y72.724
G1 X231.864 Y73.341
.
.
.
G1 X232.792 Y71.761
G1 X232.717 Y71.71
G1 X232.687
M9
M05
G90
M5
G0 Z330 F6000
set air pump switch: close
Stream completed in 7:18
close Laser control

BAD:

Subsequent run, same object, just clicked Start

Starting stream
M106 P0 S255
M3 S0
G21
G90
M8
M05
G0 X247.74 Y9.341 F3000
G0 Z0
Layer #2
G91
G1 X0.042 I S2.5
G1 X-0.083Y0.1 I S0
G1 X-0.072 I S2.5
.
.
.
M05
G0 X232.687 Y71.709 F3000
G1 X232.552 Y72.063F900 I S2.5
G1 X232.249 Y72.724
G1 X231.864 Y73.341
.
.
.
G1 X232.792 Y71.761
G1 X232.717 Y71.71
G1 X232.687
M9
M05
G90
M5
G0 Z330 F6000
set air pump switch: close
Stream completed in 18:00
close Laser control

Ok more testing reveals that running the job after the first run, the speed is approximately 1/2 the correct speed.
But…
After the job completes and the machine returns to M5 G0 Z330 F6000, If I click the Saved Positions (I have the origin position saved and the machine goes to that location) and run the job, it will run correctly, every time. But I have to go through the Click Saved Positions sequence for each job.

The above speed issue is also present with the new Snapmaker 2 V1.8.0 firmware release.

The above speed issue is also present with the new Snapmaker 2 V1.8.1 firmware release.

TL;DR: Setting your fast whitespace scan speed to something you don’t ever use for layers might help.


I’ve seen a similar thing with my Artisan sometimes. I think what’s going on here is that the Marlin device type assumes shared G0/G1 speeds, but Snapmaker doesn’t behave that way.

Or at least, for some reason Snapmaker does not use the speed from a G0 XX YY F command for subsequent G1 commands. Lightburn though… it outputs G0 with fast whitespace scan speed before each layer, then assumes that speed carries into the G1 commands following. If your layer uses the same speed as your whitespace scan, it’ll never force a new speed during the layer.

Setting an unused speed as the fast whitespace scan speed looks like it might fix it, at least from GCode. Doing that generates a feed rate for the layer start G1.

Still testing, but hopefully that helps.

1 Like

I’ll give it a try.
The most that I’ve been setting layer speeds to is 3000mm/min., which is also what I have fast whitespace scan set to.
I’ll switch it 4000 and see what happens.

Unfortunately, Marlin does not conform to the G-code “standard”, where G0 moves “as fast as possible” and G1 moves at the current F feed rate:

https://linuxcnc.org/docs/stable/html/gcode/g-code.html#gcode:g0

https://linuxcnc.org/docs/stable/html/gcode/g-code.html#gcode:g1

Just another reason why Marlin is not the preferred G-Code interpreter / firmware for anything other than a 3D printer.

:person_shrugging:

While I see the point, I think Snapmaker is actually closer to the “standard” just by having different speeds for G0/G1. (Not entirely sure what it does without a prior G0 speed command though). Of course it also causes issues like this by being slightly different from any other firmware out there.

Anyway the correct resolution here might be to wait for 1.5 and switch back to the Snapmaker device type, as I don’t recall seeing the issue with that. For the time being though, Marlin with hacks like the above gets us inline power control, which is worth a bit of trouble IMO.

1 Like

I’m having the same issues with my Snapmaker A350 and 10w laser, except now I can’t get anything to engrave at the correct speed; everything is engraving at a consistently slow speed and over-burning. The preview in LightBurn looks correct (the laser moves at the correct speed), the exported Gcode has the correct feed speeds, but when I run the Gcode via Octoprint (which worked just fine in the past), the laser always runs at a slow speed described in the original post.

@AlanF - were you ever able to get this resolved?

No, I have not found a solid resolution to this issue.
I’m hoping in the upcoming Lightburn V1.5 there will be some more attention given to Snapmaker integration.

Thanks Alan. Me too!