Bed Leveling - Revisited & Detailed

Lots of people have had issues with the bed levelling for 3D printing on the Snapmaker 2.0, most specifically with the 350-series model machines. Being the most popular size of the SM2 machines, as well as having the largest build volume lends to more places and occurrences of the issues appearing, so to a certain degree that is to be expected. Nearly as many people have their suggestions for how to improve it. Out of curiosity, I wanted to know just how much difference these various recommendations really made, so I decided to test them. Here I will highlight some aspects of the machine along with the various methods/changes people have suggested, and we will see what affects they have on the bed leveling, both individually, and at the end as a cumulative whole. By taking you along the journey with me, hopefully it means you won’t have to do it all yourself, and will save you much frustration and time. Your results may vary, but this should at least give a general idea of what can be expected.

First, some background education…

Bed Levelling Procedure
The SM2 firmware is programmed so that for each point in the bed leveling grid, the auto-calibration sequence performs 3 measurements, 1 fast and 2 slow. It then takes the average of all 3 and uses that as its official measurement for that point in the mesh. For the type of mesh used by the Snapmaker’s firmware, this is known as the Bilinear Leveling Grid. The firmware is also programmed to perform some extrapolating calculations to create additional points in the mesh in between the measurement points; a 3x3 measurement grid is turned into a 7x7 grid, a 5x5 into a 13x13, and an 11x11 is turned into a 31x31 grid. This is called the CATMULL ROM Leveling Grid and is what the SM2 is actually using during printing. The machine constantly adjusts the height of the z-axis while printing in order to follow the bed level compensation measurements/calculations.

The Main Issue
Most 350-series machines have a bed level delta (variance between the highest and lowest points) in the 0.5 to 0.4mm range in a cold/un-heated condition. With heating, that can jump to over 1.0mm. As many of us have seen, even a delta of 0.4 can sometimes be too much for the machine firmware and software to compensate for, thus causing issues with the quality and success of 3D prints.

Platform Issues
Per Snapmaker Support, the stock v2 (updated) “Platform” (also known as the “bed frame”) itself has a manufacturing flatness tolerance of 0.15mm across all of the screw down points, so you can expect at least that much bed level variance before even installing the platform on the machine (I have not learned what the tolerance is for the older v1 frame). Some platforms will have less, but if it has more, Support considers it an unacceptable out-of-tolerance manufacturing defect, and you can contact them for a replacement. To help you picture this tolerance, human hair thickness is between 0.017 to 0.181mm, with most being in the 0.05 to 0.09 range.

Inductive Probe and Stock Print Sheet Issues
The stock z-height probe that comes from the factory is an inductive sensor, meaning that it needs a magnetic material for sensing. The stock print sheet (also known as a “build plate”) is a flexible spring steel plate (the magnetic part) with a laminated coating of PEI on both sides (non-magnetic). Because the stock probe senses the spring steel plate in the middle, rather than the actual PEI printing surface on the outside, it can leave a bit to be desired. This means that if the stock print sheet’s PEI begins to delaminate and “bubble” away from the spring steel inner sheet, the inductive probe will not register the height difference between the steel and the PEI. The same is also true if the surface of the PEI is damaged and pushed down or torn off; the sensor will not register the height reduction. This is an issue that has generally been solved with the recommendation to perform a manual bed level calibration, rather than the auto-cal. By using manual bed levelling, we physically measure the distance directly between the nozzle and the print surface, thus removing the errors from the discrepancies that the inductive probe cannot sense. While manual levelling has proven to solve many issues for a lot of people, and is still generally recommended, it is quite time consuming. Also, by way of the manual procedure being dependent on a person’s own sensory perception of how much tension is on the calibration card, and manually moving the z-height of the machine, it introduces human error into the measurements in place of the probe errors, so we have to be careful to minimize that by implementing special techniques in how the manual leveling is done. By doing so, manual leveling can actually be quite a bit more accurate than the auto-calibration.

