What filaments does everyone use looking for recommendations for all flavours
I currently have tried sunlu high speed matte petg and Anycubic pla and tpu. Don’t really have much experience in the different brands so any pointers would be great.
I currently have tried sunlu high speed matte petg and Anycubic pla and tpu. Don’t really have much experience in the different brands so any pointers would be great.
Here is my problem, this shroud has been sliced in both Qidislicer and Cura. Both slices show a correct version that should print fine but when printed on Qidi Plus 4, I get a solid print with no center “hole”. What is happening here? Did I screw up or is the printer confused?
photo 1 what it should print photo 2 what it prints
Until I just now blocked it, my Q2 has been querying a Chinese DNS server once per minute, probably ever since I set it up. Additionally, it's hitting an Amazon EC2 instance with IP 54.68.120.215 at about the same frequency.
I suspect it's part of the update check, but there are two issues here that make me more suspicious of what it's doing:
Another possibility I guess is that it would be part of the QiDi account stuff to connect/send prints remotely, but I don't have any of that configured (never set up an account), so why would it be requesting once per minute?
Gravitating towards a Q2 but on a budget, not too keen to wait too long, so I wanted to ask: how's their offers looking, usually? I have a 5% for the first order, is it likely to get a better offer?
Been pulling my hair out over this for a while. Every time I clicked the Device tab in OrcaSlicer to monitor my Qidi Plus 4, the whole app would segfault and die. Tried every environment variable people suggest online (WEBKIT_DISABLE_COMPOSITING_MODE, LIBGL_ALWAYS_SOFTWARE, etc.), nothing worked.
After a lot of digging I found the actual root cause: it's not a driver issue, it's the version of Fluidd that ships with Qidi's firmware. It uses an outdated library called vue-resize that corrupts memory in the WebKit browser embedded in OrcaSlicer. Newer versions of Fluidd already fixed this, but not the one shipped with Qidi firmware.
So I wrote a small workaround: a tiny C file that you can compile and inject via LD_PRELOAD. Save this as webkit_vueresize_fix.c, then:
gcc -shared -std=c99 -fPIC -O2 -o webkit_vueresize_fix.so webkit_vueresize_fix.c -ldl
LD_PRELOAD=./webkit_vueresize_fix.so orca-slicer
That's it.
If you want to make it permanent so you don't have to type it every time, copy the .so somewhere and add this line to /usr/bin/orca-slicer just before the final exec:
export LD_PRELOAD="/usr/lib/webkit_vueresize_fix.so${LD_PRELOAD:+:$LD_PRELOAD}"
The C code:
/*
* webkit_vueresize_fix.c
*
* LD_PRELOAD hook for OrcaSlicer on Linux.
* Intercepts webkit_web_view_load_uri and injects a user script that
* replaces the broken vue-resize <object> hack with native ResizeObserver,
* preventing the WebKitGTK crash on Fluidd < v1.37.0.
*
* Build:
* gcc -shared -fPIC -o webkit_vueresize_fix.so webkit_vueresize_fix.c \
* -ldl $(pkg-config --libs glib-2.0) -I$(pkg-config --cflags glib-2.0)
*
* Usage:
* LD_PRELOAD=/path/to/webkit_vueresize_fix.so orca-slicer
*/
#define _GNU_SOURCE
#include <dlfcn.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* --- Minimal webkit2gtk type stubs (no headers needed) --- */
typedef void* WebKitWebView;
/* --- The patch script ---
* Replaces vue-resize's broken <object>-based ResizeObserver with a shim
* that uses the native ResizeObserver API, which WebKitGTK supports correctly.
* This runs at document-start, before any framework code executes.
*/
static const char *PATCH_SCRIPT =
"(function() {"
" 'use strict';"
/* Block creation of <object> elements used by vue-resize for size detection.
* vue-resize injects a hidden <object> with type='text/html' to detect
* container resizes — this is the specific hack that triggers the WebKitGTK
* crash (heap corruption in AcceleratedBackingStore). */
" var _origCreateElement = document.createElement.bind(document);"
" document.createElement = function(tag) {"
" if (typeof tag === 'string' && tag.toLowerCase() === 'object') {"
" var el = _origCreateElement('div');"
/* Mark it so we can detect it if needed */
" el.setAttribute('data-vr-shim', '1');"
" Object.defineProperty(el, 'contentDocument', { get: function() { return null; } });"
" Object.defineProperty(el, 'contentWindow', { get: function() { return null; } });"
/* Swallow the load event that vue-resize listens to */
" var _origAddEL = el.addEventListener.bind(el);"
" el.addEventListener = function(type, fn, opts) {"
" if (type === 'load') return;"
" return _origAddEL(type, fn, opts);"
" };"
" return el;"
" }"
" return _origCreateElement(tag);"
" };"
/* Additionally, patch the vue-resize module directly if it exposes itself.
* vue-resize registers a Vue plugin; we stub addResizeListener/removeResizeListener
* with a native ResizeObserver-based implementation. */
" var _roMap = typeof WeakMap !== 'undefined' ? new WeakMap() : null;"
" function _addResizeListener(el, fn) {"
" if (!el || !fn) return;"
" if (typeof ResizeObserver !== 'undefined' && _roMap) {"
" if (!_roMap.has(el)) {"
" var observers = [];"
" _roMap.set(el, observers);"
" }"
" var ro = new ResizeObserver(function(entries) {"
" fn();"
" });"
" ro.observe(el);"
" _roMap.get(el).push({ fn: fn, ro: ro });"
" }"
" }"
" function _removeResizeListener(el, fn) {"
" if (!el || !_roMap || !_roMap.has(el)) return;"
" var observers = _roMap.get(el);"
" for (var i = observers.length - 1; i >= 0; i--) {"
" if (observers[i].fn === fn) {"
" observers[i].ro.disconnect();"
" observers.splice(i, 1);"
" }"
" }"
" }"
/* Patch window so that when vue-resize module is evaluated it picks up our impl */
" window.__vueResizePatch = {"
" addResizeListener: _addResizeListener,"
" removeResizeListener: _removeResizeListener"
" };"
/* Hook module system: intercept require/define for 'vue-resize' */
" var _defineOrig = typeof define !== 'undefined' ? define : null;"
" Object.defineProperty(window, 'define', {"
" configurable: true,"
" get: function() { return _defineOrig; },"
" set: function(fn) { _defineOrig = fn; }"
" });"
/* Final safety net: override Object.prototype to catch vue-resize install */
" console.log('[vr-fix] vue-resize WebKitGTK patch active');"
"})();";
/* --- webkit2gtk function pointer types --- */
typedef void* WebKitUserContentManager;
typedef void* WebKitUserScript;
typedef int WebKitUserContentInjectedFrames;
typedef int WebKitUserScriptInjectionTime;
#define WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES 0
#define WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START 0
typedef WebKitUserContentManager* (*wv_get_ucm_t)(WebKitWebView*);
typedef WebKitUserScript* (*us_new_t)(const char*,
WebKitUserContentInjectedFrames,
WebKitUserScriptInjectionTime,
const char* const*,
const char* const*);
typedef void (*ucm_add_script_t)(WebKitUserContentManager*,
WebKitUserScript*);
typedef void (*us_unref_t)(WebKitUserScript*);
typedef void (*load_uri_orig_t)(WebKitWebView*, const char*);
static load_uri_orig_t real_load_uri = NULL;
/* Resolved once, reused for all calls */
static wv_get_ucm_t sym_get_ucm = NULL;
static us_new_t sym_script_new = NULL;
static ucm_add_script_t sym_add_script = NULL;
static us_unref_t sym_us_unref = NULL;
#define DLSYM_FN(dst, sym) do { \
void *_p = dlsym(RTLD_DEFAULT, sym); \
memcpy(&(dst), &_p, sizeof(_p)); \
} while(0)
#define DLSYM_FN_NEXT(dst, sym) do { \
void *_p = dlsym(RTLD_NEXT, sym); \
memcpy(&(dst), &_p, sizeof(_p)); \
} while(0)
static void resolve_symbols(void) {
if (sym_get_ucm) return;
DLSYM_FN(sym_get_ucm, "webkit_web_view_get_user_content_manager");
DLSYM_FN(sym_script_new, "webkit_user_script_new");
DLSYM_FN(sym_add_script, "webkit_user_content_manager_add_script");
DLSYM_FN(sym_us_unref, "webkit_user_script_unref");
if (!sym_get_ucm || !sym_script_new || !sym_add_script || !sym_us_unref)
fprintf(stderr, "[vr-fix] WARNING: could not resolve webkit UCM symbols\n");
}
/*
* Inject the patch script into a WebView's UserContentManager.
* Must be called BEFORE load_uri — ideally right after webkit_web_view_new.
*/
static void inject_script(WebKitWebView *wv) {
resolve_symbols();
if (!sym_get_ucm || !sym_script_new || !sym_add_script || !sym_us_unref)
return;
WebKitUserContentManager *ucm = sym_get_ucm(wv);
if (!ucm) {
fprintf(stderr, "[vr-fix] WARNING: null UserContentManager\n");
return;
}
WebKitUserScript *script = sym_script_new(
PATCH_SCRIPT,
WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START,
NULL, /* whitelist: NULL = all URIs */
NULL /* blacklist: none */
);
if (!script) {
fprintf(stderr, "[vr-fix] WARNING: webkit_user_script_new returned NULL\n");
return;
}
sym_add_script(ucm, script);
sym_us_unref(script);
fprintf(stderr, "[vr-fix] patch injected into WebView %p\n", (void*)wv);
}
/* --- Hook webkit_web_view_load_uri ---
* Inject the patch script on EVERY load_uri call, for every WebView.
* The script is idempotent: it overwrites the same globals each time
* (runs at document-start so duplicate injection is harmless).
* This avoids hooking webkit_web_view_new whose signature varies.
*/
void webkit_web_view_load_uri(WebKitWebView *web_view, const char *uri) {
if (!real_load_uri)
DLSYM_FN_NEXT(real_load_uri, "webkit_web_view_load_uri");
fprintf(stderr, "[vr-fix] load_uri %p -> %s\n", (void*)web_view, uri ? uri : "(null)");
if (web_view)
inject_script(web_view);
real_load_uri(web_view, uri);
}
Tested on Arch Linux, AMD Radeon Pro WX 7100, Wayland. Works on my Qidi Plus 4: Device tab loads Fluidd without any crash. Hope it helps someone else too!
Hello, first photo vfa test.
Other photo speed at 150, pa tower from qidi, 150 was the best looking one from vfa test.
I got the printer 2 weeks ago, it's wonderful and works very well, but no matter what I do, I have belt marks on both axis, z motion have those really visible belt marks. Where x motion have a funny smearing of what seems like belt that's being dragged, are loose? So the opposite.
I did try to re-tension the belts 4 times now, I'm doing it as it is on the wiki.
First time the belts were too tight and those imprints were very sharp. Input shaper was at a high frequency for both.
Other 3 times the shaper stabilized and are giving mvz type with good accelerations.
The problem is there is no speed up to 150 that doesn't have any marks,
Does your printer do that too?
I had a smaller one before and I could no problem get a nice smooth surface after some tweaking. Here it's like that's what It can.
I have
Inland ABS in slot 1
Polymaker HT-PLA-GF in slot 2
Yousu PETG in slot 3
I've set all the objects I want to print to use slot 1 (ABS) but the printer keeps trying to use slot 3 (PETG). I even removed slot 3 completely, click synchronize filament list from AMS, map
1 ABS --> A1
2 PLA --> A2
3 PETG --> A3
Slice and print. The printer still feeds from slot 3.
I even removed filaments 2 & 3 and have just the ABS (slot 1) and it's still trying to print from slot 3. Has anyone experienced this? My Qidi Box is useless now.
I've even tried this in Qidi Studio and still have the same problem.
The gears spin but don't feed the filament. It stopped extruding in the middle of a print, none of the usual culprits were to blame. I thought it was a nozzle clog but I swapped in a clean 0.6 nozzle and I'm still getting nothing. I took the extruder off and can't find any clogs or jams. I can manually feed filament through the extruder by turning the two gears. When everything is in place however, the gears spin but don't engage with the filament and at best I can get a little blob after extruding 100mm.
The Qidi Q2 specs say the chamber can go up to 65°C. But is it a good idea to actually run it that hot? Can it prematurely wear out parts of the printer?
Has anyone encountered issues from prolonged use of the Q2 at chamber temperatures of 60°C or over? If so, which problems were they?
Background:
I'm new to enclosed printers. My Q2 has stock 0.4mm nozzle.
I ran basic calibrations on some generic ASA filament. The results suggested 265°C nozzle temperature, 0.92 flow ratio, max volumetric speed 20mm3/s.
Today attempted my first large model, this desiccant holder for the Qidibox: https://www.printables.com/model/1636883-qidi-box-desiccant-vessel-qidi-q2-qidi-plus-4-qidi . Stock PEI plate, washed about 5 prints ago. The intervening prints were small ASA parts that succeeded and I minimised finger contact to the bed when removing them. Sprayed two squirts of 3dLac+ onto the plate before the big print. Set outer brim to 6mm with 0.25mm gap. Chamber temperature set to 55°C and bed to 90°C for all layers (Orca generic ASA defaults, IIRC).
Unfortunately, the print turned into spaghetti after about 10mm. So I'm after tips for next attempt on this part, and for other big ASA prints.
I will definitely reduce the brim gap to 0 next time, and wash the plate right before printing. Probably also run chamber at 60 or 65°C.
Hello, so I did the basic print of benchy, used only the touchscreen, no slicer, no nothing, just wanted to test if it works since I got it today.
The print is overall nice, but it has this sort of a trench, how to take precautions so this doesn’t happen when I do an actual print?
Hi everyone,
I’m using a QIDI Q2 and ran into an issue today.
During a print, filament built up around the nozzle (likely failed adhesion). While removing the filament blob, a firmware error suddenly appeared.
After that, I removed almost all of the stuck filament and tried:
Now the printer won’t boot properly.
The strange part is that the nozzle is completely cold, but the screen shows around 360°C.
I also noticed that one of the wires near the hotend/nozzle area may have come loose or detached while removing the filament.
Has anyone experienced this before?
Does this sound like a thermistor/wiring failure, or could it be something else?
Would this usually require replacing the thermistor/hotend assembly?
Photos attached. Any help would be appreciated.
Recently started having an issues with Qidi studio were the first few layers come out atrocious. But just tested orca with a benchy and it printed perfectly. I also just uninstalled Qidi studio and deleted all folders to do a clean install.
The black half circle is a failed 1st layer. So is the benchy. The current benchy printing I had to raise z-offset +.015 to save it in 1-3 layers and once it looked like it stabilized lowered z back to .0 and the rest of the print is looking great.
Anyone have any idea why suddenly it suddenly changed to print like this.
Also, bed is leveled and trammed. Filament is dried.
So it finally happened - I had some filament break inside the nozzle above where it gets hot so I can't just push it out - or at least it was not pushing. I have new nozzles on order to make sure I can finish the project Im working on by my self-imposed deadline but is there a way to get the filament out and save the nozzle? It's gucky but still functions.
Qudi Q2.
The Polar Cooler arrives on the same packaging, or it will be shipped later?
Someone here knows?
While showing him around our company, we had a great conversation about everything from 3D printing technology to maker craftsmanship.
Thank you again for visiting us!
I skipped the tuning when I first set up my Q2. My prints still come out pretty good, but the detail isn’t as sharp as id hope it should be, and I’m getting some stringing on a lot of prints. I’ve updated everything, but now I’m wondering if I should go back and redo the tuning, run a full calibration, or maybe even factory reset it. What would you recommend?
I installed a Polar Cooler on my MAX4, but the original T-shaped cable ties kept getting caught on the top glass panel. So I lined up several PTFE gaskets on the airflow pipe and attached them, and now they don't get caught anymore.
I wanted to document as much of the machine as possible in one place as well as house some FAQs, mods, etc.
Printed a small PETG part on Monday, right after it finished (flawlessly) it made a horrific loud noise and I looked over to see this. Any thoughts on how to approach a fix? I haven't tried to level or adjust it out of concern I'd make it worse. I emailed plus4support but haven't heard back yet. (Surprising, in the past they've gotten back to me next day every time).
I printed at least 10 parts in the previous week with no issues, and a few hundred over the past 1.5 years I've had the printer - it's been bulletproof until now. I greased the Z screws a month or so ago, and do so every few months along with the XY rods.