Vibration Compensation Firmware Open Beta for 2.0 Series (A/AT/F Models)

Hello Makers,

We are thrilled to announce the latest update regarding the vibration compensation beta firmware for the 2.0 series! It is now available for extensive Open Beta testing. :mega: Our goal is to gather feedback from a hundred users to ensure a seamless integration of this feature into the mainline of Snapmaker 2.0 firmware. Your assistance in this process is highly appreciated, and rewards await your valuable input.

Compatibility

Snapmaker 2.0 A/AT/F models

Before You Start

When upgrading from the regular firmware to this version, it is necessary to reconfigure the Quick Swap Kit and Bracing Kit installation status and recalibrate the 3D printing bed leveling and laser function. :warning: Failure to do so will result in operational issues with the machine.

Download

[Update: 2024-04-28] Snapmaker2_V2.2.0

Changelog

  • This firmware beta version adds support for Quick Swap Kit, Bracing Kit, and all features present in the current stable version v1.19.0.

  • The vibration compensation in this version is achieved by incorporating the FT motion feature from Marlin 2.0, known for its relatively low resource consumption. The code is open-source on Github: GitHub - Snapmaker/Snapmaker2-Controller at ft-shaper

  • For parameter configuration and vibration compensation frequency calibration, refer to the documentation: Fixed-Time Motion | Marlin Firmware

Specs :star_struck:

For 2.0 Models with 20mm-lead XY axes:

  • 25% raised max. printing speed: 100 mm/s → 125 mm/s

  • 250% raised max. acceleration: 1000 mm/s2 → 3500 mm/s2

For 2.0 Models with 8mm-lead XY axes:

  • 20% raised max. printing speed: 100 mm/s → 120 mm/s

  • 150% raised max. acceleration: 1000 mm/s2 → 2500 mm/s2

Feedback Submission & Rewards :bulb:

We greatly value feedback and testing contributions from all users. Our objective is to gather feedback from a hundred users to ensure a smooth integration of this feature into the Snapmaker 2.0 firmware.

  1. Feel free to share your ongoing test results and other findings in this thread.

  2. Once you have finished a few test prints, please share your testing feedback in this survey and get a $10/€10 reward for your input. Your input will assist us in determining the public release plan for the vibration compensation firmware for the 2.0 series. Survey Deadline: 2024-06-20

How to Test and Contribute

Steps:

  1. Download the vibration compensation beta firmware shared above in this post.

  2. Install the beta firmware.

  3. Reconfigure the Quick Swap Kit and Bracing Kit installation status and recalibrate the 3D printing bed leveling and laser function.

  4. Print one provided Gcode for the quick test below. Be sure to choose the right Gcode for the related machine model and addon setup status.

  5. If the quick test passes, continue to slice and test with more models following the suggestions below.

  6. If the quick test fails, conduct Input Shaper Tuning:

  • Before you start, we would like to let you know that we implemented a default frequency of 35Hz in the code. However, this may not be universally applicable, given the significant variations in machine statuses. Therefore, we suggest you tune Input Shaping to find the optimal frequency for your machine.

  • Download the provided Gcode files for Input Shaping Tuning for your machine. Print it with PLA.

ringing_tower_A150_0.2mm_100mmps.gcode (536.0 KB)
ringing_tower_A&AT&F250_0.2mm_100mmps.gcode (544.1 KB)
ringing_tower_A&AT&F350_0.2mm_100mmps.gcode (561.3 KB)

  • Analyze the result. Measure the height of the best-looking/least-ringing layer.

  • To get the frequency Hz value for a given Z height, use the formula 15 + 45 * (z / 0.2 - 2) / 297.

  • For example: The least X ringing appears at a height of 15mm. So we calculate 15 + 45 * (15 / 0.2 - 2) / 297 and get a result of 26.06Hz.

  • Send the command M493 A26.06 to apply the frequency to X motion.

  • For Y you would use M493 B2 6.06.

  • Send M493 S14 P1 K0.0008 to restore the type of input shaper and the default factor for pressure advance. (Optional)

  • Send M500 to save the configuration.

