Skip to content

Compatibility and feature enhancements - #258

Open
CooperGerman wants to merge 37 commits into
markniu:newfrom
CooperGerman:fork
Open

Compatibility and feature enhancements#258
CooperGerman wants to merge 37 commits into
markniu:newfrom
CooperGerman:fork

Conversation

@CooperGerman

Copy link
Copy Markdown

Hi,
first of all I'd like to thank you for all the work you put into this amazing project.

As I installed and tried it out I was unfortunately stuck on some aspects and wanted to share my fixes and upgrades if you are interested:

Features and fixes

  • Stealtburner mounting option : As I use a custom TAP mechanism I wanted to adapt the sensor the adxl mount of the stealtburner. You can find here my solution to this.
  • latest klipper and Kalico compatibility : I integrated the hotfix in this issue and fixed several other minor compatibility issues with latest klipper/kalico.
  • External endstop offsets : As I read through the klipper plugin I saw that when using external endstop, the BD Sensor offsets would still be applied. I added some parameters to adjust these independently.
  • FIX PROBE_CALIBRATION through mainsail UI using external endstop: I fixed the calibration routine and added some routes for the calibration process to save the offset to homing_probe_z_offset instead of z_offset because of changes above.
  • FIX no_stop_probe : In my kalico and klipper environments, this feature seemed broken because of recent changes to the probing sessions. Current changes fix these.
  • Add aliases resolving : As some of my printers use RatOS that heavily relies on pin aliases I took upon myself to add this feature.
  • Console verbosity control: When scanning with high sample count, the console gets easily cluttered with messages. I added the console_verbosity parameters (defaults to 0for cleaner console), and restores previous logging starting at 1.

Disclosure:

I use Copilot as my coding assistant, but I reviewed changes myself and I understand klipper reasonably well as I have often modified it or developed plugins and am Happy Hare project contributor.

I would be more than happy to dicuss some this PR with you if you want. You can contact me either through discord @coopergerman or by email [email protected].

Limitations :

I cannot test and account for all klipper variations and sensors configurations and i would strongly suggest this PR got merged into a dev branch to be beta tested if anybody is willing to do so.

Side Note : We would like to equip all of our printers with this solution and are facing a little issue, do you think it might be possible to have longer (antenna) cables for the sensor ? Our largest printer is 600x600x200 and the current one is not long enough to place the pcb outside of the chamber (feel free to contact us at [email protected]).

@CooperGerman
CooperGerman marked this pull request as ready for review May 30, 2026 16:19
@markniu

markniu commented Jun 17, 2026

Copy link
Copy Markdown
Owner

Appreciate the feature additions and bug fixes in this PR. That said, I've discovered a compatibility issue: Z_TILT_ADJUST fails to function properly when QGL_TILT_PROBE is set to 1

@CooperGerman

Copy link
Copy Markdown
Author

Appreciate the feature additions and bug fixes in this PR. That said, I've discovered a compatibility issue: Z_TILT_ADJUST fails to function properly when QGL_TILT_PROBE is set to 1

Oh ok. I could indeed not test this use case as we only have one sensor as of now, and it has been mounted on a flying gantry style printer with 4 z axis. I also noticed that i was not able to perform QGL with BDSensor currently, but I'm not sure yet if this feature has been broken by updating klipper or by me. The printer running the BDSensor is on a 4days print, and I'll therefore not be able to work on this matter sooner.

@CooperGerman

CooperGerman commented Aug 25, 2026

Copy link
Copy Markdown
Author

QUAD_GANTRY_LEVEL and Z_TILT should be fixed. Before merging, I would like to add some configuration logic to enable the user to switch between external probe and BDSensor how he pleases, for example first qgl using tap, second pass using BDSensor. (similar implementation than QGL_TILT_PROBE=1).

In the meantime please tell me if you observe any issues with the fix. (I cannot test Z_tilt on my printers).

@CooperGerman

Copy link
Copy Markdown
Author

Hi,

here I am with a final proposition.

What's updated

  • rapid_scan filtering enhanced with detailed disabling verbosity
  • use_endstop : added a flag to force the use of the external_probe for Bed Mesh / qgl / Z-tilt. Can be set with BD_SENSOR_SET USE_ENDSTOP=1). This will force the use of the external probe even for rapid scannable commands, thus disabling rapid_scan.
  • FIX : get points differently for each rapid scannable command. (Bed mesh has some point processing that qgl does not have.)
  • FIX : Break sample getting while loop on timeout.
  • FIX : Do not reset fast_scan attribute when pulling results (fixing odd behavior on qgl retries).
  • Misc : Fixed typos, better verbosity (better use of console_verbosity flag).

PS : The stealthburner adxl mount got updated also si here

How I tested QGL

[gcode_macro QUAD_GANTRY_LEVEL]
rename_existing: _QUAD_GANTRY_LEVEL
description:
gcode:
   # Use tap to QGL through USE_ENDSTOP=1
    BDSENSOR_SET QGL_TILT_PROBE=0 #set this 1 to enable z axis up and down
    #run z tilt with z move up and down at first
    BDSENSOR_SET USE_ENDSTOP=1 #set this 1 to force the use of the endstop probe
    _QUAD_GANTRY_LEVEL  horizontal_move_z=3 retry_tolerance=1

   # Use tap to QGL + verify no change with QGL_TILT_PROBE set (correct behavior ?)
    BDSENSOR_SET QGL_TILT_PROBE=1 #set this 1 to enable z axis up and down
    #run z tilt with z move up and down at first
    BDSENSOR_SET USE_ENDSTOP=1 #set this 1 to force the use of the endstop probe
    _QUAD_GANTRY_LEVEL  horizontal_move_z=3 retry_tolerance=1

   # Use BDSensor with QGL_TILT_PROBE
    BDSENSOR_SET QGL_TILT_PROBE=1 #set this 1 to enable z axis up and down
    #run z tilt with z move up and down at first
    BDSENSOR_SET USE_ENDSTOP=0 #set this 1 to force the use of the endstop probe
    _QUAD_GANTRY_LEVEL  horizontal_move_z=3 retry_tolerance=1

   #Use BDSensor rapid scan mode
    BDSENSOR_SET QGL_TILT_PROBE=0 #set this 1 to enable z axis up and down
    #run z tilt with z move up and down at first
    BDSENSOR_SET USE_ENDSTOP=0 #set this 1 to force the use of the endstop probe
    _QUAD_GANTRY_LEVEL  horizontal_move_z=3 retry_tolerance=1

Limitations and pending issues

  • I might be a good idea to verify everything is working as before for non external_probe users.
  • Collision homing has not been retested
  • I got some errors when trying a very dense bed_mesh (80x80 points). It had been working fine but on some occasion it errors to bed_mesh: invalid position list size, generated count: 6400, probed count: 3535. Data rising consitions ?
  • I updated some time.sleep commands with toolhead.dwell as to my understanding klipper would prefer this "non blocking" waiting method but maybe there was a good reason behind this, please let me know.

@markniu

markniu commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Thank you so much! I'll test it and merge it afterward

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants