An ultra-compact (40x40 mm), intelligent 4-channel fan controller built for PC modding, SFF (Small Form Factor) builds, and smart home integration. Please read this carefully!
No proprietary desktop software required: just plug it in, connect to Wi-Fi, and take control immediately via Home Assistant or with your own Arduino code.
- The AirFlow Project Features
- DIY Expansion Port
- Socketed MCU Design)
- PWM Signal Integrity
- Power Input Options
- Hardware Protection
- Dimensions & Clearance
- Getting Started
- Hardware & Pinout
- Power Supply
- Troubleshooting
- Important Words
- Power Supply
- Troubleshooting
- Where to buy (tindie.com)
- License
- The Brain: Powered by a high-performance ESP32-S3 Zero/Mini (or optional ESP32C3 Zero/Mini or ESP32C6 Zero/Mini (NOT SuperMini)). Provides massive computing power for complex PID controllers, Wi-Fi, and Bluetooth.
- 4x Independent Channels: Full PWM control and true RPM feedback (tacho signal) for up to four 12V fans.
- Global Zero-RPM Mode: Basic controllers often rely on a 0% PWM signal, which many fans ignore by dropping to a minimum idle speed. By acting as a master high-side switch, the eFuse allows the ESP32 to physically cut the 12V power to the entire fan rail at once β ensuring absolute 0dB silence for your whole setup when you don't need cooling.
- Premium Power Delivery: Instead of relying on cheap, heat-generating linear regulators (LDOs), this board features a high-end, fully encapsulated K7805-1000R3 switching regulator. This highly efficient (up to 96%) step-down converter guarantees a perfectly stable and icy-cool power supply for the ESP32-S3, ensuring rock-solid 24/7 reliability without any thermal issues.
- Overbuilt Power Delivery: To ensure absolute thermal stability, the main 12V power traces are routed at a massive 1.9 mm width. Even running four heavy-duty (noctua.at) fans at 100% capacity 24/7, the board remains completely cold, for a maximum lifespan of components.
- Standardized Connectors: Equipped with genuine Molex 4-pin headers (47053-1000) featuring friction locks. Fully compatible with all standard 4-pin PWM and 3-pin PC fans out of the box β no proprietary adapters required.
- 4x M2 Mounting Holes: Despite the ultra-compact 40x40 mm footprint, the PCB features four precisely placed M2 mounting holes in the corners. Perfectly prepared for custom 3D-printed enclosures, brass standoffs, or direct integration into your custom PC or SFF chassis. Say goodbye to messy double-sided tape!
- True Right to Repair (Self-Documenting PCB): I believe hardware should be repairable. Instead of hiding component identities or forcing you to hunt through digital BOMs, the PCB silkscreen is exhaustively labeled. Every single component features its designator and, where applicable, its exact value printed right next to the pads. If you ever need to probe, modify, or repair the board, the PCB itself is your physical schematic.
- One More Thing: If the airflow settles, there could be room for something brighter
While the controller is designed to work perfectly right out of the box, I wanted to leave the door wide open for maker, hardware hackers and modders.
The board features an exposed male pin header that grants direct access to the ESP32's remaining resources:
- Power Delivery: Dedicated 5V, 3.3V, and GND pins. You can power your external modules directly through the board's premium onboard voltage regulator.
- 5x Free GPIOs: Fully routable pins ready for your custom physical interfaces.
- Limitless Expansion: Perfect for adding physical rotary encoders for manual speed tuning, tactile buttons, I2C OLED displays, or custom environmental/air quality sensors to trigger your fans automatically.
β οΈ Firmware Note: Please be aware that this expansion header is provided purely as a hardware playground for tinkerers. These extra pins are not implemented in the stock web-interface firmware. They are waiting for you to unleash them via your own custom ESPHome configurations or C++ code!
This board features a socketed MCU design based on the popular "Zero" form factor. You own the hardware, and you decide what runs on it.
- The Default Powerhouse: The board is designed around the ESP32-S3 Zero, providing massive computing power, Wi-Fi, and Bluetooth 5 (LE) for complex local web interfaces and advanced PID fan control.
- Drop-In Upgrades: The socket is fully pin-compatible with other microcontrollers in the same form factor, such as the ESP32-C3 Zero or ESP32-C6 Zero.
- Next-Gen Smart Home Ready: By simply swapping the default MCU for an ESP32-C6 Zero, your hardware immediately gains support for IEEE 802.15.4 wireless standards. This unlocks the physical ability to integrate the controller directly into modern power saving mesh networks!
The original Intel 4-pin fan specification from the early 2000s relies on an open-drain architecture: the controller pulls the PWM signal to Ground and lets it "float" back up, relying entirely on the fan's internal pull-up resistor. While adequate for basic setups, this floating approach often results in degraded, sloppy signal wavesβespecially when using longer cable runs.
To guarantee flawless motor control, this board utilizes a dedicated CD74HCT125M96 logic buffer to deliver a strict 5V Push-Pull PWM signal.
- Perfect Square Waves: Instead of floating, the IC actively drives the signal high (5V) and aggressively pulls it low (GND). This ensures perfectly sharp signal edges and totally eliminates RPM fluctuations or motor clicking.
- Modern Industry Standards: This robust, active signaling approach is designed in accordance with modern high-end cooling standards, perfectly satisfying the strict electrical requirements detailed in Noctua's PWM Specifications White Paper.


