Soft Endstops and G30

Hi there

I’m trying to setup Soft Endstops.

In the doc there is config
soft_endstop.enable true # Enable soft endstops
soft_endstop.x_min 1 # Minimum X position
soft_endstop.x_max 999 # Maximum X position
soft_endstop.y_min 1 # Minimum Y position
soft_endstop.y_max 499 # Maximum Y position
soft_endstop.z_min 1 # Minimum Z position
soft_endstop.z_max 199 # Maximum Z position
soft_endstop.halt true # Whether to issue a HALT state when hitting a soft endstop (if false, will just ignore commands that would exceed the limit)

With min=1 it will be triggered when homing, always. So, I set all min=0, correct? Or do i misunderstand something? After that it works as expected.

But I have attached a bltouch.
Without Soft endstops G30, G30 Z-2.0 works. G30 Z2.0 not working, because head not move up after probe.

With Soft Endstops its not working anymore. When i try to do a probe, soft endstopp triggers immediately without movement.

Then moving head somewhere X20 Y 20 Z Position 8
Deploy pin
G30 -> triggers soft end stop even when Z Position > 8 immediately
G30 Z-2.0 -> triggers soft end stop even when Z Position > 8 immediately

I’m the only one try to use soft end stops and bltouch or can anybody help?

Other question
Is it possible to set somhow in config, that after homing go to z=5 auto as my marlin board does?

Thanx for any help

I generally set min = -1.

About G30, you can first do G30 alone with no parameters, then use a combination of G92 and G0 to get to the position you want ( both physically and virtually )

I’m the only one try to use soft end stops and bltouch or can anybody help?

No no, there are tens of thousands of users for soft endstops, at least thousands for bltouch :slight_smile: But everyone’s machine is different, the default methods/examples won’t always work for everyone, so sometimes you need to dig a bit deeper

soft_endstop.z_min -1 does not help

I found where the Problem comes from:
gamma_max_travel 400

when i set
soft_endstop.z_min -401 # Minimum Z position
then G30 is possible and does not trigger soft endstop, Yeah…but with this the soft endstop is useless

How does the ten of thousands has solved this problem :slight_smile:
Does someone have a CR-10 with bltouch and would share config?

So, is it possible or not to do a +5 on Z after homeing within config. I have a very humble touchscreen which just sends G28 and need some help from the other end to get the job done.

Oh, it just sounds like you are homing to the top of your Z axis. You need to figure out what position you want that endstop to be, and set the values accordingly ( the example assumes the bottom of the axis to be 0 )

I’m homeing to 0, its at the bottom and where the mechanical endstop is.

gamma_min_endstop 1.28^ #
#gamma_max_endstop 1.28^ #
gamma_homing_direction home_to_min #
gamma_min 0 #
gamma_max 400 #

gamma_max_travel 400

I reckon, that when send a G30 that will fire travel command to travel 400 (gamma_max_travel) and this will triggering the soft end stop immediately. To fix it will be better to move 1mm check if probe hit, if no move 1mm again. Or just take diffrence of current Z and soft_endstop.x_min instead of gamma_max_travel

G30 is for probing, the conversation so far has been about homing, I’m very confused what you are saying.

Probing and homing are two completely different processes/modules.

I don’t really understand what you are expecting G30 to do, but it doesn’t seem to match what it does. G30 and soft endstops are completely unrelated.

You should use G28 for homing, and G30 for probing.

Its about probing G30 and Softendstops till start, see subject:-) But sorry for confusing…

Before homeing softendstops are disabled, correct ? So I do a G28 for homeing. Softendstops are enabled now. After this, G30 (Probing) is not possible anymore, because it triggers endstops immediately.

G30 will do an Z travel, correct? And this Z travel value is higher then softendstops allow. I reckon, it will use gamma_max_travel 400 for Z travel because when i use for soft_endstop.z_min -401 its working again.

After this, G30 (Probing) is not possible anymore

That’s not normal, it should be. Can we see your entire config? What board is this?

@tbonered to post your entire config correctly, paste it between lines with only three single back-quote characters, like this:

your config goes here

Board Azteeg Mini V3
The config taken is the one for azteeg mini v3 and then manually merged with Smoothieboard (Some newer Parameters i think) one.
Most Parameters not changed, because far away from printing…i’m testing only movement and bltouch.

