Making sense of the obscure Ruida 6445 fields

I’m not sure if I’ll ever understand this, but I have learned more about Ruida’s poorly documented “mystery” fields in a long intense mania session tonight.
Also important, I’m creating new ways to test the performance and trying to get the Ruida’s output to be more consistent.

This one was surprisingly important! If we were traveling up or down the Y axis, and hit a corner and went down the X axis- AND ONLY IF the corner is radiused- I got a clear oscillation. It also shows up on the middle of certain curves like the middle of that lowercase “s”.

Now, initially, anyone would say that’s a mechanical problem due to excessive acceleration. But I tuned the Y accel way down. And tuned the cut accel (vector sum only) way down. It didn’t go away until it was comically, uselessly slow. It didn’t even seem to become less prominent until the numbers were far too slow.

I don’t have a “why”, but the mystery “Speed Factor %” parameter is critical here! I had it at 100%. 200% moved made the oscillation notably more prominent, whereas 50% made it disappear! I ran a large 4min vector cut job with a ton of tiny detail and it added like 5% time to the run, I call that a win.

I proceeded to kick up the Cut parameter’s max accel, and things just got faster and quality looks improved.

Many interesting notes:
I had Start Speed at 1 (really powerful RF laser here, I don’t need a start speed, it PWMs proportionately at <1% duty). It allows you to enter 0.1, but then the laser will just hang in the “RUN” state with no movement, no beam, no alarms.

MIN ACCEL doesn’t seem to have any effect on anything.

Accel % and G0 Accel % don’t seem to have much effect. It appears G0 Accel speeds up and slows down the Frame function, which is like a G0 rapid, I guess. I think it affects the rapids between cuts, but I’m confused because I think that’s controlled by Idle Acceleration.

This test pattern shows a number of things. It’s a high speed (600mm/s), 5% low power burn with a defocused beam on paper. The test creates a steep threshold where it produces no color change at all if the energy is below a certain point. And repeatably I get these gaps where it’s throttled down the beam too much. It’s not problematic for normal cuthroughs, we’d just make it a little slower and get a full cut on the worst spot and overcut a bit on the “good” parts which doesn’t create an actual prob. If I’m doing this text as a surface engraving on acrylic, these flaws will appear to close inspection.

As you can see, the Ruida’s motion control is kind of butchering the power level consistency. I’m not sure why but monkeying with the parameters is improving it, but not making it go away entirely.

Weirdly, my first observation was that the Ruida would overpower at start/stop points and sharp corners- not scaling back the beam enough for the current achievable speed. Now I’ve got this thing where the cut along short start-stop bits is consistent with the full speed cut in a straightaway, but there’s a dropout that seems to be where it changes from a scaled-back power because of limited speed to the requested power at the requested speed. Not sure why.

Now that I look at it more, I find it interesting that the “squiggle” such as seen in the middle of the lowercase “s” at “Speed Factor 100%” coincides perfectly with where there’s now a power drop, although it’s no longer squiggling. I’m still confused on this point.

Guess I’m not up on the mysteries. Where is this ‘SPEED %’?

Where do you set it an what does it relate to?

Don’t know enough about RF excited lasers, but could it be that it’s not really linear at the ends, meaning that 1% may be less than 1% where 10% is actually 10%.

Generally most things don’t have an absolute linearity across their complete range, especially at the ‘ends’ of it’s range.

I’m ignorant enough that I have some problems following your thought process.


It’s under Machine Settings in Lightburn. Like everything else, it’s also on the Ruida panel.

At the bottom there (incidental) Accel Factor %, G0 Factor %, and Speed Factor %. I’m editing my post, it should say Speed Factor.

Thanks for the reply… I was unaware.


I’m struggling to understand SO many bits here. I did discover at some point, Ruida will take very small circles and not only convert them to octagons, but the sides use seemingly unnecessary full-stop beam-off corners

The main challenge right now is a user who has small tech faceplates and needs better precision, and hole sizes are like 2mm-10mm. I do see artifacts on the entry point, and the circles are a bit wobbly.

I’ve got a “nice” problem to have- the machine has a ton of power, and large bed. The power is simple and fantastic for large cuts in acrylic and plywood, they go SUPER fast.

