nikolai.one
● SYS_CONSOLE // type 'help' for commands
Nikolai Systems Terminal v1.0.4 [x86_64-linux]
Type 'help' to see all available commands. Press '~' or ESC to toggle console.
Try: 'whoami', 'articles' or especially 'showoff'
>
MY ARCHIVE Click the book on the shelf to view bio • Move mouse to look • Press ESC to exit
πŸ“– Inspect Book
← All writing

waku-ctl: Building an Open Source Water Cooling Controller

#hardware #watercooling #c++ #embedded #electronics

If you have ever built a custom water cooling loop for your PC, you know the frustration with fan curve management.

Motherboard BIOS fan curves are fundamentally unsuited for water cooling because they only monitor instantaneous CPU or GPU die temperatures. When a Ryzen or modern Intel CPU spikes to 80Β°C for 2 seconds opening a browser tab, your radiator fans spin up like a jet engine, even though your 1.5 liters of coolant did not heat up by even 0.05Β°C.

Radiator fan speeds should depend on water temperature (specifically the delta between coolant and ambient intake air), not raw die spikes.

Commercial controllers like Corsair Commander or Aqua Computer Aquaero exist, but they lock you into proprietary Windows-only software suites (like iCUE) that consume hundreds of megabytes of RAM and run telemetry in the background.

I wanted something lean, reliable, open source, and cross-platform. That is why I built waku-ctl.

The Architecture

waku-ctl consists of two pieces:

  1. The Hardware & Firmware: A compact PCB powered by an ESP32 microcontroller with 4-pin PWM fan headers, tachometer readings, thermistor inputs, and an RGB controller (with pass-through).
  2. The Control Daemon: A lightweight C++ daemon as well as web interface for ease of use. You can configure it either via WiFi or USB-CDC. OTA updates obviously supported.

Failsafe in Firmware

One non-negotiable rule: if the host operating system crashes, freezes, or reboots, the fans must never stop spinning.

Since the onboard microcontroller runs an independently, you can tell it to shut down your computer if any of the fans stop or the temperature is over a specific limit. There is also a loud buzzer you can trigger to alert you.

The result is a silent, predictable system that keeps thermals rock solid without a single megabyte of bloated vendor software running in the background.

And yes, there are curves and PID modes. If you fancy getting a controller, mail me and I'll send one to you.