Grid Size
Here is just a quick comparison of the difference in accuracy that comes with using different grid sizes. From left to right, a 3x3, 5x5, and 11x11 grid of the same machine, untouched between calibrations. The “pits” we see in the 11x11 grid were done to the machine intentionally at the beginning to show how the 3x3 and 5x5 grids didn’t register those anomalies. Currently (as of firmware v1.15.21), the 11x11 grid is only available by using G-code commands through the command console, and only for auto-calibration, so 5x5 is the “gold standard” in most circumstances, and the one I used in my testing.

Now, on to the testing…

The machine used for testing is an all stock Snapmaker 2.0 A350, as purchased new in April 2021, and shipped with the v2 updated platform, and v2 updated single extruder 3D print head. We assembled the machine in accordance with the Quick Start Guide for our machine, and no special techniques, tools, or accessories were used or installed.

Platform/Bed Frame
After installing the platform, the screw-down points showed a flatness delta of 0.659mm. This showed that the base plate and Y-axis linear modules induced quite a bit of warping to the platform once it is attached. These measurements were taken with a calibrated dial indicator mounted to the X-axis linear module slider in place of the print head, and located the same as the print head nozzle would be. Measurement resolution is 0.001 with an accuracy error of ±0.001.

After installing the heated bed and stock print sheet, I performed 6 auto-calibration procedures in quick succession of each other without touching the machine to get the baseline that all other tests would reference to. The machine was assembled cold, and auto-calibrated cold using the 5x5 grid. The average bed level delta came out to 0.443mm on this all stock, unmodified machine. What I noticed most here was that the installation of the heated bed and the print sheet actually removed some of the delta present in the bare platform, as much as 0.211mm, nearly a 3rd of the total.

The stock inductive sensor z-height probe has a measurement resolution of 0.001, but in these 6 baseline tests of the machine, I found the measurements showed a repeatability accuracy error of as much as 0.041mm. I chose to do the remainder of the tests with one modification installed: a capacitance probe instead of the inductive probe. This mod provided with a couple of benefits:

  • In accuracy testing the same as I did for the stock probe, the capacitance probe proved to be slightly more accurate; it showed a repeatability accuracy error of 0.038mm.
  • Being that it is not dependent on using a magnetic surface, and because it has a greater sensing distance range, the capacitance probe can be used with the stock magnetic print sheet, the heated bed itself, and even a glass build plate (assuming the glass is not thicker than the sensing range).

During my modification of the print head with the capacitance probe, to prevent damage while performing operation checks on the new probe, the heated bed was removed and later reinstalled, which I found caused a noticeable change in the bed level delta, which led to an additional test theory: what error is induced by the removal and re-install of the heated bed? I tested that, and will detail it later.

Heated Bed Test
For the first subject test, I performed the bed level calibration using just the heated bed with no print sheet on it so as to remove any error that might be caused by variances in the print sheet. The delta came out to 0.520mm. As stated earlier, in my case the heated bed actually improved the delta from the bare frame.

Heated Bed Removal & Re-Install
The next test involved determining how the removal and re-installation of the heated bed affected the bed level delta. Short story: it’s significant. This turned out to be the single most influential action that takes place. I found the total delta changed by as much as 0.126mm. After this finding, I definitely consider it advisable to avoid having to do this as much as possible.

Print Sheet Removal & Re-Install
Here I tested what change the removal and re-install of the stock print sheet would have. The variance in the delta across all 3 test instances was small enough that it was well within the accuracy error of the probe sensor. Because of this it is insignificant and should be considered as having no effect.

Print Sheet/Build Plate Orientation
Next came testing the orientation of the stock print sheet. Since it did prove to have a small but repeatable affect on the flatness delta, I kept it in mind to see it it would contribute to the cumulative end result. I took the best orientation and continued to use it for subsequent tests.

