Ender 3 S1 Pro with 1.6W Laser

The laser module firmware in the Creality Ender 3 S1 Pro does not seem to support the commands required for LightBurn to successfully engrave and cut. Primarily the laser power and on/off function does not correspond to standard GRBL behavior.

I am running v2.0.8.24F4 on the controllers and screen version 1.0.2.

I tried upgrading to LightBurn v1.2.04 with the same results.

LaserGRBL works a bit better as far as printing, but the generated GCODE syntax for burning is quite a bit different.

For example, it seems the laser enable/disable is not explicit enough and the Sxxx laser power on the G1 commands is missing on nearly all of the text for the LaserTools->Material-Test for example.

For Example, this GCODE works better:

";Header Start
;estimated_time(s): 573.262
;MAXX: 86.78
;MAXY: 90.22
;MINX: 12.67
;MINY: 27.67
;Header End

G92 X0 Y0 Z0
G0 F3000
G1 F4000
M3 I

Than this GCODE from LightBurn:

“; LightBurn 1.2.04
; GRBL device profile, absolute coords
; Bounds: X6.19 Y24.68 to X79.81 Y111.32
G00 G17 G40 G21 G54
; Cut @ 100 mm/sec, 50% power
G0 X38.38Y108.627
; Layer
G1 Y111.312S500F6000
G1 X38.664
G1 Y108.627
G1 X38.38
G0 X39.138Y108.627
G1 Y110.572
G1 X39.375
G1 Y110.296
G1 X39.47Y110.436
G1 X39.585Y110.536
G1 X39.718Y110.596
G1 X39.87Y110.616
G1 X40.005Y110.6
G1 X40.129Y110.553
G1 X40.232Y110.48
G1 X40.305Y110.387
G1 X40.355Y110.275
G1 X40.387Y110.144
G1 X40.398Y110.018
G1 Y109.823
G1 Y108.627
G1 X40.138
G1 Y109.81
G1 Y109.986
G1 X40.107Y110.112
G1 X40.065Y110.201
G1 X39.998Y110.271
G1 X39.913Y110.315”

Is there a reason you’re using the GRBL profile rather than Marlin?

Not really, but I have tried Marlin and all three GRBL profiles. None was actually successful.

They would move the laser around for the most part, but did not seem to control the laser correctly. Sometimes the laser would stay on during the traversal moves for example. Other times it would start the burn, finish only the first letter, the capital “I” in the word Interval and then stop engaging the laser for the rest of the layout even though it would go through the motions. With the safety glasses on or by watching through the lens or the LEDs on top you can tell when the laser is trying to cut and when it not.

I am a CNC novice to be sure but GCode for a laser seems pretty straightforward to me anyway so long as the controller supports the commands in a way that is understood.

There are quite a few commands that are not responded to when LightBurn is talking to the controller by watching the debug log and the console. Since this is my first laser CNC, and LaserGRBL and LightBurn are both included with the Creality laser module, I assumed it mostly works correctly if I get the correct parameters configured. So far though I haven’t seen that the code generated is correct. I can manually issue the commands and get it to do what I expect, so the controller seems like it is working as designed.

I am assuming I just don’t have some settings quite correct on my side.

Creality Print works fine (thought extremely limited) and LaserGRBL sort of mostly works, but LightBurn is a more capable product and so far handles imported images/drawings much more capably than the other products…

Does this help?

I was also wondering if the limit switches are supposed to “limit travel” during normal operation or are they only to let the controller know where home is, if it is interested at that time. It would sure be helpful if there was ANY documentation from Creality…

Here is a Marlin example from LightBurn. Notice how the laser/spindle is never enabled and the inline option M3 I is not specified. Only if I put the “M3 I” in the Startup GCode for the laser, does the engraving actually start.

; LightBurn 1.2.04
; Marlin device profile, absolute coords
; Bounds: X7.99 Y128 to X108.92 Y214.4
G21 ; millimeters
G90 ; Absolute coordinates
; Cut @ 25 mm/sec, 100% power ;;; How is this specified anywhere except the first G1 line?
M8 ; Turn on air assist
M05 ; Laser off if it is M5, or Stop if is is M0… ?? Unclear
G0 X69.217 Y128.659 F6000
; Layer Labels
G1 Y128.774 F1500 I S1000 ; First time power is specified, but the laser is not on. (M3 I)
G1 X69.255 Y128.885
G1 X69.342 Y129.062
G1 X69.469 Y129.237
G1 X69.649 Y129.424
G1 X69.894 Y129.638
G1 X70.093 Y129.806
G1 X70.256 Y129.955
G1 X70.384 Y130.086
G1 X70.478 Y130.199
G1 X70.592 Y130.4
G1 X70.63 Y130.59
G1 Y130.683

Looks like Marlin is configured for Inline. If you need M3/M5 then you need to change this in Device Settings.

@berainlb Thank you for the quick response.

I already have that setting enabled and that is how the GCode I was showing was generated.

Odd. The ‘I’ in the following line made me think you were using Inline.

Here’s a simple example of what I get using M3/M5 option:

; LightBurn 1.3.00
; Marlin device profile, absolute coords
; Bounds: X71 Y132 to X299 Y328
; Cut @ 6000 mm/min, 20% power
G0 X71 Y132 F4000
; Layer C00
M03 S51
G1 Y328 F6000
G1 X299
G1 Y132
G1 X71
; return to user-defined finish pos
G0 X0 Y0 F4000

Note the M03.

I see. :grinning:Thank you.

I think I misunderstood you the first time. You were correct, I did have the Inline enabled as I had your suggestion flipped in my head that you wanted me to enable it and NOT use M3/M5. When I tried the M3/M5 before, I thought it was not disabling the laser between engrave points and the transversal lines were being engraved as well, but that could have been the GRBL profile doing that instead of the Marlin.