Gcode Files for Quick Test:

Below are some Gcode files that support quick test. Feel free to download and print these test models after installing the vibration compensation beta firmware V2.2.0 and completing the reconfiguration and bed leveling calibration of your machine. Additionally, we encourage you to test print your own models, including large-sized models with lengthy print times. When printing your models, consider the following recommended speed settings:

  • Wall speed: 60 - 100 mm/s

  • Infill speed: 80 - 120 mm/s

Test Model - 3DBenchy

A350T/F350 with Dual Extrusion 3D Printing Module and Bracing Kit

G-code File for PLA:
3dbenchy_AT&F350_dual_extruder.gcode (2.3 MB)

Printing Time: 32min 31s (excl. nozzle and bed heating time)

Printing Parameters:

  • Layer Height: 0.24 mm

  • Wall Speed: 100 mm/s, Acceleration: 3500 mm/s^2

  • Overhand Speed: 100%, Acceleration: 3500 mm/s^2

  • Infill Speed: 120 mm/s, Acceleration: 2500 mm/s^2

  • Travel Speed: 125 mm/s, Acceleration: 2500 mm/s^2

A350 with Dual Extrusion 3D Printing Module and Bracing Kit

G-code File for PLA:
3dbenchy_A350_dual_extruder.gcode (2.3 MB)

Printing Time: 35min 57s (excl. nozzle and bed heating time)

Printing Parameters:

  • Layer Height: 0.24 mm

  • Wall Speed: 100 mm/s, Acceleration: 2500 mm/s^2

  • Overhand Speed: 100%, Acceleration: 2500 mm/s^2

  • Infill Speed: 110 mm/s, Acceleration: 2000 mm/s^2

  • Travel Speed: 120 mm/s, Acceleration: 2000 mm/s^2

A350 with Single Extrusion 3D Printing Module and Bracing Kit

G-code File for PLA:
3dbenchy_A350_single_extruder.gcode (2.1 MB)

Printing Time: 44min 43s (excl. nozzle and bed heating time)

Printing Parameters:

  • Layer Height: 0.24 mm

  • Outer Wall Speed: 75 mm/s, Acceleration: 2500 mm/s^2

  • Inner Wall Speed: 110 mm/s, Acceleration: 2500 mm/s^2

  • Overhanging Wall Speed: 50%,Overhanging Wall Angle: 30°, Acceleration: 2500 mm/s^2

  • Infill Speed: 120 mm/s, Acceleration:2500 mm/s^2

  • Top/Bottom Speed: 80 mm/s, Acceleration:2500 mm/s^2

  • Travel Speed:120 mm/s, Acceleration:2500 mm/s^2

Test Model - Dual Color Shark

A350T/F350 with Dual Extrusion 3D Printing Module and Bracing Kit

G-code File for PLA:
shark_AT&F350_dual_extruder.gcode (6.3 MB)

Printing Time: 2h 4min

Printing Parameters:

  • Layer Height: 0.24 mm

  • Outer Wall Speed: 75 mm/s, Default acceleration

  • Inner Wall Speed: 120 mm/s, Default acceleration

  • Infill Speed: 120 mm/s, Default acceleration

  • Overhanging Wall Speed: 50%, Overhanging Wall Angle: 30°, Default acceleration

  • Top/Bottom Speed: 60 mm/s, Default acceleration

  • Travel Speed: 120 mm/s, Default acceleration

Disable and Enable Vibration Compensation Feature

You can disable and enable the status of the vibration compensation feature by sending a few Gcode commands when running the beta firmware v2.2.0. Connect your machine with Luban. Send the following Gcode commands in Luban - Workspace - console.

Disable Vibration Compensation:

M493 S0

M500

M1999

Enable Vibration Compensation:

After installing beta firmware v2.2.0 on your Snapmaker 2.0 machine, the vibration compensation feature is enabled by default. If you had previously disabled it and wish to re-enable it, use the following commands to switch the vibration compensation feature from a disabled to an enabled status.