Heated Bed Screw Torque Amount
The next one was to check how the amount of torque used to tighten the screws contributed and to find the best option. I tested at 2.5inlbs, 5inlbs, and 10inlbs, all done with a calibrated adjustable torque screwdriver. My personal version of “finger-tight” is apparently slightly less than the 2.5inlbs, and 10inlbs is the smallest that most standard torque wrenches will measure. Torque amount and tightening pattern (the next test) were difficult to check due to the variance induced by the removal and re-install of the heated bed each time, as shown previously. I performed each version of the tests 3 times to find which one gave not only the best flatness delta, but also the most consistent delta with the nearest repeatability.
At 2.5inlbs, the delta was less on average, but also fluctuated more with each install, and I found that some of the screws would loosen up rather quickly from the machine’s movement and vibrations. 10inlbs measured as tight enough that it actually induced additional warp, and was the worst of the three. While 5inlbs had a slightly worse flatness delta than 2.5, it proved to be the most consistent and repeatable, and the screws did not loosen up to any degree that I could measure. I consider it to be the best option.

Tightening Pattern
As with torque amount, and for the same reasons, tough to test. I tested 5 different patterns, and tested each one 3 times to obtain an average to determine which was the best and most consistent. Of the 5 patterns, using a star pattern, moving from inside to outside was right in the middle in terms of the average delta compared to the others, but also proved to be the most consistent and repeatable.

Hot vs Cold
The final test for the stock machine was to test the differences between installing the heated bed hot vs cold, as well as performing the auto-calibration hot vs cold. The cold temp was approx. 21C, and the hot temp was 70C. I expect that the results would likely vary if colder or hotter temps are used.
When the machine was assembled cold and calibrated cold, it provided the best delta due to it being in its most stable condition. However, what the numbers of these tests do not show is how when heated for calibration, the entire bed can change height a rather significant and non-uniform amount. In further testing using my calibrated dial indicator, my stock print sheet saw an average swell in height across the whole bed of 0.05, and one point rose 0.145. My glass build plate surface experienced an average change in height across the whole bed of 0.044mm, and a single point on the bed saw a change of 0.110mm. There was also a change to individual points on the glass, just from the heater cycling on/off to maintain temp, of as much as 0.036mm. Oddly, though borosilicate glass is claimed by many to have less thermal conductivity and less thermal expansion, the stock print sheet actually showed itself as being MORE stable than the glass from the heater cycling, with a single point change of only 0.004mm (about 1/10th as much as the glass), so ultimately a negligible change. This may however also be attributed to whether the heater is cycling faster or slower depending on the build plate material’s ability to hold a stable temp.
Regardless of which build plate surface you use, and as nearly all users suggest, it is best to calibrate the machine in the same operating state and ambient environment that it will be used in during printing. Though the delta may not be the best, it will give the most accurate measurements for the machine to compensate for while printing.

Glass Build Plate
My machine currently uses a glass build plate for several reasons, and I thought it would be interesting to see what the differences between it and the stock print sheet are. The biggest claim by many in support of the glass is that it isn’t affected by the heat as much, and so doesn’t warp or bubble like the stock print sheet. However, as we have seen detailed previously, that is not necessarily the case. So then I needed to figure out what it is about the glass that has nearly every user (including myself) swearing that it dramatically improved their prints’ first layers. In my testing regarding the bed level delta, the stock sheet actually performed better than the glass in most cases, except for one…
The glass is not subject to the same kind of damage or “bubbling” that the stock sheet is, and so maintains a smoother transition surface from one point to the next, which makes it easier for the machine to continuously move the z-height to compensate for the delta in the manner that it is designed to. The stock print sheet is prone to what I call “micro-warping/micro-bubbling,” where two measurement points directly adjacent to each other can have a seemingly MASSIVE height difference between each other. In the 5x5 grid, my stock sheet had two immediately adjacent points with a difference of 0.248mm between them (keep in mind that the standard layer height is 0.2mm when using the industry standard 0.4mm nozzle). In my opinion, that’s HUGE! While the glass plate saw the worst at 0.19mm, the 11x11 grid showed that the transition between the two is much more gradual thanks to the glass being a smooth and solid material, instead of a textured and laminate like the stock sheet. To me, this seems to be the biggest benefit to using a glass plate, maybe even the only true benefit, but it is a significant one that should be considered and not overlooked.

