Open Source PWM Fan Controller
FanBoy is an Open Source DIY approach to providing a cross-platform PWM fan controller with temperature sensor support that can easily be modified to fit your needs.
- Four discrete PWM channels
Supports multiple fans per channel (up to 40 W max. total power draw), auto-detection for disconnected fans and RPM sensing - Two temperature sensor inputs
Supports standard 10 kΩ thermistors - Based on well-known Arduino platform
Uses the ATmega32U4 of an Arduino Leonardo as MCU for minimal development overhead - Multiple operation modes per channel
including fixed duty, linear and target temperature 1 - Persistent data storage
Stores all settings as well as last operation mode CRC-protected in EEPROM - Simple serial protocol
Comes with a simple static library for communication abstraction as well as a command line utility for configuration
1 Planned but not implemented yet
This DIY kit consists of multiple components that are reflected as subdirectories:
Folder | Description | Platforms |
---|---|---|
pcb | PCB that can be manufactured very cheap via common PCB fabrication services | Linux, Win32, Mac |
firmware | Firmware based on Arduino Core | Linux, Win32, Mac |
libfanboy | Static C library that implements serial interface between host and FanBoy | Linux, Win32, Mac |
enclosure | Simple 3D printable enclosure that fits a 2.5" drive slot | - |
fanboycli | Command line client based on libfanboy |
Linux, Win32, Mac |
ℹ️ In addition to these components there is a Qt based GUI called FanMan.
The code uses 4-space indentation and K&R style bracing. Usage of Arduino libraries is kept low to keep the possibility of switching to avr-libc. Code documentation is done inline (headers) using Doxygen.
Pull requests are always welcome. Feel free to report bugs or post questions using the issues function on GitHub.
This project is published under the terms of the MIT License. See the file
LICENSE
for more information.