r/QIDI

▲ 1 r/QIDI

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.

reddit.com
▲ 2 r/QIDI

A little HELP here!

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

u/Harry-A-Flie — 2 days ago
▲ 16 r/QIDI

Why is my Q2 hitting a Chinese DNS server once per minute?

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:

  1. Why would it be checking once per minute? That's totally excessive. If it's for updates, a single check at startup would be sufficient.
  2. Why is it querying a Chinese DNS server instead of the DNS server instead of the DNS server provided to it over DHCP?

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?

u/sile1 — 3 days ago
▲ 1 r/QIDI

Q2 sales - how good can I expect?

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?

reddit.com
u/Xhosant — 4 days ago
▲ 11 r/QIDI+1 crossposts

OrcaSlicer crashing on Linux when you open the Device tab? Here's a fix that worked for me

 

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!

reddit.com
u/the_real_vittorio — 4 days ago
▲ 2 r/QIDI+1 crossposts

VFA Belt copy no matter the speed

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.

u/ComprehensiveYou882 — 4 days ago
▲ 1 r/QIDI

Qidi Box keeps using wrong filament each job.

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.

reddit.com
u/JustHere4TheFunz — 4 days ago
▲ 3 r/QIDI

What is wrong with my Q2 extruder?

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.

u/Hohenberg — 5 days ago
▲ 6 r/QIDI+1 crossposts

Qidi Q2 ASA chamber temperature vs printer longevity

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.

u/Valetudinous — 5 days ago
▲ 0 r/QIDI

Print problem how fix pls

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?

u/Kumstock_og — 6 days ago
▲ 7 r/QIDI+1 crossposts

QIDI Q2 showing 360°C while cold / won’t boot after filament blob removal

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:

  • Restarting firmware
  • Rebooting the printer multiple times
  • General troubleshooting/restarting

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.

https://preview.redd.it/uhpgme46mi1h1.jpg?width=3024&format=pjpg&auto=webp&s=1c062bbbfe5d2d04414df658b874e8129ca16ddf

https://preview.redd.it/5p2ace46mi1h1.jpg?width=3024&format=pjpg&auto=webp&s=8125f5122f1fd9d92c9b27bc3f28fa050082dd77

https://preview.redd.it/4zm2ee46mi1h1.jpg?width=3024&format=pjpg&auto=webp&s=17c77af89fefe6d1d5a2f87b8ada78e6d6c5562a

https://preview.redd.it/4h89gg46mi1h1.jpg?width=3024&format=pjpg&auto=webp&s=1afa5077de3660253e5820c825ee491caf5a512f

https://preview.redd.it/6bpzue46mi1h1.jpg?width=3024&format=pjpg&auto=webp&s=2a589e8c274d8c660545b1b6cd1d92957c0ba936

reddit.com
u/MassiveTop7690 — 6 days ago
▲ 4 r/QIDI+1 crossposts

Qidi slicer issue - suddenly printing weird

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.

u/machevara — 7 days ago
▲ 1 r/QIDI

Broken Filament Inside Nozzle

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.

reddit.com
u/LadyAiluros — 5 days ago
▲ 11 r/QIDI

Last year, we had the pleasure of welcoming talented 3D printing creator psych0h3ad to the QIDI headquarters

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!

u/qidi_3dprinter — 7 days ago
▲ 1 r/QIDI+1 crossposts

Print Issues

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?

reddit.com
u/Smart_Swimming2976 — 8 days ago
▲ 17 r/QIDI+2 crossposts

Polar Cooler on my MAX4

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.

u/3Dartfusion — 11 days ago
▲ 21 r/QIDI+2 crossposts

I wanted to document as much of the machine as possible in one place as well as house some FAQs, mods, etc.

u/TheLegendTubaGuy — 11 days ago
▲ 1 r/QIDI+1 crossposts

Build plate came down sideways after a successful print

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.

https://preview.redd.it/wbjb2e58ay0h1.png?width=1714&format=png&auto=webp&s=e1e159870ce09b7e5a8bb961f7f474fae167c614

https://preview.redd.it/8xdu0gt9ay0h1.png?width=2088&format=png&auto=webp&s=b7372274ba12778b03da3154ab2e26c89d4ecdbb

reddit.com
u/TiDoBos — 8 days ago