SM2 Bed Leveling 101

I’ve been working on the problems with SM2’s bed leveling issues for a while now.
I’ve created some Google Sheets that can help with the process. The “Introduction” page will give some background. If you have any problems at all, please ask. I’m open to any feedback or suggestions. With the link below you can copy the Sheets to your own Google sheet or do a “File:Download” menu selection to save it to your local machine. Maybe this will only be useful for a short while because Snapmaker will fix their AutoLevel process and negate the usefulness of these sheets. But until then, enjoy.

I don’t think these are necessary or useful with a Snapmaker 1. I gave my SM1 to my son-in-law so I haven’t tried them on it.


I like your spreadsheet… but in the instructions there is just stuff I don’t know how to do.

“2) Enter values in top left matrix from “M420V” command on Console”? How?

I tried running your level hot gcode and it just stopped on the first point and stayed there and didn’t move…?

I stopped there…

I really appreciate the efforts you’ve gone to try and get his thing level. I’ve had serious headaches… and I wish I knew how to do the things… I guess I need to take an 050 course, instead of 101. :cowboy_hat_face:

You need to have a computer hooked up to the Snapmaker via a USB cable. The Snapmaker 2 comes with a cable to use. It has a small USB connection on one end that goes to the Controller. The other end goes to the computer.
Then from the “Console” area in the Luban application, (it looks like a terminal window) you can connect to the Snapmaker and talk to it with G & M commands. You first click on the “Serial Port” button. Then click on the refresh button next to the “Choose a port” entry. You should select the Serial port, not bluetooth. Then click on the “Open” button. If succesful you are then talking to the Snapmaker. To send commands you click on the bottom line of the Console window and you can enter G & M commands there.

When you execute a M420V command it will print out the values in the leveling mesh (or matrix as I refer to it) and you have to manually type those into the Leveling 101 sheet.

When you run the Check Level Hot.gcode file it will stop at the first point and wait untill the bed gets up to temperature. You can watch on the Touch Screen and see the temperature reading slowly go up. It takes a minute and a half or so. You should be putting the check level card under each point to give you feedback as to whether the nozzle is too close, too far or just right. I use the print out to record whether or not each location is + or - or check for just right. Then I use that information to put into the TWEAK macro to adjust the mesh values.

Thanks for your feedback, I’ll try to add some more instructions to fill in the gap.


Thanks for all your work on this @Tone

1 Like

First of all I need to thank you for your work @Tone

I also have an A250 and I’m trying to calibrate the bed with a 5x5 matrix. On your spreadsheet i can’t go trough the point 5 with the “Check Level Hot 5x5.gcode”. I tried running the gcode on the machine but how do i get the values to put in the 2nd matrix to do before the tweak code? Maybe I’m missing some parts.

Using the Check Level file just lets you see if the points are good or not. I write on the print out whether the point is +, -, or check, just right. Then I use a macro to adjust those points that need it. That process alone will get you a good mesh. Then you can print out the mesh with M420V, record those values in the second matrix. That gives you the difference between an AutoLevel and what it should be. From then on you can do an AutoLevel followed by the TWEAK macro. Or you can just run the Check Level gcode and manually tweak the grid points that need it.

I enter M420V, but I do not get a 3x3 matrix. I get a 7x7 matrix? I don’t know why, I’m using the 3x3… What numbers go where?

NVM I see above… there is a smaller matrix…

I am confused about what this matrix represents. Is it “top down”, like 0,0 is the top left corner of the bed? Or is it [0,0] as on the snapmaker bed? If so, what is ‘i’ and what is ‘j’?

The software interpolates the 7x7 from the 3x3. The M420v command displays both. If you examine them close you see that the 0,0 is the same on both, the 0,1 = the 0,3 on the 7x7 etc. It’s a way to have more resolution. But that doesn’t necessarily match what your bed really is. I corresponds to X, J to Y. The way the matrix displays does NOT match the physical layout unless you imagine you’re looking up from underneath the bed. The top row corresponds to the front most location on the bed.
I0 J0 is close to x0 y0, that’s easy enough to remember.

