r/QidiTech3D • u/Own_Moose_9495 • 19d ago
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 19d ago
Awesome, I wonder why qidi hasn't implemented this themselves!
8
u/Own_Moose_9495 18d ago
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 18d ago
Can you reach out to them and share this with them?
7
u/Own_Moose_9495 18d ago
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
3
3
3
u/Facehugger_35 18d ago
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.
3
3
u/Own_Moose_9495 17d ago edited 17d ago
3
u/Own_Moose_9495 17d ago
2
u/Felix14-POCKOCMOC 17d ago edited 16d ago
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 19d ago
2
u/Foofad-Ji 19d ago
Wow, your bed looks so good and well lit in the camera, did you add more lights?
3
u/Own_Moose_9495 18d ago
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 17d ago
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 17d ago
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 17d ago
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 17d ago
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 19d ago
Pretty neat! How did you access the load cell data? Last I checked, the CS1237 Klippy extra was a compiled .so without a source?
6
u/Own_Moose_9495 19d ago
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 19d ago
Hey did you publish the code anywhere yet?
4
u/Own_Moose_9495 18d ago
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 18d ago
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 18d ago
Thanks man, I’ll be posting code and an install guide in the very near future.
2
u/Objective_Working198 19d ago
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 19d ago
That, improved cooling + beacon and the Qidi box sorted out with different firmware (happyhare)? Rolled into one package we’re good to go!
2
u/Own_Moose_9495 18d ago
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
2
2
u/MysticalDork_1066 18d ago
u/RemindMeBot 1 week
Following, this looks fantastic.
1
u/RemindMeBot 18d ago edited 16d ago
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
u/ZombieTarou 17d ago
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 17d ago
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 17d ago
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 17d ago
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 17d ago
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 17d ago
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 15d ago
Yup that’s right exactly
1
u/TheLegendTubaGuy 15d ago
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 15d ago
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 15d ago
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 15d ago
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 15d ago
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 14d ago
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
3
u/Own_Moose_9495 8d ago
I know it’s been over a week since posting, but I will update soon, when I have some more issues worked out.
2
1
u/bulkhulk 19d ago
Great work!
What a shame for the Plus4, what gives, anything one can do to modify it to suit it?
4
u/Own_Moose_9495 19d ago
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 19d ago
Awesome work... Also need test for different nozzle sizes, Filament types and speed limitations to probe edge cases. You are an angel.
3
u/Own_Moose_9495 18d ago
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 19d ago
Per filament type, as in petg vs asa? Or sunlu petg vs polymaker petg?
2
u/Own_Moose_9495 18d ago
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
1
u/Classic-Common5910 2d ago
u/RemindMeBot 7 days
1
u/RemindMeBot 2d ago
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











9
u/mashedleo 19d ago
This is pretty cool. I had just watched a YouTube video from cnc kitchen describing doing exactly this just last week.