The AirFlowProject Remix of Noctua's Amplifier 3D File (printables.com)
No two projects are the same. Whether you are building a standalone desk fan, upgrading a 3D printer, or wiring a custom server rack, you can choose the 12V power input connector that fits your needs:
- DC Barrel Jack (
DC005PJ-002AH): The classic 5.5x2.1mm plug. Perfect for standard 12V wall power adapters. - Screw Terminal (KF350-3.5-2P): The tinkerer's choice. Ideal for bare wires, ferrules, and custom industrial setups.
- JST-VH Latching Header (B2P-VH): A highly secure, locking connector that won't come loose β perfect for custom PC wire harnesses or environments with vibration.
Note: The board is engineered with a single-sided SMT layout.


Most DIY controllers cut costs on protection. This board features a multi-layered, industrial-grade defense system to ensure absolute safety for your fans, the board, and your power supply:
- Reverse Polarity Protection: A dedicated AO4407A P-Channel MOSFET ensures that plugging the 12V input in backwards won't fry the board, while maintaining near-zero voltage drop and heat generation.
- Industrial Protection (eFuse): A dedicated Texas Instruments TPS1H100-Q1 chip protects your fans, the board traces, and your power supply. It features a strict hardware-level cutoff at 2.5 Amps to prevent any damage from shorted fan cables or blocked motors.
- Dual Overcurrent Protection: A secondary 1206 Resettable PTC Fuse acts as an ultimate fail-safe backup on the main power line.
- Clean Power (Freewheeling): An SS34 Schottky diode safely absorbs destructive inductive kickback (flyback voltage) generated by the fan motor coils during PWM switching.
- ESD & Transient Protection (Only Revision 2.1 or newer): A combined defense using an SMF15A TVS diode and a BZT52C15 Zener diode aggressively clamps down sudden voltage spikes from the power supply or static discharge. This dual-stage approach fully protects both the power-entry circuitry and the sensitive core logic.
- 3.3V Logic Clamping: 1N5819W Schottky diodes on the RPM (tacho) input pins strictly prevent any stray 12V signals from the fans from reaching and destroying the ESP32's sensitive 3.3V logic.
The board is designed for compact SFF (Small Form Factor) environments. Please note the following dimensions for your enclosure design:
- Board Size (Outline): 40 x 40 mm
- The USB-C port of the ESP32 Zero extends approximately 1 mm beyond the PCB edge.
- PCB Thickness: 1.6 mm
- Mounting Holes: 4x M2 holes, spaced at 35.4 x 35.4 mm (measured from center to center).
- Component Height (Front/Top):
- The tallest component is ~18 mm.
- Note: Please ensure extra vertical clearance to account for the height of the Molex 4-pin fan connectors (Fan side).
- Component Height (Back/Bottom): Maximum component profile is ~3 mm. Ensure adequate standoff distance (e.g., using 5mm standoffs) if mounting on a flat metal surface to avoid short circuits. You can find a 3D file of the PCB here. That may be help you design a costom housing.
You have two ways to get the board up and running:
Perfect for smart home enthusiasts. Simply flash our pre-configured .yaml file to the board, and your fans will automatically appear in Home Assistant.
INFO: This configuration switches the Fan power automatically. If one or more fans are set to more than 0% PWM it switches the Fan power rail on
π Get the esphome.yaml here

