Qwen Image Blockwise ControlNet Apply
Wiring Qwen's blockwise ControlNet in — if you can find the pipe
- pipe
- controlnet
- image
- QwenImageDiffSynthiPipe
This is the node that's supposed to take a Qwen Image blockwise ControlNet - DiffSynth-Studio's early, per-block design - and plug it into your generation pipeline. It's also the node where this pack's ambition runs into a wall, because the thing it wires into isn't in the pack.
The interface
pipe- typeQwenImageDiffSynthiPipe. Here's the catch: that type is not defined anywhere in this pack. The source comments call it "From existing custom node," and that's the whole story - you need a separate DiffSynth-based Qwen Image ComfyUI wrapper that emits this pipe type. Manager won't fetch it for you. If your graph doesn't already produce that pipe, this node literally cannot connect.controlnet- aQWEN_BLOCKWISE_CONTROLNETfrom the Loader node.image- the control image (the edge map, depth map, or reference that's doing the steering).strength- FLOAT, default 1.0, range 0–10. This is the dial you'll actually touch. Start at 1.0 and back it off if the condition overpowers the prompt; modern Qwen controlnets (the InstantX union) recommend 0.8–1.0, so 1.0 is a sane floor for testing.- Output - the same
QwenImageDiffSynthiPipeit was handed, so you chain it inline with the rest of the DiffSynth pipe flow.
How it "applies"
Mechanically it's a shim, not a ControlNet application. The node converts your ComfyUI image to a PIL image, wraps the pipe in a lightweight proxy that copies its attributes, and then - on every call the pipe makes - injects blockwise_controlnet_inputs=[{'image': ..., 'strength': ...}] into the call's kwargs. Whether any blockwise conditioning actually happens is entirely up to the underlying DiffSynth pipeline knowing what to do with that kwarg.
And here's the honest, source-level caveat: the controlnet module you load from the Loader node is stored by the wrapper but never referenced in the sampling call. Only image + strength get forwarded. So as written, the Apply node trusts the DiffSynth pipe to do the blockwise magic on its own, and the Loader's output is mostly decorative. It's a proof-of-concept, not a finished integration - the pack's own README says it exists "to test how to use Blocknet controlnets."
The bigger picture
This whole approach was a flash in the pan. The blockwise controlnets landed in mid-August 2025, this pack followed days later, and by September 2025 ComfyUI shipped native Qwen Image ControlNet support - the Comfy blog walked through the DiffSynth model_patches route, and the InstantX union (canny, depth, pose, Apache 2.0) arrived sixteen days after Qwen's launch. For a beginner today, that native path is where you want to be: no DiffSynth pipe, no companion custom node, no VRAM-eating 20B stack. Come back to this pack if you're specifically recreating the DiffSynth experiment or you already run the QwenImageDiffSynthiPipe stack for other reasons.
Installing
If you do go this route: search "qwen-image-controlnets-comfyui" in ComfyUI Manager or
cd ComfyUI/custom_nodes
git clone https://github.com/krigeta/qwen-image-controlnets-comfyui
cd qwen-image-controlnets-comfyui
pip install -r requirements.txt
then restart. Just remember the missing piece: without the custom node that provides QwenImageDiffSynthiPipe, the Apply node is a ghost in your graph.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | QwenImageDiffSynthiPipe | — | |
| controlnet | QWEN_BLOCKWISE_CONTROLNET | — | |
| image | IMAGE | — | |
| strength | FLOAT | 1.000–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| QwenImageDiffSynthiPipe | QwenImageDiffSynthiPipe | — |