Improved Raster Speed Firmware Update for Cohesion3D Boards!

Up until now, the stock firmware (Smoothie) we have shipped on the Cohesion3D Boards has been great for cutting but has struggled with high detail raster engraving at higher speeds. This is due to a theoretical limit of only being able to process 1,000 gCodes per second, and more like 800 in real life. So when you try to do a grayscale image with a 0.1mm dot size/ 254 DPI at 80mm/s, that’s 800 gCodes per second right there and about the max that you could do before things started getting weird.

This is why we had the alternate GRBL-LPC firmware which allowed you to to run approximately 3 times faster, but it was not able to run files from the memory card, drive the Graphic LCD Screen, and have the more extensible configuration via the config file on the memory card.

We’re happy to report that we have a new update for the Smoothie firmware that should allow it to go approximately 3 times faster than it could before, even slightly beating out GRBL-LPC in our internal raster speed tests.

You’ll need to put this new firmware.bin file on your memory card and put the card back into the board while off, then power up the board and watch the green LEDs L1-L4 count up in binary to indicate that firmware is flashing.

You’ll still need config.txt file on the memory card for whichever C3D Board you have for Smoothie Firmware to work properly, and we have tested this firmware with the stock files for the Cohesion3D LaserBoard and the “Batch 3” files for the Cohesion3D Mini (the last bunch of Mini’s shipped with that, and if you have a “Cohesion3D Mini v2.4 board”, which you can tell by the presence of a 2 pin male header near the USB port and the board being off when a USB cable is plugged into the computer, then your board most likely came with these files. We have not tested with the older C3D Mini config files).

Make sure you are on the latest version of LightBurn, which at the time of this writing is 0.9.04.

Go to Edit → Device Settings and enable the toggle for “Smoothie Clustering”

That should do it. Try to run some stuff, see what happens.

It’s not magic - physics doesn’t allow you to achieve 600 DPI, the laser’s dot simply isn’t that small. 254 - 300 DPI is a realistic expectation.
Similarly, a K40 will probably start to shake itself apart if you actually hit 400 mm/s. 200 - 300 mm/s is a more realistic expectation. That said, things should not go catastrophically wrong if you tell LightBurn to go at faster speeds, I just want you to understand that you’re not actually running at 700mm/s even if you think you are.

If you have issues/ questions, post in this category and put [Cluster Firmware] in your topic title so we can keep things somewhat organized:
https://forum.cohesion3d.com/c/board-configuration-and-setup

Finally, we’d like to extend a huge thank you to Oz @ LightBurn Software for his help with the firmware and software changes to make this happen.

Hope you all enjoy, and happy lasering!

8 Likes

Holy. Now this is the kind of speed i was expecting, im limited by my laser power now on birch ( 60w ) which is great. I do have some resonance issues though, they manifest for a few lines here and there, cant pin down exactly where they come from, could be my rather cheap drives self resonating the motors aswell. It doesnt skip though which is all that matters.

Did you implement a speed limit ? Beforehand i had the impression that the faster i set it the more it skips at the same speed ( trying to achieve faster speeds ) Now it just does the engraving at the same speed and nothing really changes at all ( didnt try to push the accels yet )

Anyhow, great update, worked flawlessly with my old config.

For your viewing pleadure: https://www.youtube.com/watch?v=P6fc94GndRo

1 Like

Correct, there should no longer be any shifting if you try to go too fast for it to handle.

No, it is not a firm speed limit like 240mm/s or whatever, it depends on how detailed the image is, what DPI you set, and what speed, which all contribute to how much data needs to be sent to the controller which is where the limit is.

So yes, if you program some super high speed like 700mm/s, it should just not get faster than whatever the maximum speed it can handle for those other parameters you have set is.

These were some tests Jim (@Jfong) ran pushing rasters every gCode known controller while timing the job with a stopwatch. C3D running Smoothie Clustering is the fastest and even beats GRBL-LPC on the C3D by a few seconds for the test job.

The other thing you can see here is the last 2 values in the columns, we ran the 100 DPI one at 300mm/s, and then again at 350mm/s, and it all worked, it just didn’t go any faster.

I am now much more confident in saying that if you are having skipping of steps, it is now a “physics setting” like motor current too low, or max speed/ acceleration too high. Similarly, if you hit where the job is not getting faster, you can try to increase those values on the controller.

1 Like

Very interesting ! Ill see tomorrow how far i can push my machine by increasing dpis just for fun, physically there shouldnt really be any obstacles ( other than laser power ), these steppers moved a 80kg+ cnc gantry before.

Another welcome observation is that it doesnt slow down / speed up depending on gcode overhead while engraving anymore, it stays at the same speed now.

All in all i can just repeat myself, outstanding work with the batching, its good to know that i can use my machine to its limits now.

Hi!
Really interesting to see this firmware update, but does this work with rotary table on A-axis?
If it is only 3 axis, is it possible to move the rotary driver/card to the Z-axis (instead of A) and run the rotary on this output? It seems like Lightburn enables this option.

This is a 4 axis firmware build. All the new LaserBoards ship that way so it all ‘just works’ out of the box now.

Indeed it does!
Burn baby, burn!

The implementation doesn’t care which axis is involved, and will handle scanning at an angle too. It basically just clusters a bunch of pixels into a single GCode move, allowing the motion planner to see further ahead than it could before (up to a max of 8x).

The motion planner in Smoothie can only see 32 moves ahead. If those moves are all 0.1mm each, it means that it can only see 3.2mm ahead. If the next move to be added to the planner reverses direction, it has to be able to do a full stop within 3.2mm. Depending on your speed and accel, this might not be possible, so it will limit your speed accordingly.

Putting multiple image pixels into a single, longer move means that it can now “see” farther ahead. If we put 10 dots into a single move, you’d now be able to “see” 32mm ahead, and that’s far enough ahead to be able to stop in time even if you’re moving pretty fast.

There are still other bottlenecks - processing all this data takes computation, and I had to increase how often it updates the PWM output, which increases overhead too, but in testing it’s been at least 3.5x faster than it was, and that’s a reasonable practical limit, given the other components in the system (PSU, glass tube firing time, small motors, etc).

Hopefully this makes Smoothieware just as capable as GRBL-LPC for raster engraving, and it still has all the cool Smoo stuff, like SD card and LCD support, smoother motion, and so on.

Feedback is welcome.

7 Likes

BRAVO!!! This update is amazing on my C3D Mini! Engravings have gone so much faster and without the skipping and buffer errors from before. I could actually engrave an image at 200mm for 254dpi with no issues. Again, Thank you!

2 Likes

That’s awesome - I can use my LCD screen again :+1:

Are any changes needed to run the new firmware on LaserWeb?

The improved sending speed will only work with LightBurn. If you have not tried LightBurn yet, there is a 30 day fully functional free trial at:

It is so much better than LaserWeb. Give it a try!

2 Likes

Where can I get the source code of this firmware? I’d like to check how it’s made :thinking:

Ray or I can send you the code changes. You’ll see the most benefit if you use it with a fast-stream implementation.

The simple explanation is that you send one G1 move and send one or more S values, separated by colons, to be evenly distributed along the G1 move, like this:

G1 X0.5 S1:0:0.5:0.75:0:0.2

Up to 8 values can be sent in a single G1 move.

1 Like

Here are the modified Smoothieware files:

1 Like

Ok, that makes sense. Thanks for the explanation and code!

These changes should go in the github repo! It would be great to be able to easily build or pull improvements into the upstream project.

Agreed, but that would be up to the owner of the repo. :slight_smile: