Load Flux2 Fun ControlNet
The ControlNet loader that refuses to load anything but the official FLUX.2 Fun file
- control_model
This is the fussy front door to Alibaba PAI's FLUX.2-dev-Fun-Controlnet-Union-2602 - the ControlNet built for Flux.2 Dev. It's a strict loader by design: if the file isn't the official 2602 checkpoint, it throws, and it throws before anything bad happens to your graph. Annoying when you grab the wrong file, and exactly what you want from a node whose whole job is "only this one specific weight, in this one specific format."
Why it exists
"Fun" here is the VideoX-Fun lineage from Alibaba PAI - the same family that gave us Wan Fun ControlNet and the Z-Image-Turbo Fun ControlNet Union. The 2602 checkpoint is the FLUX.2 Dev member of that family: a union model that handles the spatial conditions (canny, depth, pose, sketch, tile-style conditioning, and an inpaint mode) in one file. This node's job is to load that file into the pack's custom FLUX2_FUN_MODEL type so the rest of the gen2 Flux2 Fun chain can consume it. You won't be wiring this into a stock ControlNetLoader - those can't speak to this format.
What makes it strict: it validates the checkpoint's 76-key architecture profile and verifies the file's SHA256 hash (516532a885...a794) against the official artifact. So the README's "only Flux.2 Dev + the 2602 checkpoint is accepted" isn't a slogan, it's a hash check. Flux.1, Flux.2 Klein, the older Union checkpoint, and shape-incompatible derivatives are all rejected on purpose - this ControlNet is trained for one architecture and the author would rather you get a clear error than a silently wrong image.
The two inputs that matter
controlnet_name- a dropdown of files inComfyUI/models/controlnet/. This is the file the 76-key and SHA256 checks run against, so make sure you've actually downloaded the official 2602 checkpoint (Hugging Facealibaba-pai/FLUX.2-dev-Fun-Controlnet-Union) and not a renamed lookalike.precision-auto(pick per hardware),bf16, orfp16. BF16 is the safe default; fp16 if you're squeezing VRAM and accept a small accuracy cost. fp8/GGUF quantization is handled downstream by the pack's dtype support rather than here.
The single output, control_model, feeds straight into Gen2_ApplyFlux2FunControl. You don't decode anything from it - it's a control branch, not a full model.
Install
ComfyUI Manager: search ComfyUI-gen2 and install. Or, manually:
cd ComfyUI/custom_nodes
git clone https://github.com/petmycat/ComfyUI-gen2.git
cd ComfyUI-gen2
pip install -r requirements.txt
Then restart ComfyUI and drop the checkpoint at ComfyUI/models/controlnet/FLUX.2-dev-Fun-Controlnet-Union-2602.safetensors. The Flux2 Fun section needs no Python packages beyond ComfyUI itself - the requirements.txt (scipy, safetensors, transformers) is for the pack's other sections, which is the nice part of this pack: sections load independently, so a missing dep in tiling won't take down the Flux2 Fun nodes. You do need ComfyUI v0.28.0 or newer - this section is pinned to a specific ComfyUI commit and will refuse to work correctly on older versions.
Where people get burned
The loader will reject a wrong file, but the common trap is upstream of that: this is a Dev checkpoint and it needs the 56B Flux.2 Dev stack. On an 8GB card this entire workflow is a non-starter regardless of how well the loader works. And be honest about expectations - the pack author explicitly says real-weight end-to-end parity is not yet claimed, since the dev machine doesn't have the production GPU/weight environment. The control math is implemented and harnessed, but on day one treat it as "works in my test" territory, not a polished product.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| controlnet_name | COMBO | 0 options: | |
| precision | COMBO | 3 options: auto, bf16, fp16 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| control_model | FLUX2_FUN_MODEL | — |