M493 S14

M500

M1999

Note: This command allows you to enable the vibration compensation and choose EI as your input shaper. Provided below is a comprehensive list of all available input shapers.

  • S0: Standard Motion. This means disabling the vibration compensation feature.

  • S1: Fixed-Time Motion

  • S10: ZV Input Shaping

  • S11: ZVD Input Shaping

  • S12: ZVDD Input Shaping

  • S13: ZVDDD Input Shaping

  • S14: EI Input Shaping

  • S15: 2HEI Input Shaping

  • S16: 3HEI Input Shaping

  • S17: MZV Input Shaping

Notes

  1. When there’s quick short-distance movement in a zigzag pattern, it’s suggested to reduce acceleration or speed to avoid missteps.

  2. For features in the model that require fast printing, slightly lower acceleration. For features requiring high acceleration, slightly decrease the target speed. In essence: high target speed should be combined with lower acceleration, and lower target speed should be paired with higher acceleration.

  3. When using the Single Extrusion 3D Printing Module, it is recommended to consider the cooling direction. When slicing, modify the orientation of the model’s overhang face to align with the air outlet for cooling from one side with a single extruder.

  4. If you want to return to the current stable firmware, download the latest version here .

Previous Thread

This thread discusses the latest updates on the vibration compensation firmware for the 2.0 series. For information on the previous thread, please refer to:

6 Likes

@Hauke @xchrisd @nweolu @ViperZ @Sehested @DrSkiba @sjoaosilva @dandyfop @Marius87bv @Mayco @jblane001 @reevan8 @Matrixx200x @Edboi @bonfireman @CSOOPY35 @nfmaas @John_Petrucci78 @Slynold @acueto @jlropes @CNC-Maker @Snapjehet @WiesiDeluxe @gpt1plon

Hi everyone,

Thank you for your valuable feedback on the previous thread regarding the vibration compensation firmware for the 2.0 series. I am excited to announce that we are now moving to the next stage: an extensive Open Beta testing phase. Please refer to the Changelog and Specs sections for the latest updates and download the newest beta firmware version from this new thread.

Feel free to continue sharing your feedback and test results in this thread. Furthermore, after completing your testing with the Open Beta firmware version, we would greatly appreciate it if you could fill out the survey to provide us with your feedback. More information can be found in the post above. Once again, thank you for your support in advancing this project.

4 Likes

Hello Snapmaker Team.

I have Beta v2.2.0 installed on an F350 2.0 with 8-8 Z axes and 8-20 XY axes.
After the update the axes became very, very loud. It sounds like there’s a handful of sand in the gears.

A G0 X320 F6000 and G0 X0 F6000 are not driven continuously either. You can get the feeling that the axle stops every 100mm.

A G28 has become very slow, estimated at 50-100mm/s.

The extruder doesn’t sound very healthy either.

An M502 and M500 were unsuccessful.

M203 X120 Y120 Z40 E25
M201 X3000 Y3000

So somehow the programming back and front doesn’t fit.

I have now downgraded to v1.19.0 and everything is working fine again.

PS:
Some time ago I tested beta v2.1.0. This was surprisingly quieter than v1.19.0 and the one before it. However, the beta didn’t run perfectly either. Steps were continually lost in the X and Y axes, causing the printouts to become crooked and crooked.

4 Likes

Hey Jade (and team!), thanks for getting the latest beta into our hands, I certainly have been looking forward to it.

Sadly, not good news on my testing. I’ve just had a go with the Beta 2.2.0 firmware on my F350, 20-lead XY axis, single extruder and no other upgrades. I can confirm the findings of @snapsch above.

During the first test print using the supplied benchy, the axis movements (particularly the X axis) are very noisy - grinding even. Definitely much louder than when I was running v.1.19.0.

I’m assuming that the Fixed-Time Motion has been already activated in the firmware (edit: just checked with an M493 command, it is - EI input shaping with 35Hz frequency on both X and Y). Does this require further refinement and tuning after loading the beta firmware for specific rails?

