Load Advanced ControlNet Model ππ π π
The loader that unlocks scheduling
- tk_optional
- CONTROL_NET
This is the pack's version of ComfyUI's built-in "Load ControlNet Model" node. It reads a ControlNet checkpoint off disk and returns it converted to the Advanced version - the one that supports timestep and latent scheduling, attention masks, custom weights, and sliding-context (video) sampling. If you want the pack's features and you'd rather not rely on the Apply node's on-the-fly conversion, this is the clean way in.
Here's the honest catch, straight from the author: when you pair this with the Apply Advanced ControlNet node, you don't need to do anything special here. The Apply node handles scheduling. This loader just loads. Its one extra input is a convenience for the case where you're not using the Advanced apply node but still want a schedule attached.
How it works
It loads the .safetensors (or .pth) ControlNet you point it at and wraps it so the rest of the pack recognizes it as Advanced-capable. That wrapper is what lets a downstream apply node schedule strength across steps, run per-frame latent keyframes, and cooperate with AnimateDiff-Evolved's sliding context window. Without at least one Advanced node in the graph - this loader or an Advanced apply node - those features simply aren't available, which is the whole reason the pack ships its own loader.
The inputs and outputs that matter
There's really only one required input:
control_net_name- a dropdown of every ControlNet file in yourComfyUI/models/controlnetfolder. Pick the one matching your base model and condition (a Flux depth ControlNet for a Flux workflow, an SDXL canny for SDXL, and so on). ControlNet files are architecture-specific - an SD 1.5 model will not load on Flux.
The optional tk_optional takes a Timestep Keyframe. Use it only when this loader is not feeding an Advanced apply node but you still want the ControlNet to carry a schedule - or to attach the TK_SHORTCUT output from one of the soft-weight nodes. If an Advanced apply node is in the chain, its own timestep input wins and this one is redundant.
The output is CONTROL_NET, which goes into the control_net input of your apply node.
How to install it
ComfyUI Manager, search ComfyUI-Advanced-ControlNet, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet
then restart. No notable dependencies. The pack does not bundle any ControlNet models - you download those yourself. For current bases, the usual sources are the Alibaba PAI "Fun" union models (Z-Image, Flux 2), Shakker's Flux union, InstantX's Qwen union, or xinsir's SDXL union - drop the file into ComfyUI/models/controlnet and it'll appear in the dropdown after a refresh.
Common issues & troubleshooting
The dropdown is empty or your model isn't listed. The file isn't in ComfyUI/models/controlnet, or you haven't refreshed. Restart ComfyUI or hit refresh; check the file actually landed where you think it did.
"Error while deserializing" or a shape mismatch at sampling. Almost always an architecture mismatch - you loaded an SD 1.5 ControlNet into an SDXL/Flux graph or vice versa. No SD-era ControlNet file loads on a modern DiT base; each architecture needs its own set.
The loader node itself is missing after install. Update ComfyUI core, not just the pack. The Manager sometimes reports "up to date" when the core app is actually behind, which leaves nodes half-registered; pulling the pack fresh from GitHub and updating the app clears it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| control_net_name | COMBO | 0 options: | |
| tk_optionalopt | TIMESTEP_KEYFRAME | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONTROL_NET | CONTROL_NET | β |