You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+35-38Lines changed: 35 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,6 +16,16 @@ A CE-certified, ESP32-based PWM fan controller designed for home server racks, m
16
16
17
17
**Professional Quality**: CE certified hardware with RGB status LEDs showing system status at a glance. Standard 12V barrel jack power input works with commonly available power supplies.
18
18
19
+
## Get Your Board
20
+
21
+
**Ready to upgrade your setup?**
22
+
23
+
**[Buy on Elecrow - $35.99](https://www.elecrow.com/wifi-fancontroller1.html)** - Boards and 3D-printed cases available
24
+
25
+
**[Complete Documentation & Web Installer](https://fancontroller.arthofer.dev/)** - Flash firmware directly from your browser
26
+
27
+
**DIY Case**: Print your own case using the [WiFi Fancontroller Case](https://www.printables.com/model/987263-wifi-fancontroller-case) design on Printables.com.
28
+
19
29
## Specifications
20
30
21
31
***Power**
@@ -36,25 +46,37 @@ A CE-certified, ESP32-based PWM fan controller designed for home server racks, m
36
46
* WiFi (ESP32/ESP32-S2)
37
47
* USB-C for programming and power (Rev 2.0+)
38
48
39
-
## Get Your Board
49
+
## Power Draw
40
50
41
-
**Ready to upgrade your setup?**
51
+
The power usage of the device is dominated by the fans.
52
+
As a standalone device, these are the measured power figures in different operation modes.
42
53
43
-
**[Buy on Elecrow - $35,99](https://www.elecrow.com/wifi-fancontroller1.html)** - Boards and 3D-printed cases available
54
+
Mode | Power Draw
55
+
---- | ----------
56
+
Active Wifi Transfer (e.g. OTA Upload) | 0.6W
57
+
Wifi connected, power save mode deactivated (not default) | 0.52W
58
+
```Default``` Wifi connected, LEDs showing status (one-colored) | 0.25W
59
+
Wifi connected, LEDs off | 0.2W
60
+
Deep Sleep | 0.07W
44
61
45
-
**[Complete Documentation & Web Installer](https://fancontroller.arthofer.dev/)** - Flash firmware directly from your browser
62
+
Disabling Wifi while not in deep sleep does not reduce power consumption, as the default light power save mode already does a good job.
46
63
47
-
**DIY Case**: Print your own case using the [WiFi Fancontroller Case](https://www.printables.com/model/987263-wifi-fancontroller-case) design on Printables.com.
64
+
These values have been measured via a DPS3005 power supply, therefore, their accuracy cannot be guaranteed.
65
+
66
+
---
48
67
49
68
## Quick Start
50
69
51
70
All boards come pre-flashed with an ESPHome factory image that's ready to use:
52
71
53
-
1.**Power up the board** via USB-C or 12V DC
72
+
1.**Power up the board** via USB-C or 12V DC (USB-C is for flashing only, power via 12V DC barrel jack is required for fans)
54
73
2.**Connect to the WiFi hotspot** (e.g. `fancontroller-r3-1-abcdef`)
55
74
3.**Configure your WiFi** through the captive portal
56
75
4.**Done!** Board appears in Home Assistant via ESPHome
57
76
77
+
**What you get out of the box:**
78
+
The factory firmware exposes all 4 fan channels as speed controls in Home Assistant, along with temperature and humidity readings from the onboard sensor. Fan speeds can be adjusted manually from 0–100% or automated via Home Assistant. RPM monitoring is available for each fan port.
79
+
58
80
For custom firmware or troubleshooting, see [Installation Methods](#installation-methods) below.
59
81
60
82
### Identifying Your Board Revision
@@ -67,8 +89,8 @@ Revision | Left | Fan Ports | Right | Details
67
89
2.0 | DC 12V, Status LED | Fans | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev2.0) |
68
90
3.0 | DC 12V, Status LED, QWIIC | Fans | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev3.0) |
69
91
3.1 | DC 12V, RGB Status LED, QWIIC | Fans, RGB Status LEDs | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev3.1) |
70
-
3.2 | DC 12V, RGB Status LED, QWIIC | Fans, RGB Status LEDs | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev3.2) | Functionally identical to Rev 3.1
71
-
3.3 | DC 12V, RGB Status LED, QWIIC | Fans, RGB Status LEDs | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev3.3) | Functionally identical to Rev 3.1
92
+
3.2 | DC 12V, RGB Status LED, QWIIC | Fans, RGB Status LEDs | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev3.2) | Compatible firmware and pinout — hardware-only revisions
93
+
3.3 | DC 12V, RGB Status LED, QWIIC | Fans, RGB Status LEDs | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev3.3) | Compatible firmware and pinout — hardware-only revisions
72
94
73
95
---
74
96
@@ -78,7 +100,7 @@ Revision | Left | Fan Ports | Right | Details
78
100
79
101
Flash pre-built firmware directly from your browser at **[fancontroller.arthofer.dev](https://fancontroller.arthofer.dev/)**
80
102
81
-
**Note for ESP32-S2 boards (Rev 2.0, 3.x):** Web-based flashing may have connectivity issues. Currently (4.3.2025) the most reliable web tool is [ESPWEBTOOL by Spacehuhn](https://esptool.spacehuhn.com/). If the browser flash fails, use Method 2 (esptool) instead.
103
+
Note for ESP32-S2 boards (Rev 2.0, 3.x): Web-based flashing may have connectivity issues. The most reliable web tool is [ESPWEBTOOL by Spacehuhn](https://esptool.spacehuhn.com/). If the browser flash fails, use Method 2 (esptool) instead.
82
104
83
105
### Method 2: esptool (Alternative for ESP32-S2)
84
106
@@ -167,6 +189,9 @@ No manual pin configuration needed - just import the package and customize your
167
189
168
190
---
169
191
192
+
<details>
193
+
<summary><strong>Fan Control Modules (advanced — click to expand)</strong></summary>
194
+
170
195
## Fan Control Modules
171
196
172
197
Beyond the basic hardware configuration, this project includes optional control modules that implement different fan control strategies. These modules can be imported into your configuration to add temperature-based fan control or status displays.
@@ -348,24 +373,7 @@ You can combine multiple modules in your configuration. For example:
348
373
- Use RPM PI control with temperature sensors to create a custom automation that sets target RPM based on temperature thresholds
349
374
- Combine linear temperature control with RPM status LEDs for simple automatic control with visual feedback
350
375
351
-
---
352
-
353
-
## Power Draw
354
-
355
-
The power usage of the device is dominated by the fans.
356
-
As a standalone device, these are the measured power figures in different operation modes.
357
-
358
-
Mode | Power Draw
359
-
---- | ----------
360
-
Active Wifi Transfer (e.g. OTA Upload) | 0.6W
361
-
Wifi connected, power save mode deactivated (not default) | 0.52W
362
-
```Default```Wifi connected, LEDs showing status (one-colored) | 0.25W
363
-
Wifi connected, LEDs off | 0.2W
364
-
Deep Sleep | 0.07W
365
-
366
-
Disabling Wifi while not in deep sleep does not reduce power consumption, as the default light power save mode already does a good job.
367
-
368
-
These values have been measured via a DPS3005 power supply, therefore, their accuracy cannot be guaranteed.
376
+
</details>
369
377
370
378
---
371
379
@@ -377,17 +385,6 @@ These values have been measured via a DPS3005 power supply, therefore, their acc
377
385
378
386
**Need Help?** Open an issue on [GitHub](https://github.com/zeroflow/wifi-fancontroller/issues) or consult the ESPHome documentation.
379
387
380
-
---
381
-
382
-
## Resources
383
-
384
-
- **Documentation & Web Installer**: [fancontroller.arthofer.dev](https://fancontroller.arthofer.dev/)
385
-
- **Purchase Boards**: [Elecrow Store - $35,99](https://www.elecrow.com/wifi-fancontroller1.html)
> **Note:** ESP32-S2 boards may have connectivity issues with web-based flashing. If browser flash fails, use [esptool](https://github.com/espressif/esptool) for reliable flashing:
<summary>⚠️ USB flashing not working? (ESP32-S2 known issue)</summary>
36
+
<p>The ESP32-S2 has known USB reliability issues — there is no permanent fix. If the browser installer fails, use <ahref="https://esptool.spacehuhn.com/">ESPWEBTOOL by Spacehuhn</a> as a fallback:</p>
37
+
<ol>
38
+
<li>Connect the board via USB-C</li>
39
+
<li>Hold BOOT, press RESET to enter boot mode</li>
40
+
<li>Click "Connect" in ESPWEBTOOL</li>
41
+
<li>Remove all flash entries except one</li>
42
+
<li>Flash the <code>.bin</code> file at address <code>0x0</code></li>
43
+
</ol>
44
+
<p>Alternatively, use <ahref="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
> **Note:** ESP32-S2 boards may have connectivity issues with web-based flashing. If browser flash fails, use [esptool](https://github.com/espressif/esptool) for reliable flashing:
<summary>⚠️ USB flashing not working? (ESP32-S2 known issue)</summary>
41
+
<p>The ESP32-S2 has known USB reliability issues — there is no permanent fix. If the browser installer fails, use <ahref="https://esptool.spacehuhn.com/">ESPWEBTOOL by Spacehuhn</a> as a fallback:</p>
42
+
<ol>
43
+
<li>Connect the board via USB-C</li>
44
+
<li>Hold BOOT, press RESET to enter boot mode</li>
45
+
<li>Click "Connect" in ESPWEBTOOL</li>
46
+
<li>Remove all flash entries except one</li>
47
+
<li>Flash the <code>.bin</code> file at address <code>0x0</code></li>
48
+
</ol>
49
+
<p>Alternatively, use <ahref="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
> **Note:** ESP32-S2 boards may have connectivity issues with web-based flashing. If browser flash fails, use [esptool](https://github.com/espressif/esptool) for reliable flashing:
<summary>⚠️ USB flashing not working? (ESP32-S2 known issue)</summary>
48
+
<p>The ESP32-S2 has known USB reliability issues — there is no permanent fix. If the browser installer fails, use <ahref="https://esptool.spacehuhn.com/">ESPWEBTOOL by Spacehuhn</a> as a fallback:</p>
49
+
<ol>
50
+
<li>Connect the board via USB-C</li>
51
+
<li>Hold BOOT, press RESET to enter boot mode</li>
52
+
<li>Click "Connect" in ESPWEBTOOL</li>
53
+
<li>Remove all flash entries except one</li>
54
+
<li>Flash the <code>.bin</code> file at address <code>0x0</code></li>
55
+
</ol>
56
+
<p>Alternatively, use <ahref="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
> **Note:** ESP32-S2 boards may have connectivity issues with web-based flashing. If browser flash fails, use [esptool](https://github.com/espressif/esptool) for reliable flashing:
<summary>⚠️ USB flashing not working? (ESP32-S2 known issue)</summary>
48
+
<p>The ESP32-S2 has known USB reliability issues — there is no permanent fix. If the browser installer fails, use <ahref="https://esptool.spacehuhn.com/">ESPWEBTOOL by Spacehuhn</a> as a fallback:</p>
49
+
<ol>
50
+
<li>Connect the board via USB-C</li>
51
+
<li>Hold BOOT, press RESET to enter boot mode</li>
52
+
<li>Click "Connect" in ESPWEBTOOL</li>
53
+
<li>Remove all flash entries except one</li>
54
+
<li>Flash the <code>.bin</code> file at address <code>0x0</code></li>
55
+
</ol>
56
+
<p>Alternatively, use <ahref="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
> **Note:** ESP32-S2 boards may have connectivity issues with web-based flashing. If browser flash fails, use [esptool](https://github.com/espressif/esptool) for reliable flashing:
<summary>⚠️ USB flashing not working? (ESP32-S2 known issue)</summary>
51
+
<p>The ESP32-S2 has known USB reliability issues — there is no permanent fix. If the browser installer fails, use <ahref="https://esptool.spacehuhn.com/">ESPWEBTOOL by Spacehuhn</a> as a fallback:</p>
52
+
<ol>
53
+
<li>Connect the board via USB-C</li>
54
+
<li>Hold BOOT, press RESET to enter boot mode</li>
55
+
<li>Click "Connect" in ESPWEBTOOL</li>
56
+
<li>Remove all flash entries except one</li>
57
+
<li>Flash the <code>.bin</code> file at address <code>0x0</code></li>
58
+
</ol>
59
+
<p>Alternatively, use <ahref="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
0 commit comments