I will go test more though now and see if there is a combination I overlooked like you are suggesting. I did not think it was going to be quite so picky and I so I did not thoroughly document each attempt when I went through with each result for the four profiles. My bad.

Marlin, specifically, has way more variations so is rather picky about your particular configuration. GRBL tends to be quite standardized which is nice.

Incidentally, inline would be preferable if your firmware is configured and compiled for it. However, I don’t think I’ve ever heard of this being done by default on any system.

I started the testing and trying other things as you described and it was somewhat better. The laser seemed to have a very limited dynamic range of effects on cardboard and wood samples. I am not sure yet what is normal though until I learn more and get more experience.

I eventually ran into a snag in that the laser module stopped lasing completely…

The red power light on the module still comes on and yet no laser light ever appears. Even the blue LEDs that indicated the PWM/blue laser diode activity on the top of the module have stopped flashing. I did normal troubleshooting things. Reset the unit to factory settings and rebooted the printer, switched the mode from Printer to Laser and back a couple of times. Checked on the cable connections, etc… Tried Creality Printer utility, LightBurn, SD-Card local GCODE playback (which used to work), etc… All the motions and movements look fine, just no laser from any software or even manual commands. :frowning:

Converted back to a printer it still works fine, but not as a laser currently.

I started the slow process to contact Creality Support, so I suspect it will be at least several days before anything happens.

I managed to swap the 1.6W laser for a 5W model to test and same results. I assume this means that something between the controller and the laser failed and unless that interconnect board has active circuits, then the controller needs to be swapped now. Still waiting on Creality. All they have said so far is one sentences to send them videos of the failure and that single sentence took an entire week to get.

One more item of interest. I ran the Creality Print utility which has a profile for the Ender 3 S1 laser and the generated code looks like this:

;Header Start
;estimated_time(s): 497.801
;MAXX: 68.33
;MAXY: 69.89
;MINX: 10.11
;MINY: 19.44
;Header End

G92 X0 Y0 Z0
G0 F3000
G1 F1500
M3 I

Based on this code and this description, maybe it is using inline?

What board is this?

Have you checked voltages coming from controller to see if PWM is working correctly? Voltage should read roughly 0V when at 0% power and increase proportionally up to 100%.

Is the 5W model made for your machine or it’s a generic model? If generic, have you made sure the wiring it correct?

Yes, this looks the case, although it looks like the specific syntax may be different from LightBurn. You could try modifying the LightBurn g-code to see if you can get this to work.

The board is the Crealty Ender 3 S1 Pro stock 32-bit MCU. It is running some version of Marlin from what I understand.

There is not any PWM signal currently when asking for any power level. 24V power only.

Creality is sending a replacement the motherboard.

Both lasers are from Creality amd made for this unit. (they also work on other systems, but these units are specifically offered on this platform.)

I should have a new microcontroller board to swap in a week or so I would think and give it another try.

Is the “interconnect board” that you referenced something else entirely?

So is laser control strictly on/off?

I’m trying to understand how different power levels are configured. I can see varying S values in the sample gcode. And looking at it more closely I’m noticing values higher than 255 there. I had thought Marlin based setups were generally configured for 255 max.

It uses the PWM signal to modulate power, but the controller that was working stopped sending the PWM signal at all. The vendor thinks something happened to the controller board and is needing to send a replacement unit.

My apologies as you probably know all of this already.

There are three wires for the laser. PWM, (Gnd / -), (24V+)

24V +/- is hot all the time and the PWM signal (~1.5kHz rate at 3.3/5V depending on HW version) is sent to turn on the laser as needed. That function ceased to work for all recent attempts. This was for saved GCODE files, LightBurn, even with the Creality supplied utilities used for verifying the setup. I would confirm the PWM with a scope, but with no signal there currently there is not much to see.

Since this controller is a 32-bit version of Marlin, I understood that it supported 16-bit resolution for power levels, but this implementation is configured for a range of 0-1000. I am no expert here, just relaying what has been discussed around the net and what is in their config/test files I have looked at thus far.

I have been out of town so I hope to be back in town when the replacement board arrives to try again.

How did you confirm this? With a meter?

On the controller side of things is there a matching 3-pin connector just for the laser or are you repurposing a fan control or something similar?

I’m looking at this image of what I think is a schematic of your board. Doesn’t appear to have a dedicated laser port:

But perhaps this is the wrong board.

Assuming this is the correct board how do you supply 24V and PWM to the laser module?

The hardware likely can support it. I haven’t seen any clear documentation on Marlin support for wider ranges. Convention is what I think drives the 0-255 values currently though this could just be a carryover from 8-bit implementations.

I looked at the photos I have of the board and I think that is the correct one. There is a midplane-PCB between the motherboard and the cable connections and I think probably has to be one of the ribbon cables.

Can you take a photo of what that looks like? Or if there’s a stock photo that’s fine too. I’d like to understand if it’s just a power adapter or if there’s logic on the board.

Here is what can be seen without removing the hot-glued cables or the main PCB.

This middle one is the connector used by the LED/Laser cable. LED uses 24V +/-, Laser uses that plus the PWM pin. Note that the stepper motor for Z is only using 4 pins, but the J707 connector has 6 wires and the J712 connector has 4 pins, but the filament detector connector only has 3. There are three bonus pins right there.

This is the connector board from backside. It looks to me like a passive connector board from here.

Here is the overall layout underneath with the split ribbon cable for J707 and J712 connecting to the connector board

Here is the board as installed. The upper right corner is the split ribbon cable that feeds the connector.