Fanpico
Fanpico: Open Source Programmable PWM (PC) Fan Controller
Install / Use
/learn @tjko/FanpicoREADME
Fanpico: Programmable PWM (PC) Fan Controller
<p><a href="https://certification.oshwa.org/us002599.html" title="Open Source Hardware Association Certificate"><img align="right" width="10%" src="images/fanpico-oshw.svg" alt="[OSHW] US002599 | Certified open source hardware | oshwa.org/cert"></a></p>Fanpico is a smart PWM (PC) fan controller based around Raspberry Pi Pico (RP2040 MCU). Fanpico operates as standalone controller that can be configured and left running. It does not require any drivers and doesn't care what OS is being used. FanPico is an Open-source hardware (OSHW) project.
What is it for?
- Fanpico is for customizing fan "curves" to fine tune how your motherboard controlled fans run.
- Fine tuning fan speeds to easily balance airflow.
- Controlling fan based on temperature sensor input.
- Monitoring fan speeds and behaviour as well as monitoring what exactly motherboard is doing.
- Fanpico works also as standalong controller for other things than a PC, it's been used controlling fans on 3D printers and on enclosed network equipment racks, etc..
Features
- Controls up to 8 fans.
- Connect up to 4 motherboard fan outputs.
- Connect up to 2 remote temperature probes (plus onboard "ambient" temperature sensor).
- Support for 1-Wire Temperature sensors (up to 8 sensors)
- Support for I2C Temperature sensors (up to 8 sensors)
- OLED and LCD display support (boards where model name ends with "D").
- Can be powered from motherboard fan outputs or using auxiliary power connector (4-Pin Floppy or DC Barrel jack connector).
- Ability to define custom fan "curves" for each fan.
- Ability to provide custom tachometer (fan RPM) output signal back to motherboard.
- Support for Locked Rotor (Alarm) signal fans (allows using regular tachometer fans with system expecting Locked Rotor Alarm fans and vice versa).
- Control fans from any motherboard PWM signal or from temperature sensors.
- OS Independent, no drivers or software needed.
- Configuration stored on the device itself (in the flash memory).
- SCPI "like" programming interface (see Command Reference)
- Monitor each fan and motherboard output signals as well as temperatures.
- WiFi support if opting to mount Pico W on the board.
- HTTP server with TLS (HTTPS) support.
- MQTT client with TLS support for logging data and to receive commands.
- Home Assistant support using MQTT Discovery feature.
- Telnet server for configuration and monitoring.
- SSH server for configuration and monitoring (experimental).
- SNMP Agent for monitoring.
Interfaces
-
Serial "Console". Primary method for configuring/monitoring FanPico units is via (USB) Serial console (some units also have 3.3V TTL Serial connection).
-
Desktop application (that polls FanPico using SCPI commands over the console connection): FanPico Monitor
-
Web Interface (available when using Pico W) over WiFi
For more documentation check FanPico Wiki
Sponsors
I would like to thank following sponsors, who have helped FanPico project:
- PCBWay
Where can I get one?
Currently Fanpico is available as a DIY project. Check discussion forums for places to purchase Kits or PCBs: Places to Purchase FanPico
(Instructions for building the kit are in FanPico Wiki)
However, if there is sufficient interest, then ready-made units may be made available for sale. If you'd be interested in purchasing FanPico pease indicate your interest here: FanPico Forum
DIY Option
You can upload the Kerber files (found under boards directory) to your favorite PCB maker website and get your boards produced in matter of days. Component list (BOM or bill of materials) is found under boards directory as well along with the electrical schematics.
NOTE, check discussions forum for giveaways for free PCBs.
Review Units
If you are member of press (or YouTuber) and would like to review/test Fanpico. Please contact me via email.
How Can I help?
- Build your own FanPico and provide feedback, suggestions (see discussion forums).
- If you're into electronics new/improved board designs are most welcome.
- If you're into programming:
- Create cool (desktop) program that allows easily configuring FanPico boards (with ability to "draw" fan curves, etc..) and to monitor Fan statuses.
- Help improve the firmware.
- If you're into graphics (or web) design:
- Help create cool (but lightweight) web interface
- Create better logo for FanPico
- As this is Open (Source) Hardware Project, if you like to build (and sell) assembled boards or DIY kits, you'd be most welcome...
- You can always donate (and get your name added to the Sponsors section, if you so wish).
Hardware
Fanpico is Open Source Hardware, reference design is provided for the "0804" model (8 fan outputs and 4 motherboard fan inputs), and "0804D" model that adds OLED display support (hence the "D" suffix).
Additional models with different combinations of fan inputs/outputs could be easily designed (takining into account limitations of Raspberry Pi Pico I/O limits). New and improved PCB models/designs are most welcome.
Model "0840D" with (with right-angle connectors and DC power connector):
Model "0804" without display (with straight connectors):

Hardware Design
Fanpico (reference design) utilizes all available I/O pins on a Raspberry Pi Pico.
- Fan PWM outputs are driven by the Pico's PWM hardware.
- Motherboard Fan PWM inputs are read using Pico's PWM hardware.
- Tacho signal output (for motherboard connectors) is generated using Pico's PIO hardware, providing extremely stable tachometer signal.
- Tacho signal inputs (from fans) are read differently in model 0804 and 0804D:
- 0804: signals are read using GPIO interrupts, measuring all fans simultaneously by counting number of pulses received over a period of time.
- 0804D: signals are read through multiplexer measuring one fan at a time, by measuring pulse length.
- Temperature readings are done using ADC, with help of a accurrate 3V voltage reference (LM4040). Any NTC (10k or 100k) thermistors can be used as themperature sensors.
- Each FAN output has jumper to select whether fan gets its power from associated MBFAN connector or from the AUX connector
- There is a jumper to select whether power the Fanpico itself from MBFAN1 or AUX connector.
To help design and test Fanpico couple other projects were born:
- Tiny PicoProbe - tiny PicoProbe implementation.
- Fan Test Adapter - adapter to help simulate motherboard fan outputs.
Projects based on FanPico firmware:
- BrickPico - (LEGO) LED Light Kit Controller.
Models (PCB designs)
Currently following models are available:
|Model|Fans (Outputs)|MB Fan (Inputs)|External Temperature Sensors|Display|Notes| |-----|--------------|---------------|-------------------|--------|-----| |FANPICO-0804|8|4|2|N|First publicly available board (reference design).| |FANPICO-0804D|8|4|2|Y|Support for OLED (128x64 or 128x128) displays| |FANPICO-0401D|4|1|2|Y|Adds QWIIC and 1-Wire connectors.| |FANPICO-0200|2|0|2|Y|OLED display supported via QWIIC connector. PCB under development.
(all boards have one additional 'on-board' temperature sensor on the RP2040 MCU itself)
Models ending with "D" have connector to attach OLED display module to see 'real-time' status of fans and temperatures.
OLED panel directly mounted on the PCB:

LCD Panel attached via a short cable:

Accessory Boards (PCB designs)
Following accessories are available:
|Model|Info| |-----|----| |OLED-Adapter|Mounting adapter for OLED boards with different pinouts.| |Power-Board|Adapter for using high-power fans with FanPico.|
Firmware
Firmware is developed in C using the Pico SDK. Pre-compiled firmware is released when there is new major features or bug fixes.
Latest pre-compiled firmware image can be found here: [Releases](h