# Robot module configurations : general handling of movement G-codes and slicing into moves
default_feed_rate                            4000             # Default rate ( mm/minute ) for G1/G2/G3 moves
default_seek_rate                            4000             # Default rate ( mm/minute ) for G0 moves
mm_per_arc_segment                           0.0              # Fixed length for line segments that divide arcs, 0 to disable
#mm_per_line_segment                         5                # Cut lines into segments this size
mm_max_arc_error                             0.01             # The maximum error for line segments that divide arcs 0 to disable

# Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions
alpha_steps_per_mm                           160               # Steps per mm for alpha stepper
beta_steps_per_mm                            160               # Steps per mm for beta stepper
gamma_steps_per_mm                           800        # Steps per mm for gamma stepper

# Planner module configuration : Look-ahead and acceleration configuration
planner_queue_size                           32               # DO NOT CHANGE THIS UNLESS YOU KNOW EXACTLY WHAT YOUR ARE DOING
acceleration                                 3000             # Acceleration in mm/second/second.
#z_acceleration                              500              # Acceleration for Z only moves in mm/s^2, 0 disables it, disabled by default. DO NOT SET ON A DELTA
junction_deviation                           0.05             # Similar to the old "max_jerk", in millimeters, see :
                                                              # and . Lower values mean being more careful, higher values means being faster and have more jerk

# Stepper module configuration
microseconds_per_step_pulse                  1                # Duration of step pulses to stepper drivers, in microseconds
base_stepping_frequency                      100000           # Base frequency for stepping

# Stepper module pins ( ports, and pin numbers, appending "!" to the number will invert a pin )
alpha_step_pin                               2.1              # Pin for alpha stepper step signal
alpha_dir_pin                                0.11             # Pin for alpha stepper direction
alpha_en_pin                                 0.10            # Pin for alpha enable pin
alpha_current                                1.0              # X stepper motor current
x_axis_max_speed                             30000            # mm/min
alpha_max_rate                               30000.0          # mm/min actuator max speed

beta_step_pin                                2.2              # Pin for beta stepper step signal
beta_dir_pin                                 0.20             # Pin for beta stepper direction
beta_en_pin                                  0.19            # Pin for beta enable
beta_current                                 1.0              # Y stepper motor current
y_axis_max_speed                             30000            # mm/min
beta_max_rate                                30000.0          # mm/min actuator max speed

gamma_step_pin                               2.3              # Pin for gamma stepper step signal
gamma_dir_pin                                0.22!             # Pin for gamma stepper direction
gamma_en_pin                                 0.21            # Pin for gamma enable
gamma_current                                1.2              # Z stepper motor current
z_axis_max_speed                             300              # mm/min
gamma_max_rate                               300.0            # mm/min actuator max speed

# Serial communications configuration ( baud rate default to 9600 if undefined )
uart0.baud_rate                              115200           # Baud rate for the default hardware serial port
second_usb_serial_enable                     false            # This enables a second usb serial port (to have both pronterface and a terminal connected)

#msd_disable                                 false            # disable the MSD (USB SDCARD) when set to true
#leds_disable                                true             # disable using leds after config loaded
#dfu_enable                                  false            # for linux developers, set to true to enable DFU
#watchdog_timeout                            10               # watchdog timeout in seconds, default is 10, set to 0 to disable the watchdog

## Extruder module configuration
extruder.hotend.enable                          true             # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend.steps_per_mm                    140              # Steps per mm for extruder stepper
extruder.hotend.default_feed_rate               600              # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend.acceleration                    500              # Acceleration for the stepper motor mm/sec²
extruder.hotend.max_speed                       50               # mm/s

extruder.hotend.step_pin                        2.0              # Pin for extruder step signal
extruder.hotend.dir_pin                         0.5              # Pin for extruder dir signal
extruder.hotend.en_pin                          0.4              # Pin for extruder enable signal

delta_current                                1.0              # Extruder stepper motor current

# Laser module configuration
laser_module_enable                          false            # Whether to activate the laser module at all. All configuration is
                                                              # ignored if false.
#laser_module_pin                             2.5             # this pin will be PWMed to control the laser. Only P2.0 - P2.5, P1.18, P1.20, P1.21, P1.23, P1.24, P1.26, P3.25, P3.26
                                                              # can be used since laser requires hardware PWM