Then, it becomes very important to be able to do unusually high speed details and curves. Otherwise, when the machine’s only able to run at a small fraction of the commanded speed, it has to throttle down the beam too and thus fail to take advantage of having the power available. So, I’m pushing envelope on axis speeds after pushing it on beam power.

It’s a 1610 frame- 1.6m x 1.0m, with CCM linear outer C-rail and closed-loop steppers.

The tuning task seems not just frustrating- it looks impossible to ever be great for everything. Primary prob, I can only see the effects on runtime by actually running a specific job and noting the time, the Preview time in LB seems broken when I tinker with these. That time varies wildly with the nature of the features so no one test job is going to give a solid answer.

Then you won’t know the quality of the cuts until you make them in stock for real. Plywood is cheap but doesn’t tell enough. One big issue I have is the beam overpowers when the motion controller slows it down due to one of the accel limits on corners, or tight curves. On plywood, maybe it already cut through so you won’t even see the extra power, but try to engrave text on acrylic and the depth is all over the place.

Are you using the ‘lead in’ feature for the inner cuts, like the 2 to 10mm?

I cut m3 holes, and use the lead in and set it to a negative 90 deg. It starts the cut inside the circle.

I’ve cut pretty small holes with no notice of any kind of ‘octagon’ shapes.

Lightburn reads your controller and computes the preview as best as possible. What kind of variances are you experiencing?

You can go to ‘Edit → Device Settings → Additional Settings’ and see the values used by Lightburn in the preview.

I’ve worked with closed loop servos, but don’t know anything about closed loop steppers. Wouldn’t think there would be an advantage in feedback from a stepper…

Are you sure that thing is firing at the 1% levels that you are expecting?

Good luck…


I’ve worked with closed loop servos, but don’t know anything about closed loop steppers. Wouldn’t think there would be an advantage in feedback from a stepper…

Oh they’re the BEST innovation, and cheap! Totally use these!
The drives take the same step/dir signals as regular steppers, but have more wiring to the motor. The main functional difference versus a closed-loop servo is the stepper has higher torque at lower speeds and as such avoid a complicated reduction stage that would also bring some additional backlash/belt springiness.

Closed loop steppers have several advantages-
Notably higher speed and accelerations possible before stalling for the same motor size
Smoother running than even microstepping normal steppers
Guaranteed detection of a motor stall, impossible to “lose steps”
For the same type of motor, the drive is actually smaller, simpler, and cheap in closed-loop

But here’s the big win, if you use it:
These run a 1000 line encoder, which makes 4000 counts/revolution. That is reliably your actual resolution. Now, a 200 fullstep/rev stepper 10x microstepped is 2000 counts/rev, but microstepping is not a hard accuracy. The microstep position is only a suggestion, it’s a position it will mostly settle on at rest, the rotor can still bounce back and forth across microsteps as long as it’s not 90 deg out of phase with the true fullstep.

But closed-loop encoder counts, the drive can get the rotor on that encoder count tightly. So it’s true resolution. This higher true resolution strengthens the case for direct-driving an axis without any reduction belt. A 40mm timing pulley on a closed loop NEMA23 is 125mm/rev, and 0.031mm/step, which sounds usable as CO2 beam diameter can get as small as about 0.1mm with typical lenses, but that would be about the upper limit for pulley size that won’t screw it up overall on fine engraving jobs.

It’s a little more complicated though- like a closed-loop servo drive, the closed-loop stepper drive does allow the encoder to get out of sync by a few counts and quickly increases current to make it catch up. This control loop is within the drive, which only takes step/dir. More than a few counts and the drive will halt in a fault state and express an Alarm signal.

Do you have a reputable link…

Is it wired to something like the water protection circuit for fault detection?

Thanks for the reply…


My laser is Ruida, but I added an Arudino system controller in back. If it sees a fault condition in a drive, it will open a relay that opens the door interlock forcing the Ruida to stop. This makes me feel good about pushing the parameters to the limit. I got rastering up to 1500mm/sec (which I’m loving). If it goes too far, it won’t stall, lose position, and crash against at endstop at high speed later. The drive pulls the Alarm signal as soon as the rotor is deemed out of sync, which makes the Ruida stop the travel in-place and kills the beam so it’s not dangerous, just ruins the job attempt.

