Snapmaker A350 Platform Not Flat - The Nuclear Option

Hey Folks! A storytime thread here. I’ve shared many of your frustrations with both the Gen1 and Gen2 build platforms being warped enough to mess up your prints - beyond the ability for calibration and leveling to correct. I’ve struggled with first layer issues, wrecked print sheets, inability to use the whole bed - generally not being able to trust the printer to deliver consistent results without hours of tuning ahead of time.

My Snapmaker A350 was a kickstarter unit, and as such has seen its share of upgrades… none of which really addressed the shortcomings in first layer. I bought upgraded linear modules and power supply, the improved square platform, quick swap, bracing, the improved single extruder, then the dual extruder. I’ve calibrated and adjusted in every way possible. I’ve clipped on glass beds, engineering plates, bought 3-2-1 blocks and dial indicators… everything you can do.

I’ve done every possible support suggestion, read every post, and have thrown money and time at this ad nauseum. I’ve had other brands of printers in the shopping cart SO MANY TIMES, and it’s been really hard to not press the button - just to get an easy, consistent, simple print done without hassle. Recently, and finally, I did something that made a huge difference.

The root cause of almost everything has been that the bed wasn’t flat, and/or the X axis wasn’t trammed correctly, or both. I had print sheets that would measure over 2.5mm in deviation from highest to lowest point. This is measured though both leveling data, and by using a dial indicator on a properly trammed machine. So that shifts attention to the underlying platform.

I have two platforms - the original spider-shaped platform, and the improved square platform. Measuring each individual screw boss’s height against a properly trammed machine, I observed a total deviation of 0.75mm in height for the improved platform, and 1.35mm (!!!) for the original platform. That’s bad, but it can’t cause 2mm+ of deviation, though, so what gives?

It turns out that the screw bosses themselves, the top surfaces, are not flat. Many of them are tilted. I measured over 0.1mm difference on opposite sides of the same screw bosses - merely 8mm away. When you tighten the bed down on these, even properly torqued (5 in lbs, star pattern) it puts torque on the bed and makes rises and dips between the screws - beyond the inconsistencies in the platform itself.

The solution, and the only thing that really helped through all this: Use the CNC module to machine the screw bosses level and to uniform height. Scary? Yes. But you’re machining on a $30 part that you can’t use anyway. And it’s not that difficult.

I’ll do a writeup of the full process in thread below. It’s geeky but fun, and the results have been amazing.

First, we need to take some measurements to see how bad it is. Your “M420 V” bed mesh leveling data can give you a rough idea, but it’s subject to a lot of variables. Your best bet is to measure it yourself. But that requires a bit of machine tuning first.

First, get yourself 1 or 2 sets of 3-2-1 blocks from Amazon (~$20) to tram your X axis. You can do it with 1 set; two makes it easier. There are threads on this, but in short:

  • Tramming is the process of making your X axis as parallel as possible to the frame of the machine.
  • To do this, first remove the platform to expose the tops of the Y axis modules. If you have quick swap, it’s easier.
  • Next, lightly loosen the screws attaching the X axis module to the Z axis modules. If you have bracing kit on, just loosen the long screws that go into the X Axis.
  • Place the 3-2-1 blocks on top of the Y axis modules. Lower the Z-height to the point where you make light contact with one or both blocks.
  • The goal is to have exact equal height on both sides of the X axis module relative to the tops of the Y axis modules. Tilt the X axis as necessary to achieve that, then tighten the screws.
  • Raise and lower Z to doublecheck - I use a calibration card on top of the blocks for fine tuning.

Once done, you can now better trust your machine to make measurements for you. On to collecting data.

I recommend installing the CNC toolhead and 3.175mm single flute flat end mill bit for this part. This is what we’ll be using later for machining, so using it for measuring makes sense. If you have both quick swap and bracing kits installed, you will need to take the quick swap off of the toolhead to reach all 22 screw bosses.

  • Draw up a quick worksheet with the 22 screw positions on it. You’ll be writing a Z-height next to each one of them.
  • Go into the workspace terminal in Luban and issue an “M420 S0” command to disable bed mesh compensation. If you skip this step, you’re gonna have a bad time.
  • Jog the machine to just above the edge of the first screw boss - I like to start with the top left one. Gently lower the bit down to just touch a calibration card placed on top of the screw boss. I look for light resistance when pulling it out. Then record the number listed on your touchscreen for the “Machine Coordinates” Z height. If it’s too loose at one 0.1 increment, and too tight at the other, I split the difference. (Example: loose at 58.1, too tight at 58.0 - write down 58.05)
  • Repeat for all 22 bosses. If you crash the bit into any of them by not watching your jog increments, you’ve probably shifted something and you get to start over. Don’t ask me how I know.

Congrats, you just measured your platform deviations. Find the highest number, and the lowest, and mark them. The difference between those two numbers is how messed up your bed is. Snapmaker claims their tolerance is 0.15mm. My two platforms were .75mm and 1.35mm :grin:

If you want to check the left side vs the right side of a few bosses for fun, you can - I found 0.1mm+ differences on the unlevel tops of individual screw holes. It really doesn’t matter because we’re about to grind them all flat anyway, but it you want something to shake your head at, go ahead!

Next - scary stuff, we’re gonna edit some Gcode and grind :star_struck:

Platform_Surfacing_0.75mm.cnc (3.1 KB)

Platform_Surfacing_1.4mm.cnc (3.3 KB)

Here’s two gcode (or rather, .cnc) files that do this job in a very safe and conservative manner - they cut down one screw boss at a time, to a uniform height. The idea is to reduce all the screw bosses to the height of the lowest one, or a tad lower. As a result, the shortest boss will have almost nothing cut, while the tallest boss will get cut in each pass. So a little “air cutting” is expected.

You simply set your X and Y work origin to the center of an individual screw boss to mill, using the height of the highest screw boss as your Z-origin. You keep that Z-origin consistent across all 22 screw bosses - never change it. Then run the file to cut whatever’s under it down to the height of the lowest screw boss.

The “0.75mm” file cuts a 15mmx15mm square centered on your work origin, in five 0.15 passes down 0.75mm total. Worked great on my platform, but was a bit slow because of the extra air cuts for leadin and leadout, and the shallow passes.

The “1.4mm” file was an improvement of that, with extra depth for the really bad platform. I dropped the square down to 11mm, since I was able to center the bit on the screw bosses really reliably - saves time not cutting all that extra air. It cuts 7 passes of 0.2mm each for a total depth of 1.4mm. This is the maximum depth I’d want to cut on either platform; the bosses are only 1.5-1.8mm above the frame itself.

You’ll need to modify one of these files to add/remove passes to get the depth you need for your platform. The structure is super simple, so it’s just a matter of cut/copy/paste.

Once you have your file ready, Here are the steps to process all 22 screw bosses - you do the exact same thing for each one:

  • Set Z-origin to height of first boss as recorded in data collection - and keep it there throughout.
  • Set XY origin to center of a screw boss
  • Run it and watch the tiny chips fly.
  • Hit “go to work origin” afterward because snapmaker firmware homes Z at the end of a job, annoying
  • Jog over to center of next screw boss, set new XY origin, and repeat

If you want a safe test run, just set your Z origin 10mm above where you’d actually set it, and let it cut in the air.

Hope this is helpful! After doing this, both platforms lie exceptionally flat and my bed mesh calibration works SO much better. Of course, you still have to torque properly and all that (preheat for 15+ minutes at 60 deg C, then tighten to 5 in lbs). Then do leveling.

Which brings up a painful lesson learned: Autoleveling, even with the dual extruder’s contact leveling, is horribly unreliable. In my case, the autolevel process consistently picks up over 1mm of deviation that isn’t actually there. Then it tries to compensate for it with an inaccurate mesh, making the problem worse. Take the time and do manual leveling with your calibration card. You only have to redo it when changing tools, and it’s worth it.

Feel free to tweak those .CNC files to match the depth you need, it’s pretty simple. Let me know how yours turns out!

And - a further update. As a conservative step, before I started grinding on my platforms, I ordered a new one from Snapmaker for $30. I received it and measured - it was 1.1mm off, in a different pattern than the original. For fun, I dismounted and rotated it 180 degrees to make sure I wasn’t experiencing other machine geometry issues - nope! Very similar measurements in the other direction. And so, I just ground another platform flat, verified within .01mm after the process. Happy grinding!

I’ve been having first layer issues with the dual extruder. I placed a glass bed on, secured with binder clips at the back of the bed, but noticed at the front of the bed the glass plate was approximately 1/16" above the bed. I removed the glass plate, loosened all bed mounting screws, and retightened them to roughly 1 in-lbs of torque. After reinstalling the glass plate and putting the binder clips back on the back, the glass plate was flat across the front of the bed. I removed the glass plate and put on the standard print sheet. I performed an auto-level, Z-height, and achieved a fairly consistent first layer on my dual-extruder for the first time.

This may help explain why some users experience dual-extruder first layer issues while others do not.

Thank you very much for your writeup! I was considering doing the same for years, but never got around doing that - nice to see that you had success!

Adding to this: I also have the kickstarter SM2 with the printbed being bumpy like hell. I got along with carefull 11x11 calibration, but it was annoying. When I received the Quick Swap Kit with the new platform, I had my hopes high it would improve, but it only marginally did. Looking very close, in my case also the heated bed is part of the problem. The PCB-style heat unit has a considerable bump in several places, and all these bumps are between screws - so any improvements on platform flatness or shimming would not help here. I recently ordered a replacement heated bed, and it looks much better - yet waiting to be mounted.

If this does not help, I’ll take your experience here and follow you - thank you very much again for the writeup - will save me the time of working it out myself!

I think having a perfectly flat frame doesn’t really help; the distortion of the heated bed, when heated, is strong enough to make the platform frame bend however it wants to.

What heated bed you ordered?

This one: Beheiztes Bett-A350/A350T/F350 – Snapmaker EU

That is, the official replacement part.

I thought you were speaking about third party heating bed