#laser_module_maximum_power                   1.0             # this is the maximum duty cycle that will be applied to the laser
#laser_module_minimum_power                   0.0             # This is a value just below the minimum duty cycle that keeps the laser
                                                              # active without actually burning.
#laser_module_default_power                   0.8             # This is the default laser power that will be used for cuts if a power has not been specified.  The value is a scale between
                                                              # the maximum and minimum power levels specified above
#laser_module_pwm_period                      20              # this sets the pwm frequency as the period in microseconds

# Hotend temperature control configuration
temperature_control.hotend.enable            true             # Whether to activate this ( "hotend" ) module at all. All configuration is ignored if false.
temperature_control.hotend.thermistor_pin    0.24             # Pin for the thermistor to read
temperature_control.hotend.heater_pin        2.5              # Pin that controls the heater
temperature_control.hotend.thermistor        EPCOS100K        # see
#temperature_control.hotend.beta             4066             # or set the beta value

temperature_control.hotend.set_m_code        104              #
temperature_control.hotend.set_and_wait_m_code 109            #
temperature_control.hotend.designator        T                #
#temperature_control.hotend.max_temp         300              # Set maximum temperature - Will prevent heating above 300 by default
#temperature_control.hotend.min_temp         0                # Set minimum temperature - Will prevent heating below 0 by default

# safety control is enabled by default and can be overidden here, the values show the defaults
#temperature_control.hotend.runaway_heating_timeout      900   # max is 2040 seconds, how long it can take to heat up
#temperature_control.hotend.runaway_cooling_timeout        0   # max is 2040 seconds, how long it can take to cool down if temp is set lower
#temperature_control.hotend.runaway_range                20    # Max setting is 63°C

temperature_control.hotend.p_factor          13.7             #
temperature_control.hotend.i_factor          0.097            #
temperature_control.hotend.d_factor          24               #

temperature_control.bed.enable               false            #
temperature_control.bed.thermistor_pin       0.23             #
temperature_control.bed.heater_pin           2.7              #
temperature_control.bed.thermistor           EPCOS100K    # see
#temperature_control.bed.beta                4066             # or set the beta value

temperature_control.bed.set_m_code           140              #
temperature_control.bed.set_and_wait_m_code  190              #
temperature_control.bed.designator           B                #

# Switch module for fan control                            true             #                  M106             #                 M107             #                        1.25              #

switch.misc.enable                           false            #
switch.misc.input_on_command                 M42              #
switch.misc.input_off_command                M43              #
switch.misc.output_pin                       0.26              #

# automatically toggle a switch at a specified temperature. Different ones of these may be defined to monitor different temperatures and switch different swithxes
# useful to turn on a fan or water pump to cool the hotend
#temperatureswitch.hotend.enable                true             #
#temperatureswitch.hotend.designator          T                # first character of the temperature control designator to use as the temperature sensor to monitor
#temperatureswitch.hotend.switch              misc             # select which switch to use, matches the name of the defined switch
#temperatureswitch.hotend.threshold_temp      60.0             # temperature to turn on (if rising) or off the switch
#temperatureswitch.hotend.heatup_poll         15               # poll heatup at 15 sec intervals
#temperatureswitch.hotend.cooldown_poll       60               # poll cooldown at 60 sec intervals

# filament out detector
#filament_detector.enable                     true             #
#filament_detector.encoder_pin                0.26             # must be interrupt enabled pin (0.26, 0.27, 0.28)
#filament_detector.seconds_per_check          2                # may need to be longer
#filament_detector.pulses_per_mm              1 .0             # will need to be tuned
#filament_detector.bulge_pin                  0.27             # optional bulge detector switch and/or manual suspend

# Switch module for spindle control
#switch.spindle.enable                        false            #

# Endstops
endstops_enable                              true             # the endstop module is enabled by default and can be disabled here
#corexy_homing                               false            # set to true if homing on a hbot or corexy
alpha_min_endstop                            1.24^            # add a ! to invert if endstop is NO connected to ground
#alpha_max_endstop                           1.24^            #
alpha_homing_direction                       home_to_min      # or set to home_to_max and set alpha_max
alpha_min                                    0                # this gets loaded after homing when home_to_min is set
alpha_max                                    300              # this gets loaded after homing when home_to_max is set
beta_min_endstop                             1.26^            #
#beta_max_endstop                            1.26^            #
beta_homing_direction                        home_to_min      #
beta_min                                     0                #
beta_max                                     300              #
gamma_min_endstop                            1.28^            #
#gamma_max_endstop                           1.28^            #
gamma_homing_direction                       home_to_min      #
gamma_min                                    0                #
gamma_max                                    400              #

alpha_max_travel                             300              # max travel in mm for alpha/X axis when homing
beta_max_travel                              300              # max travel in mm for beta/Y axis when homing
gamma_max_travel                             400              # max travel in mm for gamma/Z axis when homing

# optional enable limit switches, actions will stop if any enabled limit switch is triggered
#alpha_limit_enable                          false            # set to true to enable X min and max limit switches
#beta_limit_enable                           false            # set to true to enable Y min and max limit switches
#gamma_limit_enable                          false            # set to true to enable Z min and max limit switches
#move_to_origin_after_home                   false            # move XY to 0,0 after homing

#probe endstop
#probe_pin                                   1.29             # optional pin for probe

alpha_fast_homing_rate_mm_s                  50               # feedrates in mm/second
beta_fast_homing_rate_mm_s                   50               # "
gamma_fast_homing_rate_mm_s                  4                # "
alpha_slow_homing_rate_mm_s                  25               # "
beta_slow_homing_rate_mm_s                   25               # "
gamma_slow_homing_rate_mm_s                  2                # "

alpha_homing_retract_mm                      5                # distance in mm
beta_homing_retract_mm                       5                # "
gamma_homing_retract_mm                      1                # "

#endstop_debounce_count                       100              # uncomment if you get noise on your endstops, default is 100

# optional Z probe
zprobe.enable                                true           # set to true to enable a zprobe
zprobe.probe_pin                             1.29^          # pin probe is attached to if NC remove the !
zprobe.slow_feedrate                         1               # mm/sec probe feed rate
#zprobe.debounce_ms                          1               # set if noisy
zprobe.fast_feedrate                         100             # move feedrate mm/sec
zprobe.probe_height                          5               # how much above bed to start probe
zprobe.return_feedrate                       50              # feedrate after a probe, default 0 is double of slow_feedrate (mm/s)
zprobe.max_z                                 200             # maximum default travel for the probe command, will use gamma_max if not defined
zprobe.dwell_before_probing 		         0.2 		     #Dwell time in seconds before probing 

switch.servo.enable                           true
switch.servo.input_on_command                 M280
switch.servo.input_off_command                M281
switch.servo.output_pin                       1.23
switch.servo.output_type                      hwpwm
switch.servo.pwm_period_ms                    20

# associated with zprobe the leveling strategy to use
soft_endstop.enable         true         # Enable soft endstops
soft_endstop.x_min          0            # Minimum X position
soft_endstop.x_max          300          # Maximum X position
soft_endstop.y_min          0            # Minimum Y position
soft_endstop.y_max          300          # Maximum Y position
soft_endstop.z_min          0            # Minimum Z position
soft_endstop.z_max          400          # Maximum Z position
soft_endstop.halt           false         # Whether to issue a HALT state when hitting a soft endstop (if false, will just ignore commands that would exceed the limit)

#leveling-strategy.three-point-leveling.enable         true        # a leveling strategy that probes three points to define a plane and keeps the Z parallel to that plane
#leveling-strategy.three-point-leveling.point1         100.0,0.0   # the first probe point (x,y) optional may be defined with M557
#leveling-strategy.three-point-leveling.point2         200.0,200.0 # the second probe point (x,y)
#leveling-strategy.three-point-leveling.point3         0.0,200.0   # the third probe point (x,y)
#leveling-strategy.three-point-leveling.home_first     true        # home the XY axis before probing
#leveling-strategy.three-point-leveling.tolerance      0.03        # the probe tolerance in mm, anything less that this will be ignored, default is 0.03mm
#leveling-strategy.three-point-leveling.probe_offsets  0,0,0       # the probe offsets from nozzle, must be x,y,z, default is no offset
#leveling-strategy.three-point-leveling.save_plane     false       # set to true to allow the bed plane to be saved with M500 default is false