Cumulative Outcome and Conclusion
Despite the affected change of the individual tests, the cumulative effect was so little that it is easily, and completely erased by the change that comes from the removal and re-install of the heated bed, even when always using the techniques that produce the most consistent results. The cumulative change to the bed level delta using all the best techniques combined together was small enough that it was well within the designed and advertised accuracy of the machine, 0.04mm. Even so, in order to obtain the most consistent and predictable results over time, I suggest the following…

  • Install the heated bed while heated to a temp typically used during printing
  • Tighten heated bed screws to 5inlbs (finger-tight if tools not available), using a star pattern, from inside to outside
  • Calibrate using a 5x5 calibration grid, while heated to a temp you typically use for printing
  • Avoid removing the heated bed as much as possible

Getting the bed level delta to below 0.4mm will generally require shimming between the platform and heated bed, using a glass build plate, sometimes shimming between the heated bed and the build plate, and/or special software or at least a working knowledge of certain G-code commands in order to read the delta measurements to know where adjustments are needed. Using all of these options on my machine, as well as installing a y-axis support rail mod, and using machinist squares and 1-2-3 blocks for tramming the machine, with significant time investment, I was able to reduce my bed level delta down to 0.09mm. But then, of course, changing machine functions changed that, and I have not been able to get it back there, though I am still below 0.2mm. As long as still being able to get good initial layers on full bed prints, it may not be worth the effort to pursue it further until it can be ensured that the heated bed is able to remain in position.


Good work lots to take in.


what’s the g-code commands for 11x11 please.

In order…

G1029 P11 (sets the grid to 11x11)
G1029 A (activates the auto-calibration sequence)
When the auto-cal sequence appears completed, it is at this point you must lower the head manually and use the calibration card to set the final offset, the same as you would with the 5x5 touchscreen auto-calibration, then…
G1029 S (saves the auto-calibration data to the EEPROM/firmware)

You can also perform this auto-calibration heated if you desire (and is definitely recommended), by entering a heated bed temp before hand.

1 Like

yeah i think im done with the x-y axis and the dual head alignment. Really nice prints with no edge difference to the eye between the two different colors. Can slightly feel an edge probably <.01mm still to tune out from the two different models.

With that being said now time to work on the bed level and the squareness of x to y. This write up will save me allot of time in getting the bed trammed in. I wont be chasing wild geese.

Did you end up shimming in the end or just leaving it at <0.2mm or what is your plan of action?
did you shim between the bed and frame or the frame and axis plates?

I do have shims in place, both between the platform and heated bed, and between the heated bed and build plate. But like I said, it seems a futile effort to work on it much more since installing more shims beneath the heated bed means removing the heated bed, which can completely change the delta. I basically did all my final measurements for shimming just to get a general overview of which side of the plate may need to be raised as compared to the others. I used 3 iterations of measuring and shimming before it was good enough that anything further just became a task of chasing my own tail. Trying to equalize the measurements of individual points is rather fruitless. As a note, if your measurements show that the left or right side is higher/lower than it’s opposite, then I would first start with making sure that the x/z-axes are trammed parallel to the y-axis, as that alone can remove a good bit of the difference.

1 Like

so what was your approach on measuring / documenting perpendicularity of the x and y axis?

I set 1-2-3 blocks on top of the y-rails and then pushed the x-rail down on top of the blocks. This ensured that the x-rail was no more than 0.001in out of perpendicular from one side to the other. I can’t take credit for the idea though; it came from here…Carriage Tolerances - Unusable Over Distance >75mm From Center - #34 by brent113