Something I noticed while doing your script… The paper would get considerably tighter when the board moved in the Y… Considerably moment for so far from the screws. Maybe this is also causing problems.

Yes, the test card getting tighter means that point is too low, the Z needs to be incremented up at that point. You should just barely feel any resistance.

Thanks for the list :+1:

Great job here @Tone

Without your perseverance and guidance, I don’t think I would have been able to achieve a good first layer. I’m going through a very slow method of printing out larger and larger squares with 1st layer infilled. It really helps visualise the mesh matrix, just very time consuming. However, lockdown at least has given me the time for it.

I’ll do a post soon as it’s interesting and very visual. I’m nearly at the point of a good 16x16cm first layer. Having worked on 8x8 then 12x12 first. However, certainly for me, the amount of effort required to level the SM A350 is far too high.

1 Like

I’m really sorry to bother you @Tone but i really can’t get out of the procedure. I’ve read all the posts few times trying to find an answer before asking again but i didn’t figured out how to do on my own.
Here’s how I did:

  1. Disabled autolevel from touchscreen
  2. I run the macro Auto Level from Console for the 5x5 calibration
  3. I manually did a manual noozle level after the end of the Macro
  4. I run the macro FINISH and i got the mesh to put in the first matrix
  5. I run the “Check Level Hot 5x5.gcode” from my Printer and some points needed to get closer to the bed
  6. Now here how do I get the second mesh with values to put in the second matrix for the Tweak procedure? Is another gcode that i have to run on the printer or should I modify the second mesh manually? I really can’t understand the procedure.
    Sorry for maybe asking stupid things.

I just need to get this off my chest.

I am pretty pissed about the SM2 350.
There are serious flaws endemic in this machine. Why did the SM team not come to us, the DANG SNAPMAKER USERS ON THE FORUM for a beta launch?! Why are we dealing with this now? These problems should have been caught and addressed in the beta, if not before!

Filament sensor problems - SM solution, I turn off my filament sensor.
auto calibration - It just doesn’t work.
Bed increase - Okay, workable area is better than SM!.. but it’s sure not 350.

At this point, the 350 is going to require serious hardware changes to have anything close to full bed use. I mean the bed is literally rising and falling when it moves in the Y. You can’t level out something like that. I’m not SUPER INTERESTED at this point in cludging together, nor designing some BIZZARE SKATE PLATE.

Don’t be sorry for asking questions, these are points I need better documentation on so it helps to ask.

After running “Check Level Hot 5x5.gcode” did you mark down on paper which points need adjusting?
You need to individually adjust those point either using “M421 InJn Qz” commands in the console input or creating a macro that adjusts all of them in one pass. Then you do another M420V command to get the new matrix values. Those go into the second matrix on the Google Sheet. You could, like you suggested, make a copy of the 1st matrix into the second and make adjustments to it there. The TWEAK matrix just gives you a difference between the two that is useful to run after doing steps 1-4 as you stated on future times.

What I really want to do is create my own manual level with Gcode to run after steps 1-4 of your list. OR, if Snapmaker would just lets us do the level with the bed heat on it might negate the need for all this complexity.

I understand your frustration. I can only speculate but I don’t think they realized there was a problem. If you happen to get a machine that has a pretty flat and level bed then the problems don’t appear. I’ve seen a number of people’s prints to know that many people don’t have this problem. Lucky them.

I have to agree with you that they should have done a Beta release to users willing to help flush out the bugs. Hind site is always 20/20.

I am sorry for you guys, i have a stupid question.- May it helps to tighten the screws like a cross.
I am not sure if you could understand this, like if you change a wheel of a car, tight it crosswise and maybe slow by slow.- i would it try.

yah I’ve done this. it was one of the first things I tried after I noticed heat was causing warpage.

Yep also tried a crossing pattern, a quasi random pattern and several others to include selectively loosening/tightening/removing screws. None of my efforts has resulted in a large portion of the bed being usable.