I also have a hall-effect true flow-meter on water protect, which makes pulses. The system controller counts flow pulses and also trips the Ruida’s water interlock if it’s below spec.

That Arduino system controller connects to the PC via a Command Line Interface in a Putty terminal. It allows me to go into a test mode where I can set any PWM and pulse length and trigger with a manual button on a long length of wire. Also, can disable to door interlock via CLI command. Manages power supply enables and POK. So, actually doing quite a lot outside the Ruida.

I should really make some videos showing all this off

Certain settings (I think it was Accel Factor %) actually made a 15mm circle break into very visibly jerky segments. I need to video this one. I’ve not gotten good cutting results by just working from a factory-reset 6445G and setting basics like axis velocity and accels. Particularly in the power throttling when the motion controller has the axis slower due to accel limits.

It’s SO frustrating though because these mystery parameters also appear linked in mysterious ways. So one field alone might not cause this without another field (or fields) being in a particular situation that seems incomprehensible when we don’t know what the fields are supposed to do. And making one thing better always seems to make something else worse, in ways not immediately apparent

What do you have curve tolerance set to?

Where’s “curve tolerance”? Is that a Ruida or LB parameter?

The changes I went through were primarily in Ruida’s config.

Lightburn. Not in front of computer, but I think it is under File settings

That clarifies it… I also have a ‘flow meter’… to an arduino…

Mine will run at 1650mm/s, but it’s relatively useless. Great fun to play with. The overscan is so bad it’s 3 times the speed of doing it at 500mm/s…


One big lesson learned- Ruida has “linked” fields that can cause MAJOR headaches. When the manual says “this acceleration cannot be greater than this other acceleration parameter”, Ruida will actually try to be helpful and change one to the “correct” parameter if there is a conflict. It’s possible for it to correct to a greater or smaller number. I understand little of these and may never understand, due to lack of description of these fields.

What I ran into was testing was kicking a primary axis acceleration to a low value to test the effect, then of course put in the old value or at least a tweaked value. However, at the point where a low value was entered, Ruida was “helpful” and changed like the “Idle Acceleration” and “Cut Acceleration” (don’t quote me on this, I’m not sure which it did) to a much lower value. Because those parameters are larger than the axis allows, it saw that as unacceptable and resolved by changing those parameters. And there’s an arbitrary determination of which one is the one to correct in case of such conflict.

But when the primary axis acceleration was restored to the old value, it will NOT restore the previous values in the linked parameters. So, horrifying, you can’t undo what you just tried, not if you work from the panel, or work from Lightburn’s Machine Settings on only a field-by-field basis. Rebooting will not help. Hopefully you used Lightburn at some point to back up the Machine Settings or have the machine mfg’s OEM Machine Profile somewhere.

Rather, if you’re experimenting and tweaking, SUPER important: NEVER use the panel for adjusting parameters. Rather, in Lightburn Machine Settings, first use READ, then SAVE to backup the entire parameter set because changing one can change others without you intending or knowing, and they won’t change themselves back.

Change whatever field you intend to and WRITE, but if this isn’t final, on the next iteration always use LOAD to start again from the backup, try the new value(s), then WRITE.

EDIT: Also, always follow up immediately with READ- because Ruida may have a minimum/max for that parameter, which may or may not come from another parameter. If so, Ruida will change your entry. Lightburn will not alert you that your parameter was rejected and corrected. But when you reload, you will see it.

One more point- I’ve seen Ruida making corrections in even worse nonintuitive ways. e.g. I think it was “max acceleration” I tried a huge number. It rejected it for being past the max, but the value wasn’t corrected TO the max. It corrected to a lower value (or maybe just threw out the write and used the old value) and I poked and found I could get it to take a larger value that shows it took with READ, as long as it didn’t exceed this undisclosed maximum value.

I have hosed around with these a lot and never remember the Ruida modifying something else, it wouldn’t surprise me. I know I’ve tried to enter 0 and it set it to 0.1, apparently must have some value.

My cut and acceleration, for the X axes are around 50,000mm/s^2.

As far as I know these are all Chinese designs and not only a language issue, but a thought process issue.

Having programmed for many years, my heart goes out to the lightburn people who actually have to figure out things that make this look simple.

These is lots of information about these out there, but most of it conflict with each other or in actual operation.


This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.