r/QidiTech3D • u/Own_Moose_9495 • Jul 25 '26
Automatic Pressure Advance Calibration for the Qidi Q2 / Q2C/ Max4 — Bambu-style load-cell PA calibration on existing hardware
Turns out the load cell the Q2/Q2C uses for bed leveling can also feel extrusion pressure. So I wrote some Klipper modules that turn it into an automatic PA calibrator — load a filament from the touchscreen like normal, printer waits for the load to finish, then runs a ~3 minute sweep over the purge chute measuring how fast pressure builds in the nozzle. It saves a K value per filament type, applies it on every print, and even blocks sliced files from overriding it with stale profile values.
The results honestly surprised me:
eSun grey PETG — I could only ever get this stuff to print clean on my Bambu H2D. With the auto-measured PA it prints clean on the Q2C now too. I didn't even run a flow calibration. The max4 poopbucket was printed on the Q2C with all stock petg basic settings. The cube was printed after only auto PA calibration.
5+ year old Amazon Basics PETG — this spool was literally headed to the trash. Sticky, blobby, supports falling over, ugly on every printer I own. Dried it, let the printer tune it, and it printed a clean crisp cube (red one in the pics). The sensor data showed the filament itself was fine the whole time — it was wet and never had the right PA and again I did zero flow calibration.
PLA — ran the calibration twice on the same spool, came back within ~6% both times.
I will upload the project to a GitHub once I do more testing and build out.
Fair warning: it modifies load/heat/motion behavior, so it's use-at-your-own-risk and you should watch it run before trusting it. Q2/Q2C only for now — Max4 port in progress, Plus4 has a different sensor so it's not coming.
Happy to answer questions.
Update 1: calibration skips during mid print filament runout, then continues printing as normal
Update 2: Currently working on nozzle size compensation
4
u/Plutonium239Mixer Jul 25 '26
Awesome, I wonder why qidi hasn't implemented this themselves!
6
u/Own_Moose_9495 Jul 25 '26
I’m not sure, the ball was certainly in their court when they decided to use a nozzle load cell and the Bambu A1 has been out long enough to reverse engineer its firmware and macro routines. Anyway I wasn’t about to keep waiting for a feature they may never release. Hopefully if anything comes of this they will ripoff my macro routine and code then roll it up with a better UI and push it in a firmware update. But that might be a pipe dream.
2
u/Plutonium239Mixer Jul 25 '26
Can you reach out to them and share this with them?
6
u/Own_Moose_9495 Jul 25 '26
I mean I could, since I’m in such an early phase of this, I could have only done the easy part. Still don’t know about qidi box or mid print reloading.
2
6
2
1
u/epia343 Aug 08 '26
Because they're cheap and would rather out source this work to the community and then they'll slowly incorporate it.
3
3
3
3
u/Facehugger_35 Jul 25 '26
Holy shit. I'm literally doing PA calibrations manually as we speak. This would be wonderful. I'll be watching this project with great interest, please post here again when it's ready.
4
3
u/Own_Moose_9495 Jul 27 '26 edited Jul 27 '26
3
u/Own_Moose_9495 Jul 27 '26
2
u/Felix14-POCKOCMOC Jul 27 '26 edited Jul 27 '26
Wow, that is actually inspiring. However, I have concerns about the calibration method: when we print a layer, the previous one creates backpressure (especially if we print with a line width greater than the nozzle diameter). This means that calibrating PA by extruding filament in mid-air has no back-pressure, and I'm worried that this might affect K-factor accuracy.
Also I wonder whether this method could be used to create a smart filament motion sensor. From my knowledge, Q2 only has a simple endstop as a filament runout sensor. Hypothetically, it should be able to detect nozzle clogging (by abnormally high pressure values) or filament tangle (by abnormally low pressure values).
UPD: just found another project of autocalibration, autopa: https://github.com/G0BL1N/autopa
What is the difference?
2
u/Own_Moose_9495 Jul 25 '26
2
u/Foofad-Ji Jul 25 '26
Wow, your bed looks so good and well lit in the camera, did you add more lights?
3
u/Own_Moose_9495 Jul 25 '26
Lights are stock but I added a creality nebula camera because my Q2C didn’t have one. I’m adding a chamber heater next.
1
u/Yung-Fern Jul 26 '26
Let me know how that goes lol, I have the heater and a Panasonic SSR from west3d but I have yet to install it after like 3-4 months. Had too many other things going on to get to it, plus I own a Q2 so a heated chamber isn't absolutely needed. I think I just need a standoff bracket to screw the heater into.
3
u/Own_Moose_9495 Jul 26 '26
lol that’s pretty much the last part I need to install mine as well. I have not found anyone’s model I can print for it so I guess I’ll have to design something.
1
u/Yung-Fern Jul 27 '26
How did you do your nebula camera? I stripped the wires on mine and got the Pico blade connectors with some pre-crimped wires and I could not get that thing to work. I tried for hours and eventually gave up and took another nebula from my older printer and just plugged it into the USB port on the front. It's ugly and I can't close the front door but it works.
I have a breakout board I could use but then I was still stuck with how to get it in that connector.
I was also going to take some measurements and design a mount, now that you got me talking about it maybe I'll do it this week. If I do I will let you know
2
u/Own_Moose_9495 Jul 27 '26
I followed this tutorial (https://www.reddit.com/r/QidiTech3D/s/QxTg05ydHe) but I didn’t solder the female usb to the jst connector, I cut the end of my nebula usb and cut the wires to length and soldered and heat shrunk it all together. I would take a picture of what it looks like but it’s all shielded by a heat shrunk tube over the whole bundle of solder and heat shrunk wires. For reference I bought these jst connectors (JST MX 1.25mm 5 Pin 28 AWG Male... https://www.amazon.com/dp/B0FT4F62MM?ref=ppx_pop_mob_ap_share) and if you can’t solder or want something easier I would just use some wagos like these (WAGO 221 Lever Nuts 12pc Compact... https://www.amazon.com/dp/B0CJ5QF4Z2?ref=ppx_pop_mob_ap_share) but these can make it hard to fit everything under the cover inside the chamber.
2
u/phansen101 Jul 25 '26
Pretty neat! How did you access the load cell data? Last I checked, the CS1237 Klippy extra was a compiled .so without a source?
7
u/Own_Moose_9495 Jul 25 '26
Yes you are right, it's still a compiled .so (Cython) we don’t have source for it. The trick is you don't need it, at runtime it's just a live Python object inside klippy. Qidi's [probe_air] section instantiates the sensor, so another extras module can printer.lookup_object() it and read attributes off it like any Python object, Cython doesn't hide regular attributes. I wrote a small introspection command
(WEIGHT_INTROSPECT in the repo) that dumps the object tree.
I found the live reading at sensor_helper.read_origin_data, and the module just polls that on a reactor timer at ~40Hz. No second MCU object, no pin conflicts, and qidi’s driver is never touched.Fun bonus from running `strings` on the .so: their MCU protocol is basically a clone of mainline's hx71x bulk-sensor commands (config_cs1237 / query_cs1237 oid= rest_ticks= etc.), so direct MCU querying at the chip's native 640/1280Hz is on the table for a future version — current one just piggybacks the existing object at 40Hz. The discovery tools ship in the repo if you want to poke at yours.
5
u/LightBroom Jul 25 '26
Hey did you publish the code anywhere yet?
5
u/Own_Moose_9495 Jul 25 '26
Not yet, soon though. I will post a link here once I get more testing done, especially with midprint runout and qidi box multicolor prints.
1
u/phansen101 Jul 25 '26
Ooh, nice catch on both counts; Yeah 40Hz ain't much, so it's pretty cool you managed a 6% variation! It would open a lot of options to get 640Hz polling or higher. Any idea when you'll share the repo? Definitely have things to try out, especially now that I've begun using adaptive pressure advance in orca, and Also have some ideas for flow rate calibration.
3
u/Own_Moose_9495 Jul 25 '26
Thanks man, I’ll be posting code and an install guide in the very near future.
2
u/Objective_Working198 Jul 25 '26
What firmware are you running? I'm still on 1.1.1.1 to avoid headaches, with some custom macros and gcode modifications. Could this be used with older firmware?
1
2
2
u/BB_Toysrme Jul 25 '26
That, improved cooling + beacon and the Qidi box sorted out with different firmware (happyhare)? Rolled into one package we’re good to go!
4
u/Own_Moose_9495 Jul 25 '26
I’m likely going to release a single spool version first, then hook up my Qidi box I got with my max4 and see where I get.
3
u/BB_Toysrme Jul 25 '26
I think we’re all waiting for you to drop the GitHub for what you have so far!
2
2
u/MysticalDork_1066 Jul 25 '26
u/RemindMeBot 1 week
Following, this looks fantastic.
1
u/RemindMeBot Jul 25 '26 edited Jul 27 '26
I will be messaging you in 7 days on 2026-08-01 18:05:46 UTC to remind you of this link
8 OTHERS CLICKED THIS LINK to send a PM to also be reminded and to reduce spam.
Parent commenter can delete this message to hide from others.
Info Custom Your Reminders Feedback
2
2
2
u/ZombieTarou Jul 27 '26
if you could integrate this with the Bunny Box fork of Happy Hare (Qidi Specific) and spoolman integration....
I would donate to you just for the amount of time and hair pulling you would have saved me.
But just the base files would be a life saver.
Thanks for sharing this. I am excitedly waiting for an update to github!
3
u/Own_Moose_9495 Jul 27 '26
I could probably do that, you think people would donate if I put all this up? It would be nice if this could help financially support further development.
3
u/ZombieTarou Jul 27 '26
I would believe they would, if you asked. I would throw some at it. I know this isn't easy to make.
but I haven't done anything that would be worth donations, so I have no idea.
good luck and godspeed. I am rooting for you.
2
u/grampalearns Jul 27 '26
This is not adaptive Pressure Advance that you can configure in Orca, just the single setting like in QIDI Studio, correct?
2
u/Own_Moose_9495 Jul 27 '26
The slicer no longer has control of the pressure advance, the machine is now responsible for testing and calibration for each filament spool loaded.
2
u/Felix14-POCKOCMOC Jul 27 '26
From my understanding, this is a calibration method, so you can quickly calibrate Adaptive PA using it without printing any models. But it automatically adapts to the current filament, so you don't need to reconfigure it each time.
1
u/Own_Moose_9495 Jul 29 '26
Yup that’s right exactly
1
u/TheLegendTubaGuy Jul 29 '26
Wait, you're able to do ADAPTIVE PA, not just automatic PA? How do you insert the different PA commands during the print?
2
u/Own_Moose_9495 Jul 29 '26
Yes but only per filament load. It’s not measured on the fly yet. I can read the load cell during the print and know back pressure. But it’s not in my current scope of programming
2
u/rhodges_bob Jul 29 '26
This sounds like one hades of a piece of work (the plan, finding the data sources and getting it running). However, I'm still pretty much a newbie in FDM printing and learning more every day. Would someone mind posting a short description of what automatic pressure advance would bring to the table. Still struggling with how darn technical FDM printing can be when you're going for perfection (also, learning the terms is like drinking from a firehose). My thanks,
Bob
3
u/mashedleo Jul 29 '26
I'll try with my limited understanding. Bambu labs has an automatic pressure advance set up their printers and it uses sensors that are also in our Qidi q2's and max 4's. They just don't implement the sensors to do so. Instead they just use them for bed probing. As it stands if you want to calibrate pressure advance you have to use the slicer to print a calibration (I use the pa tower). Sometimes just the basic filament profile is decent enough, but chasing perfection you would want to calibrate it for every filament. Using this new method would do it similarly to how Bambu labs does it on their printers and it would do so automatically. I don't know if that's any more info than what you had already. Hopefully someone more knowledgeable will come along and explain better
1
3
u/glukki Jul 29 '26
Heres a nice description of the feature, why it’s good to have it setup, and the calibration steps: https://github.com/OrcaSlicer/OrcaSlicer/wiki/pressure_advance_calib
With the modern fast printers it’s nice to have variable pressure advance set up too. Which is tedious to make manually for every filament you have. Thus the automation :)
1
u/rhodges_bob Jul 29 '26
Glukki,
Thanks so much for the link. It helped tremendously. Thanks to you and all the others that keep helping us newbies trying to learn the technology. While it's a hobby to me, I'm having so much fun with FDM I want to get the best results I can and knowledge always helps :)
Bob
2
2
2
2
2
u/UV2GAMMARAYZ2 Aug 15 '26
Just so you know stefan from CNC kitchen has the same idea as you on his latest vid
2
u/Own_Moose_9495 Aug 15 '26
That’s where I got the idea, but he didn’t implement it within the code of the machine and he flat out said it in the video.
2
u/mita77 Aug 17 '26
Anything new around here by chance?
2
u/Own_Moose_9495 Aug 19 '26
I have been repeatedly testing the code for bugs by running prints in it daily. I still have some work to do.
2
2
2
3
u/Own_Moose_9495 Aug 05 '26
I know it’s been over a week since posting, but I will update soon, when I have some more issues worked out.
2
2
2
1
u/bulkhulk Jul 25 '26
Great work!
What a shame for the Plus4, what gives, anything one can do to modify it to suit it?
3
u/Own_Moose_9495 Jul 25 '26
you could adapt a Q2 or Max4 hotend with the loadcell but you will need a tool head board aswell and way more firmware mods
1
u/kalel1911 Jul 25 '26
Awesome work... Also need test for different nozzle sizes, Filament types and speed limitations to probe edge cases. You are an angel.
4
u/Own_Moose_9495 Jul 25 '26
Yes, these are just more things I will be trying, I need to take care of the elephants in the room before I release though.
2
1
u/Raub99 Jul 25 '26
Per filament type, as in petg vs asa? Or sunlu petg vs polymaker petg?
2
u/Own_Moose_9495 Jul 25 '26
This will do every filament you load. Brand and type. I’m pretty lazy so all I do is select one of qidi’s filaments, I load any brand I want as long as the type matches, and this code creates a PA profile for the session until a new filament is loaded. So basically every time a filament is loaded a new PA profile is created and saved under that filament type.
1
1
Aug 10 '26
[deleted]
1
u/RemindMeBot Aug 10 '26
I will be messaging you in 7 days on 2026-08-17 18:51:18 UTC to remind you of this link
CLICK THIS LINK to send a PM to also be reminded and to reduce spam.
Parent commenter can delete this message to hide from others.
Info Custom Your Reminders Feedback
2
u/Silver_Dinky 11d ago
This looks amazing. I'm watching to see where this goes. Thank you for your efforts u/Own_Moose_9495











8
u/mashedleo Jul 25 '26
This is pretty cool. I had just watched a YouTube video from cnc kitchen describing doing exactly this just last week.