G29 vs G31 vs G32

Ok, I have been pulling my hair out trying to setup rectangular levelling. (3 Point works perfectly BTW)

I have a coreXY machine with the X0Y0 origin at the back left. My Zprobe is offset behind the nozzle by 50mm.

If I run G29 the bed levelling runs as expected though the grid it measures seems to be rather small relative to my bed of 270 x 290 (especially in the Y direction)
If I run G31 nothing happens
If I run G32 I get the first probe measurement position in the correct spot but then the next position moves to the origin again at which point my probe is no longer over the print surface and I get a nozzle crash

Can I just run G29 and the bed compensation will be saved and ignore G32?
Why would G31 not be working
If I should be running G32, can someone identify why the second probe point is moving in the reverse instead of forward?

Pertinent config info below

Thanks!

[[code]]
alpha_min -50 # this gets loaded after homing when home_to_min is set
alpha_max 270 # this gets loaded after homing when home_to_max is set
beta_min 0 #
beta_max 290 #

#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 5 # mm/sec probe feed rate
#zprobe.debounce_count 100 # set if noisy
zprobe.fast_feedrate 100 # move feedrate mm/sec
zprobe.probe_height 10 # how much above bed to start probe

#Switch module for Z probe servo control
switch.servo.enable true #
switch.servo.input_on_command M280 S3.5 # M280 S7.5 would be midway
switch.servo.input_off_command M280 S12.5 # same as M280 S0 0% duty cycle, effectively off
switch.servo.output_pin 1.23 # must be a PWM capable pin
switch.servo.output_type hwpwm # H/W pwm output settable with S parameter in the input_on_comand
#switch.servo.pwm_period_ms 20 # set period to 20ms (50Hz) default is 50Hz

#associated with zprobe the leveling strategy to use
leveling-strategy.rectangular-grid.enable true # The strategy must be enabled in the config, as well as the zprobe module.
leveling-strategy.rectangular-grid.x_size 270 # size of bed in the X axis
leveling-strategy.rectangular-grid.y_size 290 # size of bed in the Y axis
leveling-strategy.rectangular-grid.size 5 # The size of the grid, for example, 7 causes a 7x7 grid with 49 points.
leveling-strategy.rectangular-grid.do_home false # # Must be an odd number.
leveling-strategy.rectangular-grid.probe_offsets 50,0,0 # Optional probe offsets from the nozzle or tool head
leveling-strategy.rectangular-grid.save true # If the saved grid is to be loaded on boot then this must be set to true
leveling-strategy.rectangular-grid.initial_height 10 # Optionally an initial_height can be set that tell the intial probe
# where to stop the fast decent before it probes, this should be
# around 5-10mm above the bed

[[/code]]

Imported from wikidot

I have the same or very similar problem using latest firmware and this config:

zprobe.enable                                true               # set to true to enable a zprobe
zprobe.probe_pin                             1.30!^             # pin probe is attached to if NC remove the !, Azteeg X5 this is 1.2
zprobe.slow_feedrate                         5                  # mm/sec probe feed rate
#zprobe.debounce_ms                          1                  # set if noisy
zprobe.fast_feedrate                         3000                # move feedrate
zprobe.probe_height                          5                  # how much above bed to start probe NB only needed for G32 on delta
zprobe.return_feedrate                       0                  # feedrate after a probe, default 0 is double of slow_feedrate (mm/s

leveling-strategy.rectangular-grid.enable true # The strategy must be enabled in the config, as well as the zprob
leveling-strategy.rectangular-grid.x_size 340 # size of bed in the X axis
leveling-strategy.rectangular-grid.y_size 270 # size of bed in the X axis
leveling-strategy.rectangular-grid.grid_x_size 9 # The size of the grid, for example, 7 causes a 7x7 grid with 49 p
leveling-strategy.rectangular-grid.grid_y_size 7 #
leveling-strategy.rectangular-grid.probe_offsets 0,0,0 # Optional probe offsets from the nozzle or tool head
leveling-strategy.rectangular-grid.save false # If the saved grid is to be loaded on boot then this must be set
leveling-strategy.rectangular-grid.initial_height 10 # Optionally an initial_height can be set that tell the intial pro
leveling-strategy.rectangular-grid.do_home false #


Probing using G30 works as it should. Once I set the 0,0,0 coordinates to the surface of the lower left corner of my PCB, I lift the head a bit and do G31 X0 Y0 A280 B180 I9 J7. This causes the head to move the wrong way, in the negative x,y, and z directions, until it hits the endstops. It’s like the movement directions are reversed? The strange part is, I already got rectangular levelling to work yesterday, but after tweaking some settings today the board has a mind of it’s own. Tried restarting a million times already, reflashed, trimmed all the config lines to 132 chars, everything I can think of. Can anybody help?

There is one other thing: The wiki about levelling (am not allowed to post links for some reason) seems to say that the same setting (leveling-strategy.rectangular-grid.size) is used both for physical size of square bed and for number of square grid points. My guess would be that grid points are set using leveling-strategy.rectangular-grid.grid_size.

I found G32 is what works on current firmware.

also where is your probe located in reference to your nozzle?

Neither G31 or G32 work for me, the problem is the same for both.
My probe is the tip of the tool, which makes contact with the copper of the PCB and completes the circuit, meaning there is zero offset.

My probe is ~50mm behind my nozzle but note that my X axis is front to back (quirk of the CoreXY) so on a normal Cartesian it would be 50mm to the left.