@snapsch @DrSkiba Thank you very much for the quick feedback. We are checking this issue and we will reply soon.

Hello Jade.

I came across the M493 S14 parameter via Facebook.
After an update to v2.2.0 this is not available via M503 in the LOG.
So I ran an M493 S14 and an M500.

Then I tried to print a benchy again.
The axes are significantly louder than under v1.19.0.
If the axes travel a greater distance, you have the feeling that they would stop briefly every 50-60mm.

Unfortunately I had to stop printing after 8-10mm height.
Every few layers the printer would take a stop for 10-30 seconds of printing.

I didn’t change anything in the printer parameters.
I used the same values ​​here, the same Gcode, as under v1.19.0.
90mm/s outsides and walls, 100-115mm/s infill and others.

i hope i can help you with this documentations.
best regards

PS: i have two videos from the print (91MB+920MB).
Unfortunately, the noises of the axles don’t really come through in the videos.

@snapsch @DrSkiba We experimented with various frequency settings and successfully replicated the unusually loud noise during our testing. This suggests that an incorrect frequency setting might be the cause of the loud noise issue. Tomorrow, we will share a guide on adjusting the frequency settings in this thread. Kindly await the guide and retest afterward. We hope that this solution will resolve the issue with your machines.

Please note that previously, we discovered that a default frequency setting could function well across all machines in our lab. Consequently, we implemented a default frequency of 35Hz in the code. However, it appears that this may not be universally applicable, given the significant variations in machine statuses.

@snapsch In response to the feedback regarding the abnormal stop/pause behavior, we were unable to reproduce this problem on our end. Could you share the G-code file with us here or through a support ticket? This information will assist us in troubleshooting the issue. Thank you.

2 Likes

Hi Jade,

That does support my findings too. After performing a fixed-time motion calibration, my frequencies seem to be happier at ~28Hz on X and ~31Hz on Y. Performing more prints today and I’ll report back with my findings soon.

There still seems to be a loud squeek/crunch when the extruder makes sharp turns, so I think I’m going to dial back that 3500 acceleration speed on the new firmware too.

1 Like

Hello Jade.

Under this link you find the GCODE from the 3DBenchy.
It’s a normal print gcode with >1h printtime, it’s not a speedbenchy!

best regards

Here’s an update a few Benchies later. The squeek/crunch I experienced with sharp turns seem entirely related to the M204 acceleration settings. I’ve since reduced this from 3500mm/s^2 to 3000mm/s^2 and it seems and sounds healthier on my F350 at least. There are some outstanding metallic reverberation sounds during fast movements when the printer performs travel jointly on X and Y, so I’m going to monitor and may reduce further to 2500mm/s^2 to try and eliminate the strained travel noises completely.

Printing with applying the new frequencies I posted earlier, it’s improved the initial axis noises experienced. I’ve still to print at slower speeds since correcting the frequencies for a fair 1.19.0 comparison, so I’ll reserve judgement on whether it’s the same/quieter.

Only bit of feedback at this point other than the above is that you may need to update the firmware’s default stored settings from applying M502. This seems to apply older values back to the printer (1000mm/s acceleration and possibly more).

I’m currently tweaking my Cura profiles to try and optimise for the new faster speeds, but once I’ve done some more testing, I’ll complete the feedback form. :slight_smile:

For comparison, these two Benchies were printed in 31 and 42 minutes respectively on an A350, single extruder print head, no Bracing Kit (SBR16 support rail mod instead), and the standard 1.19.0 firmware. The 31 minute Benchy was printed with the following parameters

  • Layer Height: 0.25 mm
  • Line Width: 0.5 mm
  • Infill and Outer/Inner Wall Speed: 80 mm/s, Acceleration: 3000 mm/s^2
  • Overhanging Wall Speed: 100%, Acceleration: 3000 mm/s^2
  • Top/Bottom Speed: 80 mm/s, Acceleration:3000 mm/s^2
  • Travel Speed:120 mm/s, Acceleration:3000 mm/s^2