# kill button (used to be called pause) maybe assigned to a different pin, set to the onboard pin by default
kill_button_enable                           true             # set to true to enable a kill button
kill_button_pin                              2.12             # kill button pin. default is same as pause button 2.12 (2.11 is another good choice)

# Panel See
panel.enable                                 false             # set to true to enable the panel code

# Example viki2 config for an azteeg mini V2 with IDC cable
panel.lcd                                    viki2             # set type of panel
panel.spi_channel                            0                 # set spi channel to use P0_18,P0_15 MOSI,SCLK
panel.spi_cs_pin                             0.16              # set spi chip select
panel.encoder_a_pin                          3.25!^            # encoder pin
panel.encoder_b_pin                          3.26!^            # encoder pin
panel.click_button_pin                       2.11!^            # click button
panel.a0_pin                                 2.6               # st7565 needs an a0
panel.contrast                               8                 # override contrast setting (default is 9) miniViki (4 or lower)
#panel.encoder_resolution                    4                 # override number of clicks to move 1 item (default is 4)
#panel.button_pause_pin                      1.30^             # kill/pause set one of these for the auxilliary button on viki2
#panel.back_button_pin                       1.30!^            # back button recommended to use this on EXP1
panel.buzz_pin                               0.25              # pin for buzzer on EXP2
panel.red_led_pin                            2.8               # pin for red led on viki2 on EXP1
panel.blue_led_pin                           4.29              # pin for blue led on viki2 on EXP1
panel.external_sd                            false             # set to true to use external sd WARNING not supported.
panel.external_sd.spi_channel                0                 # set spi channel the sdcard is on
panel.external_sd.spi_cs_pin                 1.23              # set spi chip select for the sdcard
panel.external_sd.sdcd_pin                   1.31!^            # sd detect signal (set to nc if no sdcard detect)
panel.menu_offset                            1                 # some panels will need 1 here

panel.alpha_jog_feedrate                     6000              # x jogging feedrate in mm/min
panel.beta_jog_feedrate                      6000              # y jogging feedrate in mm/min
panel.gamma_jog_feedrate                     200               # z jogging feedrate in mm/min

panel.hotend_temperature                     185               # temp to set hotend when preheat is selected
panel.bed_temperature                        60                # temp to set bed when preheat is selected

# Example of a custom menu entry, which will show up in the Custom entry.
# NOTE _ gets converted to space in the menu and commands, | is used to separate multiple commands
custom_menu.power_on.enable                true              #                  Power_on          #
custom_menu.power_on.command               M80               #

custom_menu.power_off.enable               true              #                 Power_off         #
custom_menu.power_off.command              M81               #

# network settings
network.enable                               true            # enable the ethernet network services
network.webserver.enable                     true             # enable the webserver
network.telnet.enable                        true             # enable the telnet server
network.plan9.enable                         true             # enable the plan9 network filesystem
network.ip_address                              # the IP address
network.ip_mask                        # the ip mask
network.ip_gateway                       # the gateway address

# Azteeg specific settings do not change
currentcontrol_module_enable                 true            #
digipot_max_current                          2.0             # max current
digipot_factor 113.5 # factor for converting current to digipot value

Printer is now online.
M280 S3.0

(Moving back to Testpoint, manually, around X30Y30Z10)

Error: Soft Endstop Z was exceeded - entire move ignored
[ERROR] Error: Soft Endstop Z was exceeded - entire move ignored

ZProbe not triggered

Can someone confirm the bug or is problem in my config…
any ideas?

This is very annoying: your config is extremely outdated, so I wouldn’t expect it to work correctly with the most recent firmware. But Azteeg hasn’t updated their config file for years, despite many requests for them to do so. You should ask them to do it. If they don’t, you should try to get the latest example config file from the Smoothie wiki ( for Smoothieboard ) and try to adapt it to work for Azteeg.

As i wrote, i have merged the azteeg and smoothieware config…whats still that wrong? i cant find anything relevant.

You still have things like

which is a clear sign the merging wasn’t done correctly.

You need to take the example config file ( for Smoothieboard ) then one by one, port each options/value that is relevant to operating an azteeg ( one by one, testing each time ), until you get a “recent” azteeg example.

Then do the same ( port value/option one by one, testing each time ) for values that are related to getting your specific machine/board to work.

Shouldn’t have base stepping frequency in the file once you do that.