I only use 1 block on each side instead of 2 like he did.

I still do this every few projects to reset it; I theorize that minute differences in the lead screws (steps, backlash, ect.) of the two z-rails cause them to become ever so slightly de-synced over time, and needing a reset. The MFG way of doing this tramming is to turn the machine power off, and then push the x-rail all the way to the top of the z-rails, making sure that each side is firmly against its physical stop. It’s actually pretty accurate that way, but twist in the base plate causing twist in the y-rails and causing the z-rails to not be perfectly parallel is where the discrepancy in that technique lies. Finding a way to secure the two z-rails parallel to each other would likely fix almost all of that.

I’m working on a thought process to see if what i think about the parallel y-axis will work or not.
(something along the lines of a printed block with set screws along the ends so you can check the space between the y-axis rails.)

I’m really trying to figure out the 90deg relationships horizontally from the y-axis to the x-axis (top down view) since i know i have a very slight out of 90 deg thing going on. But man once you get the x-y dialed this thing can print pretty tight.

Just passed a .1mm print in place calibration check and the 0.05mm i could work loose if i tried.

1 Like

as for your parallel z axis question

what about a small metal strap across the top and use the screw points on the ends of the rails?
move the x axis to the top. measure the spacing of the bolt holes. cut and accurately drill a strip of alum and bolt it in place?

1 Like

I do believe several users have done exactly that, using a piece of angle-iron or angle-aluminum. I haven’t looked into it myself yet, but it does seem that it would fit the bill easily.
As for checking the parallel of the y-axis, I would think you could do the same as with the z-axis. I personally just used a pair of dial calipers and made sure that the ends of the 2 y-rails were the same distance apart as I tightened them down, accurate to within 0.02mm.

That’s awesome about the calibration check. If I remember correctly, isn’t a fitment that tight considered to be “close tolerance” in the world of machining? Don’t think I could ask for much more from a consumer grade machine like this.

What do you make shims out of?

amazon has cheep brass shim stock

this is what i bought

1 Like

There are many things that can be used, it mainly depends on how big of a gap you need to shim. Washers, shim washers, shim stock, and even various forms of metal tape are the most common.

This bed levelling process frightens me. Is there a UTUBE video I can view?

I am not sure what kind of info you are looking for out of a YouTube video. This thread is about the details that affect the bed level, not how to actually perform the bed level calibration sequence. It also assumes the reader has a certain level of mechanical aptitude and Scientific Method troubleshooting ability.

I have not seen any videos that properly explain how to do a manual bed leveling specific to the Snapmaker 2.0, nor how to implement any of the details I have shared in the OP, so you will be able to search the internet just as easily as I can.

1 Like

Agreed this discussion is far beyond the auto leveling setup. I have 1 month and maybe 40 hrs into tuning my snapmaker so far, and I believe I’m about 75% of where I want to be. Yes you can get allot out of it. But you really need to dive in to g-code, mechanical theory, testing procedures, test documentations. Which all aren’t that hard to learn, but its a conscious step to take it to the next level in that sense.

1 Like

Thanks. I did search UTUBE and was surprised there was nothing on manual levelling.
I seems like a really fiddly job which I hope I dont have to try.

I’m used to Prusa and manual levelling isnt required on its small bed.

I also not seen anyone print anything large on the 350 as a result I wonder if it can print large items.
My large print attempt failed.

This is a write-up I did create for the proper manual bed leveling procedure, just no video. Once you have done it the first time, it’s really quite easy to get the hang of, just time consuming.
SM2 Manual Bed Level Heated Calibration.docx (71.7 KB)

I have completed several full bed prints successfully using this procedure, but only after having put in the work to get my bed level delta below 0.1mm.

HI Mxbrnr

That info will help as a first step what I was looking for was more info about how the shimming procedure is done.
Could U possibly guide me it that process?