Skip to content

Commit f5d49bc

Browse files
committed
Add warning to flashing, reword readme.
1 parent 4ecf763 commit f5d49bc

File tree

7 files changed

+137
-102
lines changed

7 files changed

+137
-102
lines changed

README.md

Lines changed: 35 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ A CE-certified, ESP32-based PWM fan controller designed for home server racks, m
1616

1717
**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.
1818

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+
1929
## Specifications
2030

2131
* **Power**
@@ -36,25 +46,37 @@ A CE-certified, ESP32-based PWM fan controller designed for home server racks, m
3646
* WiFi (ESP32/ESP32-S2)
3747
* USB-C for programming and power (Rev 2.0+)
3848

39-
## Get Your Board
49+
## Power Draw
4050

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.
4253

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
4461

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.
4663

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+
---
4867

4968
## Quick Start
5069

5170
All boards come pre-flashed with an ESPHome factory image that's ready to use:
5271

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)
5473
2. **Connect to the WiFi hotspot** (e.g. `fancontroller-r3-1-abcdef`)
5574
3. **Configure your WiFi** through the captive portal
5675
4. **Done!** Board appears in Home Assistant via ESPHome
5776

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+
5880
For custom firmware or troubleshooting, see [Installation Methods](#installation-methods) below.
5981

6082
### Identifying Your Board Revision
@@ -67,8 +89,8 @@ Revision | Left | Fan Ports | Right | Details
6789
2.0 | DC 12V, Status LED | Fans | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev2.0) |
6890
3.0 | DC 12V, Status LED, QWIIC | Fans | USB-C | [Link](https://fancontroller.arthofer.dev/fancontroller-rev3.0) |
6991
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
7294

7395
---
7496

@@ -78,7 +100,7 @@ Revision | Left | Fan Ports | Right | Details
78100

79101
Flash pre-built firmware directly from your browser at **[fancontroller.arthofer.dev](https://fancontroller.arthofer.dev/)**
80102

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.
82104

83105
### Method 2: esptool (Alternative for ESP32-S2)
84106

@@ -167,6 +189,9 @@ No manual pin configuration needed - just import the package and customize your
167189

168190
---
169191

192+
<details>
193+
<summary><strong>Fan Control Modules (advanced — click to expand)</strong></summary>
194+
170195
## Fan Control Modules
171196

172197
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:
348373
- Use RPM PI control with temperature sensors to create a custom automation that sets target RPM based on temperature thresholds
349374
- Combine linear temperature control with RPM status LEDs for simple automatic control with visual feedback
350375

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>
369377

370378
---
371379

@@ -377,17 +385,6 @@ These values have been measured via a DPS3005 power supply, therefore, their acc
377385

378386
**Need Help?** Open an issue on [GitHub](https://github.com/zeroflow/wifi-fancontroller/issues) or consult the ESPHome documentation.
379387

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)
386-
- **3D Printable Case**: [Printables.com](https://www.printables.com/model/987263-wifi-fancontroller-case)
387-
- **Hardware Packages**: Available in this repository under `hardware-rev-*.yaml`
388-
- **ESPHome Documentation**: [esphome.io](https://esphome.io/)
389-
- **Home Assistant**: [home-assistant.io](https://home-assistant.io/)
390-
391388
## Contributing
392389

393390
Found a bug or have a feature request? Open an issue or submit a pull request on [GitHub](https://github.com/zeroflow/wifi-fancontroller).

static/fancontroller-rev2.0.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,19 @@ toc_icon: "microchip"
3131

3232
<esp-web-install-button manifest="firmware/fancontroller-r2-0.manifest.json"></esp-web-install-button>
3333

34-
> **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:
35-
>
36-
> ```bash
37-
> esptool.py --chip esp32s2 write_flash 0x0 firmware.bin
38-
> ```
39-
>
40-
> [Download prebuilt binary](/firmware/fancontroller-r2-0-esp32s2.factory.bin)
34+
<details>
35+
<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 <a href="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 <a href="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
45+
<p><a href="/firmware/fancontroller-r2-0-esp32s2.factory.bin">Download prebuilt binary</a></p>
46+
</details>
4147

4248
## Example Configurations
4349

static/fancontroller-rev3.0.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,19 @@ toc_icon: "microchip"
3636

3737
<esp-web-install-button manifest="firmware/fancontroller-r3-0.manifest.json"></esp-web-install-button>
3838

39-
> **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:
40-
>
41-
> ```bash
42-
> esptool.py --chip esp32s2 write_flash 0x0 firmware.bin
43-
> ```
44-
>
45-
> [Download prebuilt binary](/firmware/fancontroller-r3-0-esp32s2.factory.bin)
39+
<details>
40+
<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 <a href="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 <a href="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
50+
<p><a href="/firmware/fancontroller-r3-0-esp32s2.factory.bin">Download prebuilt binary</a></p>
51+
</details>
4652

4753
## Example Configurations
4854

static/fancontroller-rev3.1.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,19 @@ Rev 3.1 builds upon Rev 3.0 with visual feedback improvements:
4343

4444
<esp-web-install-button manifest="firmware/fancontroller-r3-1.manifest.json"></esp-web-install-button>
4545

46-
> **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:
47-
>
48-
> ```bash
49-
> esptool.py --chip esp32s2 write_flash 0x0 firmware.bin
50-
> ```
51-
>
52-
> [Download prebuilt binary](/firmware/fancontroller-r3-1-esp32s2.factory.bin)
46+
<details>
47+
<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 <a href="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 <a href="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
57+
<p><a href="/firmware/fancontroller-r3-1-esp32s2.factory.bin">Download prebuilt binary</a></p>
58+
</details>
5359

5460
## Example Configurations
5561

static/fancontroller-rev3.2.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,25 @@ toc_icon: "microchip"
3737
Rev 3.2 improves upon Rev 3.1 with enhanced USB protection:
3838
- Improved USB-C fuse for better overcurrent protection
3939
- Enhanced USB resilience and safety
40-
- Same firmware and pin configuration as Rev 3.1
40+
- Compatible firmware and pinout — hardware improvements only
4141

4242
## Generic Firmware Installation
4343

4444
<esp-web-install-button manifest="firmware/fancontroller-r3-1.manifest.json"></esp-web-install-button>
4545

46-
> **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:
47-
>
48-
> ```bash
49-
> esptool.py --chip esp32s2 write_flash 0x0 firmware.bin
50-
> ```
51-
>
52-
> [Download prebuilt binary](/firmware/fancontroller-r3-1-esp32s2.factory.bin)
46+
<details>
47+
<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 <a href="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 <a href="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
57+
<p><a href="/firmware/fancontroller-r3-1-esp32s2.factory.bin">Download prebuilt binary</a></p>
58+
</details>
5359

5460
## Example Configurations
5561

static/fancontroller-rev3.3.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,27 @@ Rev 3.3 includes hardware improvements over Rev 3.2:
3838
- Open-drain fan outputs instead of push-pull for better fan compatibility
3939
- Optimized component selection for better availability
4040
- Enhanced power supply stability
41-
- Same firmware and pin configuration as Rev 3.1 and 3.2
41+
- Compatible firmware and pinout — hardware improvements only
4242

43-
All three revisions (3.1, 3.2, 3.3) share identical firmware and functionality.
43+
Rev 3.1, 3.2, and 3.3 share the same firmware and pinout — differences are hardware-only.
4444

4545
## Generic Firmware Installation
4646

4747
<esp-web-install-button manifest="firmware/fancontroller-r3-1.manifest.json"></esp-web-install-button>
4848

49-
> **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:
50-
>
51-
> ```bash
52-
> esptool.py --chip esp32s2 write_flash 0x0 firmware.bin
53-
> ```
54-
>
55-
> [Download prebuilt binary](/firmware/fancontroller-r3-1-esp32s2.factory.bin)
49+
<details>
50+
<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 <a href="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 <a href="https://github.com/espressif/esptool">esptool</a> from the command line: <code>esptool.py --chip esp32s2 write_flash 0x0 firmware.bin</code></p>
60+
<p><a href="/firmware/fancontroller-r3-1-esp32s2.factory.bin">Download prebuilt binary</a></p>
61+
</details>
5662

5763
## Example Configurations
5864

0 commit comments

Comments
 (0)