Raspberry pi 5 + Octoprint + BL-Touch

What is the problem?

I am a person who has recently started using OctoPrint, so I have doubts and lacks of foundation because I am learning little by little.

The issue is that:

  • Before using Octoprint, I would print a part and before starting, BL-Touch would analyze the bed, adjust errors and print.
  • After that print, if I made another part, BL-Touch would analyze the bed again, adjust variations again, and print.
    With this mechanic, I had no printing errors or problems.

Now, with OctoPrint:

  • I start a print, and directly, without analyzing the bed or errors, it starts printing
  • The print ends, I make a new print and there is no analysis of the bed. And I make mistakes, and no second impression turns out to be correct.

How can I make sure that always, before a print (be it the first, second or fifth), my bed is analyzed and the variations are saved so that the print is the same as WITHOUT OctoPrint?

Thank you so much!

What did you already try to solve it?

I'm reading and looking for information.
I'm not sure how to get what I need.

Have you tried running in safe mode?


Did running in safe mode solve the problem?


Systeminfo Bundle

[octoprint-systeminfo-20240102151811.zip|attachment](upload://Lwg69yqbE0nqvcibLR6iuzEbcc.zip) (362.0 KB) can download this in OctoPrint's System Information dialog ... **no bundle, no support!**)

octoprint-systeminfo-20240102151811.zip (362.0 KB)

Additional information about your setup

OctoPrint version, OctoPi version, printer, firmware, browser, operating system, ... as much data as possible

OctoPrint Version: 1.9.3
Bed Visualizer Settings Version: 1.1.1
Printer: Creality Ender 6
Firmware: Marlin2.0.1-HW-V4.3.1-SW-V1.0.4.9-BLTouch
Browser: Google Chrome (I have tried in Firefox, and in Safari)
Operation System: MacOS Monterey (12.6.8 (21G725))

Modify your slicer's start gcode to have G29 after the G28 in order to probe the mesh every print.

1 Like

Thank you for the answer.

I see that the information is very direct about the use of GCODE.

Since I don't know how this is done or how to work, is there any documentation to know how to do it correctly?

And any extra recommendations so that the impressions are always as correct as possible, and the margin of error is reduced to the minimum possible?

I just read a little above and it seems that only with G29 it levels but the data is not recorded? It's right?

What is the complete sequence of commands to measure, and save the information obtained?
Or should those values not be recorded?

If you're running the process every print then there's no reason to save it.

This depends on what slicer you are using.

Oh, sure. Logical. thanks for the comment. She hadn't noticed or thought about it.

Ultimaker Cura

I am not clear (due to lack of knowledge) from OctoPrint how I have to modify the start GCODE.
Could you help me with this point?
Is it a plugin? Is it some specific point in the OctoPrint configuration?

I just saw that in Settings there is "GCODE Scripts"
And inside there are blocks for "moments".

I sense then that I should put it in "Before print job starts"
I have it empty. There is nothing

Although there is nothing in those boxes, every time I print, my printer prints:

  • A line on the side 2 times when a print starts.

Those lines... are they made by default by Cura's configuration?
If in that "Before print job starts" box I put only "G29 G28" will it level each print and paint that line 2 times? Or is it just going to level?

you don't want to do this in OctoPrint. You want to do it in Cura's machine settings.

from the settings menu go to printers > manager printers.

highlight your printer and click machine settings button

start gcode is on the left and does all what you describe about prime line, etc.

Thanks for the reply.

But what you indicate, I already have it configured on my printer.

And without using OctoPrint, I always have bed leveling before each print.

It's when I print using OctoPrint that it doesn't do bed leveling (that's why I was looking in the OctoPrint settings)

Here you can see how I have Cura configured:

Start Gcode:

G28 ;Home

G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up
G1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position
G1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line
G1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little
G1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line
G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up

End Gcode

G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X5 Y5 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positioning

G28 X Y ;Present print
M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed

M84 X Y E ;Disable all steppers but Z

Exactly, this is missing G29 after the G28 in the start gcode. This is handled differently when printing directly from your printer I suppose and the printer itself is running the probing commands when you start it. Just add the G29 command on the next line after G28, slice a file, upload it to OctoPrint and print that one and you will see that it will do the probing.


I just tried it. I added G29 after G28 in Ultimaker Cura.
I have generated the GCODE file and started printing from OctoPrint.

And indeed, it is doing bed analysis with BL-Touch!

Thank you very much for the help!! :slight_smile:

I would like to know if what I have asked for and you have helped me with is correct to print, or if there are really more optimal and better ways to do it.

And on the other hand, I need to comment on something else.

When I printed without OctoPrint (from the printer directly) after calibrating the bed and starting printing, I could, using the touch screen and added BL-Touch functionalities, adjust "hot" (while printing) the Z axis (in case there was some error).

From OctoPrint, I have a plugin (OctoPrint-BLTouch) that has enabled some controls with which I can move and adjust the height of the bed.
But when the print starts, it doesn't let me interact. So I can't adjust "hot" like I can when trying to print just with the printer.

Do you know why this plugin won't let me interact with the Z axis during the printing process? (buttons appear disabled)

That approach is pretty standard.

This is called baby stepping. That plugin isn't really designed for that. There is an approach discussed over here that would give you the functionality from OctoPrint's control tab.

OK. I feel calmer knowing that I'm not trying to do anything wrong. And that is "normal."
Thanks for the reply.

Reading the answer, it is not clear to me if what is indicated by entering in "After serial connection to printer is established" really achieves the objective of "hot moving the Z axis."

Is it tested and does it really work?
Is it as simple as copying the entire block and putting it in that box?

From what I understand, that block will make some controls (Z-probe) appear in OctoPrint.

You can click on the arrows to raise and lower the bed
And that moved value can be saved in the EEPROM memory using a "Save to EEPROM" button.

It's right?

And... if we don't click on "Save to EEPROM" what would happen? That in the next print, would there be that gap again?

that is only one part of the solution, in order for the current offset to be displayed it wants you to put that command in the box in GCode Scripts settings.

The user wouldn't have posted it if it didn't work I don't think.

As stated above, there is only the single line added in settings. The rest you need to manually add to OctoPrint's config.yaml file. To do this you would SSH to the pi and run the command nano ~/.octoprint/config.yaml which will open a text editor. You then can copy/paste the large block into that file. Then press ctrl+s to save and ctrl+x to exit. After saving restart OctoPrint and on the control tab you will have the new buttons.


The settings should remain until the printer is power cycled. Best to just save it once it's where it needs to be.

apologies for being late to the game here, but I can answer any questions you may have given the custom control config.yaml and startup gcode snippet from the referenced post.

The approach I took takes advantage of a little known built-in feature where you can embed custom commands within the Control tab.... I then do some font trickery to get them to show up as buttons.

I use this to this day on my Ender 3 S1Pro. For something so simple, it was a game changer for managing my Ender without having to dork around with the touchscreen.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.