Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cdown/zcfan
A zero-configuration fan daemon for ThinkPads.
https://github.com/cdown/zcfan
c c-lang command-line command-line-tool fan fan-control linux thermal thinkpad thinkpad-fan thinkpad-fan-control
Last synced: 7 days ago
JSON representation
A zero-configuration fan daemon for ThinkPads.
- Host: GitHub
- URL: https://github.com/cdown/zcfan
- Owner: cdown
- License: mit
- Created: 2022-03-22T15:11:05.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-28T23:16:55.000Z (5 months ago)
- Last Synced: 2024-10-25T16:58:00.549Z (13 days ago)
- Topics: c, c-lang, command-line, command-line-tool, fan, fan-control, linux, thermal, thinkpad, thinkpad-fan, thinkpad-fan-control
- Language: C
- Homepage:
- Size: 59.6 KB
- Stars: 90
- Watchers: 4
- Forks: 9
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# zcfan | [![Tests](https://img.shields.io/github/actions/workflow/status/cdown/zcfan/ci.yml?branch=master)](https://github.com/cdown/zcfan/actions?query=branch%3Amaster)
Zero-configuration fan control daemon for ThinkPads.
## Features
- Extremely small (~250 lines), simple, and easy to understand code
- Sensible out of the box, configuration is optional (see "usage" below)
- Strong focus on stopping the fan as soon as safe to do so, without inducing
throttling
- Automatic temperature- and time-based hysteresis: no bouncing between fan
levels
- Watchdog support
- Minimal resource usage
- No dependencies## Usage
zcfan has the following default fan states:
| Config name | thinkpad_acpi fan level | Default trip temperature (C) |
|-------------|-----------------------------------|------------------------------|
| max_temp | full-speed (or 7 if unsupported) | 90 |
| med_temp | 4 | 80 |
| low_temp | 1 | 70 |If no trip temperature is reached, the fan will be turned off.
The fan will also only be reduced once the temperature is now at least 10C
below the trip temperature for the current fan state. This can be tuned with
the config parameter `temp_hysteresis`.To override these defaults, you can place a file at `/etc/zcfan.conf` with
updated trip temperatures in degrees celsius and/or fan levels. As an example:max_temp 85
med_temp 70
low_temp 55
temp_hysteresis 20max_level full-speed
med_level 4
low_level 1### Hysteresis
We will only reduce the fan level again once:
1. The temperature is now at least `temp_hysteresis` Celsius (default 10C)
below the trip point, and
2. At least 3 seconds have elapsed since the initial trip.This avoids unnecessary fluctuations in fan speed.
## Comparison with thinkfan
I wrote zcfan because I found thinkfan's configuration and code complexity too
much for my tastes. Use whichever suits your needs.## Compilation
Run `make`.
## Installation
1. Compile zcfan or install from the [AUR
package](https://aur.archlinux.org/packages/zcfan)
2. Load your thinkpad_acpi module with `fan_control=1`
- At runtime: `rmmod thinkpad_acpi && modprobe thinkpad_acpi fan_control=1`
- By default: `echo options thinkpad_acpi fan_control=1 > /etc/modprobe.d/99-fancontrol.conf`
3. Run `zcfan` as root (or use the `zcfan` systemd service provided)## Disclaimer
While the author uses this on their own machine, obviously there is no warranty
whatsoever.