| .. SPDX-License-Identifier: GPL-2.0-or-later |
| |
| Kernel driver arctic_fan_controller |
| ===================================== |
| |
| Supported devices: |
| |
| * ARCTIC Fan Controller (USB HID, VID 0x3904, PID 0xF001) |
| |
| Author: Aureo Serrano de Souza <aureo.serrano@arctic.de> |
| |
| Description |
| ----------- |
| |
| This driver provides hwmon support for the ARCTIC Fan Controller, a USB |
| Custom HID device with 10 fan channels. The device sends IN reports about |
| once per second containing current RPM values (bytes 11-30, 10 x uint16 LE). |
| Fan speed control is manual-only: the device does not change PWM |
| autonomously; it only applies a new duty cycle when it receives an OUT |
| report from the host. |
| |
| After the device applies an OUT report, it sends back a 2-byte ACK IN |
| report (Report ID 0x02, byte 1 = 0x00 on success) confirming the command |
| was applied. |
| |
| Usage notes |
| ----------- |
| |
| Since it is a USB device, hotplug is supported. The device is autodetected. |
| |
| The device does not support GET_REPORT, so the driver cannot read back the |
| current hardware PWM state at probe time. The cached PWM values (readable |
| via pwm[1-10]) start at 0 and reflect only values that have been |
| successfully written. Because each OUT report carries all 10 channel values, |
| writing a single channel also sends the cached values for all other channels. |
| Users should set all channels to the desired values before relying on the |
| cached state. |
| |
| On system suspend, the device may lose power and reset its PWM channels to |
| hardware defaults. The driver clears its cached duty values on resume so |
| that reads reflect the unknown hardware state rather than stale pre-suspend |
| values. Userspace is responsible for re-applying the desired duty cycles |
| after resume. |
| |
| Sysfs entries |
| ------------- |
| |
| ================ ============================================================== |
| fan[1-10]_input Fan speed in RPM (read-only). Updated from IN reports at ~1 Hz. |
| pwm[1-10] PWM duty cycle (0-255). Write: sends an OUT report setting the |
| duty cycle (scaled from 0-255 to 0-100% for the device); |
| the cached value is updated only after the device ACKs the |
| command with a success status. Read: returns the last |
| successfully written value; initialized to 0 at driver load |
| and after resume (hardware state unknown). |
| ================ ============================================================== |