This is a proven (by me) process on how to get bed mesh data which is unavailable on our bambu printers by using a dial gauge. This is really a substitute to what should be directly available on our printers. I hope one day this tedious process can be avoided…
I selected Bambu H2D series section for this post although it was tested on H2D but the same can be used on H2S (see note below) and with a proper holder and some adjustments on the probing locations (X and Y) in the gcode be used on any bambulab (or else) printer.
The process involves obviously a dial gauge and its holder to fit on the toolhead, a dedicated gcode that will instruct the toolhead to probe each location of the printer’s calibration mesh and a web tool to input your data.
The GCode will start by heating the bed to 55°C, heat soak for 3 minutes (you can delete or comment out the 2 lines in the gcode if you want to perform it at room temperature, or change temperature to 100°C if you wish to plot for higher temperature, print the holder in PETG or ABS then ;)), home the toolhead, set calibration compensation to off, probe 64 (8x8) points on the bed then turn compensation on and probe again the 64 points. You will need to manually record the value at each location (or you can film the whole process and get your values from the video).
- Make sure you have first performed a bed leveling calibration with the plate you will use for this process, the compensation will use the calibration data stored in the printer’s memory. If not, do it prior to launch the below process. You can of course just forget it if you only need your bed mesh data without compensation, just stop the print after the first pass.
EDIT: After triple checking, the results of the mesh WITH compensation gives an inaccurate result (the process without compensation is OK of course). The reason is that the printer will apply compensation relative to the position of the nozzle, not the position of the probe which has an offset compared to it (12mm in X and 32mm in Y on H2D and only an offset of 32mm in Y on H2S). So use you compensation results with a grain of salt (see below my tests, thanks @Gerrit ). Let’s just then trust that with compensation, your bed will be perfectly flat ![]()
-
Copy the below gcode file on you USB key (replace .3mf by .gcode)
Bed mesh hot.3mf (9.5 KB) -
Install your dial gauge (you need to remove the printhead front cover and slide the holder on the printhead).
Note: You can use the below Gauge holder (this is a modified version of the Master Gauge holder by @2B.MainPrints), this holder can also work on the H2S but the Gcode will have to be adjusted because of the offset difference in X. It will still work but the points positions will be off by 13mm in X compared to the bed leveling calibration positions (although not a major issue).
The GCode above is made specifically for the modified holder on H2D.
Gauge+Master+modified.3mf (238.6 KB)
The Gcode should work with the majority of the 50mm available dial gauge with a 8mm shaft but please check that when installed the gauge shaft protudes about 25mm from the holder (a couple mms off is OK).
Edit: Buy a 1/2" travel gauge which is what I use, if you have or purchase a 1" travel gauge (it will then protude ~38mm), I would suggest then to increase all Z12 values in the Gcode to Z25 to avoid the tip of the gauge dragging on the plate during measurements.
-
Select the right nozzle, if the left nozzle is active go in the menu, select “nozzle and extruder” and click on “right”.
-
Access your USB key on the printer, select the file and print.
-
After homing, the gauge will probe the center of the plate and stay 10 seconds there, reset your gauge to “0” during this holding time.
-
Record each value at each position for the first pass (bed leveling compensation OFF) then record again for the second pass (bed leveling compensation ON).
-
Insert your values in the below table (copy it and paste it in whatever, notepad, excel etc). Top left value is the front left point of the bed, lower right value is the back right point of the bed so you fill the table top down, left right following the travel of the gauge.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 0.15 | 0.12 | 0.13 | 0.08 | 0.03 | 0.04 | -0.02 | -0.05 |
| 1 | 0.05 | -0.02 | -0.01 | -0.04 | -0.05 | -0.07 | -0.11 | -0.1 |
| 2 | 0.03 | 0.03 | 0.04 | -0.01 | 0.02 | -0.04 | -0.08 | -0.05 |
| 3 | 0.07 | 0.03 | 0 | -0.03 | -0.07 | -0.05 | -0.05 | 0.01 |
| 4 | 0.03 | 0.06 | 0.01 | 0.01 | -0.03 | -0.02 | -0.03 | -0.06 |
| 5 | 0.03 | 0.07 | -0.01 | 0.03 | -0.02 | -0.04 | -0.05 | -0.07 |
| 6 | 0.03 | -0.02 | -0.03 | -0.05 | -0.1 | -0.05 | -0.06 | -0.17 |
| 7 | -0.08 | -0.17 | -0.17 | -0.18 | -0.14 | -0.21 | -0.24 | -0.18 |
- Copy the whole table (the one with no compensation then the one with compensation) and insert it in the mesh data window provided on this web page:
3D Printer Auto Bed Leveling Mesh Visualizer | ChillRain
Note, you insert the whole table including the 0 to 7 X and Y-coordinates.
Edit: I tried without the 1-7 coordinates, only the values and it works fine.
- Click “Visualize” and voilà, you have your bed mesh plot (There is a download button at the top right of the plot to store it as .png on your PC or alternatively, just use printscreen.)

You can also move the plot around in 3D by (at least on my PC) holding the left key on and move it around with the mouse.
HAVE FUN!
Edit: video extract of the measurements in progress