Use the code example to understand the logic and write your own code to get exactly what you need for your special demand.
π Arduino Examples

You will find the whole component list here (Bill of materials (BOM)) and the known issues here:
π BOM, Schematics and Known issues
π Changelog
| Board PIN | ESP32S3 PIN | ESP32C3 PIN | ESP32C6 PIN |
|---|---|---|---|
| Enable | 44 | SOON | SOON |
| FAN0 | 13 | SOON | SOON |
| RPM0 | 11 | SOON | SOON |
| FAN1 | 12 | SOON | SOON |
| RPM1 | 10 | SOON | SOON |
| FAN2 | 2 | SOON | SOON |
| RPM2 | 9 | SOON | SOON |
| FAN3 | 1 | SOON | SOON |
| RPM3 | 8 | SOON | SOON |
| RGB LED | 21 | SOON | SOON |
| H3 PIN6 | 6 | SOON | SOON |
| H3 PIN7 or CS | 7 | SOON | SOON |
| H4 PIN5 | 5 | SOON | SOON |
| H4 PIN4 | 4 | SOON | SOON |
| H4 PIN3 | 3 | SOON | SOON |
It may be possible to use a ESP32C6 XIAO. You must mount it upside down (5v, GND, 3.3V Pins must match the board labeled 5v, GND, 3.3v). And you dont have the full features (because of the missing pins obviously)

To maximize the limited GPIOs of the ESP32-S3, the board features a solder jumper (J1):
- Position "Default": H3 Pin7 is one of five Pins for optional hardware (Rotary encode, Button, Sensors).
- Position "CS" (bridged): Sacrifices the H3 Pin7, but connects the ESP32 GPIO7 directly to the analog current-sense output of the eFuse for live telemetry and software-based short-circuit detection. IMPORTANT do not connect anything to H3 Pin7 anymore.
This analog measurement is designed for rough telemetry, not high-precision metering. At very low currents (e.g., fans running slowly or turned off), the TI eFuse enters an "Open-Load" fault state and outputs a high diagnostic voltage (~3V) instead of a real reading. To prevent massive false power spikes in your dashboard, your firmware must be configured to treat any raw voltage above ~2.5V as 0W.
Please use a high quality 12v 4a Power supply. The board is equipped with a strict 2.5A (FAN CURRENT) hardware limit. This is more than enough for four standard 120/140mm PC fans running at full speed. Do not connect water cooling pumps (like a D5), as their high startup current will immediately trigger the eFuse's 2.5A limit. If you are using the DC005, keep in mind that this connector supports only up to 2.5 amps.
Is something not working? Take a look here:
π Troubleshooting
You are searching for a replacement part:
π BOM
Some isssues are known and we will work on that for future revisions:
π Known issues
Here you will find the schematics:
π Schematics
- REV 2.0:
!!! IMPORTANT: UNMOUNT THE ESP32 Before USING USB !!! If you are using the USB from the mounted ESP32 there could be a Backfeeding. That means in this moment your USB will power up the whole pcb and that could possibly overload your USB Port or damages the ESP32 Hardware. It is strictly recommended to physically unmount the ESP32 from the PCB before using the USB for flashing. A OTA update function could be a good solution for this. !!! In any case disconnect the 12v Power supply. Before using the USB Port !!! I am working on that for future revisions to fix this behavior for newer boards (Rev 2.1)
If you have any questions or feedback, feel free to open an issue!
This project uses a split-licensing model to keep the software open for the community while protecting the hardware design.
- Software / Firmware: Released under the MIT License.
- Hardware Design (Schematics): Released under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) License. You may view and study the schematics, but you may not modify them or use them for commercial purposes without explicit permission.
- Media: All photos, graphics, and logos in this repository are All Rights Reserved and may not be used commercially or to promote derivative hardware projects.