No discernible vibrations in the prints.

3 Likes

Here are two benchies of my own with the new beta firmware. On the left is the Luban generated one from the original post by Jade. The right hand one is printed from Cura.

Small 90 degree turns around the door frame and portholes look to be a bit smoothed out/rounded, so I might tweak the linear advance and see if I can get that worked out.

@DrSkiba @snapsch @Mxbrnr @nweolu Please learn the updates and the Input Shaping Tuning guide above. I’ve added this information in the original post as well.

2 Likes

Thanks @Jade, that was essentially what I performed yesterday. After some more tinkering with the frequencies, I’m at a place where I’m satisfied with the high-speed prints.

An important bit to note for anyone else exploring the beta that’s experienced edges or small details that look overly smooth is to revisit the ringing tower again. When looking at the area of minimal ringing, look at the other features to assess quality too. I found the small gap on the left of the ringing tower test to be beneficial for tuning out the smoothness issues I experienced, choosing an area where the gap is small and ringing is minimal will lead to much better prints. Here’s an example of what overly smooth edges will look like (bad calibration to the left, good calibration to the right - pay particular attention to the door frame).

As I mentioned though, getting really good results now with my Cura profile I’ve been tweaking over the past couple days. Removing the heat-up time, I’m getting one excellent quality Benchy in under 40 minutes now. The most difficult thing I would say with the high-speed printing and trying to achieve great quality is trying to cope with the part cooling at speeds of 120mm. Printing overhangs on the side with the fan duct for Snapmaker 2.0 single extruders is a must, otherwise they’ll look awful.

Personally, all this speed is making me look at upgrading the part cooling solution on the single extruder. I think that’ll be my next project for a bit before I tackle any larger prints. :slight_smile:

2 Likes

I just finished a few prints with, what I would consider good success. A350 with original rails. Dual extruder, quick swap but no bracing (is on order!) All printed quite good in PETG (I adjusted the bed and extrusion temp in the GCODE to 75 and 235 )

However… After printing the ringing thingy, I now got an error about 1/3 in into my 2nd benchy. Printer stopped / lights off … Hmmm.

My Octoprint that was connected (which I didn’t realize reported an error:
State: Offline after error
Thermal Runaway, system stopped! Heater_ID: bed - Not handle exception: BED TEMP RUNAWAY

Never seen before… Power off and power on… Restarted the benchy…

Now I notice that the bed is not able to keep the temp at 75c but hovers around 68… While I did see it go up to 75 during warm up! (Octaprint is NOT connected!)

Is there an issue with power draw from the PSU? Not enough current to heat due to increased power draw by the rails?

It’s printing so I’ll let it finish but then I’ll try a regular PLA print and see what happens.

Any suggestions Jade & team?

Thanks!

Edit: Benchy completed while bed temperature never - during printing - never got to set temp. (set 75 but hovered around 68). After printing I set the bed temp to 75 and it’s been stable on 74/75 for 30 min. Issue seems printing related?

Had more time with the beta and more tweaking with Cura. I’m now able to print an excellent quality Benchy in ~25 min (excluding heat up time) with the F350. This beta firmware is a beast, it has so much potential.

Here’s my Cura profile attached:
F350_Beta_Fast.zip (843 Bytes)

I’m curious if anyone else trying the beta can improve it more. :slight_smile:

3 Likes

Hi @Hammer , please verify if this issue occurs when the vibration compensation feature is disabled. You can toggle the status of the vibration compensation feature by sending specific Gcode commands while using the beta firmware v2.2.0, without having to revert to the previous firmware version. Looking forward to the update on this issue.

1 Like

Hi @Jade . Thanks for all your efforts.

I have noticed that the manual bed leveling on the 250AT does not function properly with this firmware.
First, the head does not move down when it starts. So if I try to take a measurement, I have to lower it down by 0.5mm.

Second, regardless of the number of points set, the measurement point would reach 9 points and could not be completed.