For better or worse, most drivers for PC-related hardware like RGB components and fan controllers are built for Windows and aren’t generally of the highest quality. They’re often proprietary and clunky, and even if they aren’t a total mess they generally won’t work on Linux machines at all, or even on a headless setup regardless of OS. This custom fan controller, on the other hand, eschews the operating system almost entirely in favor of an open-source fan controller board that can be reached over a network instead.
The project’s creator, [Sasa], experimented with fan splitters to solve his problems, but found that these wouldn’t be the ideal solution given the sheer number of fans he wanted in his various computers, especially in his network-attached storage machine. For that one he wanted ten fans, with control over them in custom groups that would behave in certain ways depending on what the computer was doing. His solution uses two EMC2305 five-fan controller chip which communicates over I2C on a custom PCB with a RP2040 at the center. This allows the hardware to communicate with USB to the host computer for updating firmware and controlling over the network. There’s also a 1-wire and I2C bus exposed in case any external sensors need to be integrated into this system as well. To get power for all of those fans, the board uses a SATA connector to get power from the computer’s power supply.
With the PCB built and all of the connections to the host computer made, the custom board is able to control up to 10 fans in any custom configuration without needing a monitor or a driver since it is accessible over the network through an API. It’s also open-source so any changes to the firmware or hardware can easily be made for most air-cooled PC situations. If you’re less concerned about the internal case temperature and more concerned about all the heat your PC is dumping into a living space, you might want to look into venting your PC outside instead.


id rather get fan bus strips from the pcb mill of my choice. this is how i manage to run 5 fans off of 2 fan headers. especially when one of the headers can push enough current for a water pump and can run 3 or 4 fans easy. so i got a bank of 3 and a bank of 2. having a hub makes wiring into a nightmare unless you have a large case with a place to hide away your ratsnest, i prefer to avoid the ratsnest entirely.
some caveats: you need to know how much power a fan port can deliver, some mobo manuals do not publish this. but unless you are using some kind of monster fan its usually enough for a midsize case. you can share the pwm signal, but you must only return one tach signal. i usually use the center fan or the fan with the most direct flow path through the things you want to cool. mount the fans to the frame with cable either on top or on the side, and then clip strip and tin the leads and attach them in through hole fashion. you may want to leave a little slack incase you want to crimp a connector to it later on. i usually have a solder jumper for the tach signal. make sure to tape or conformal coat your terminals. you can attach the strip with double sided tape or make a wire bracket to engage the screw holes. sure beats a bunch of splitters and hubs.
‘without needing a monitor or a driver since it is accessible over the network through an API’
Soon he will invent software to control the fans based on OS events. It will be revolutionary.
To each his own, I just don’t see the network as a great idea for managing my fans.. There are USB headers on the motherboard that could have been used to get USB support. Or you can hook into motherboard fan headers for a control signal and group multiple fans together to use them.
There is no network on the board though. It seems to connect over usb. As it’s internal, it seems strange to not just have a pin block for usb, and an rp2040 is massive overkill, both in processing power and component list.
Are those fancy gaming PC enclosures still so crappy that you need a ton of fans blowing in all directions to keep them cool?
Even the best enclosure would struggle to deal with the high end gaming hardware without a heap of fans now – 500w GPU, 200+w CPU makes the thing a space heater that needs pretty high speed airflow throughout. Though crap RGB and Glass with poor airpath ‘stylish’ cases are still going to be a thing…
Don’t forget the tiny closed-loop “water cooling” that moves the heat sink ten centimetres further from the CPU, to nobody’s benefit except those who manufacture LEDs to light up the tubes
I did something similar in my server box. Got an appropriate fan hub, and then flipped around the pwm and ARGB pins so they pointed up I stead of down, soldered on wires going to an rp2040 zero module. Now I have individual fan and ARGB control of everything in the case, programmable by editing the circuitpython file on the 2040 via usb
Looks a lot like the proprietary except with no enclosure. Maybe a small OLED screen showing CFM and other info.