Mini 311 Fan Control Registers
The 311 fan can be controlled by accessing registers in the ACPI embedded controller. My documentation of these registers follows.
Offset | Width (bits) | Symbol | Function |
---|---|---|---|
88 | 8 | RTMP | Read temperature. The current CPU temperature is provided by this register, measured in degrees celcuis. |
172 | 8 | (FLEV) | The current fan level (0-7) can be read from this register. Note that this doesn't have a symbol in the DSDT, but I have called it FLEV in my kernel module. |
178, 179 | 16 | RPM1,RPM2 | The current fan speed can be determined from this value, but it is not simply a 16-bit integer representing RPM. It is a reciprocal of RPM, with some time constant - i.e. it represents a number of clock ticks per revolution. Assuming a 1MHz clock results in reasonable looking values. Also note that when the fan is stationary, this register is zero (as opposed to infinity). |
244 | 8 | SFAN | Set fan. This register controls fan operation, but how it does this requires some explanation. |
SFAN Register
By default this register is zero and the fan speed is controlled automatically by the system hardware.
Fan speed can be set manually by programming bits 6:1 of this register. The fan has 8 speed levels, or rather 7 in which it is spinning. Level 0 is dependent on the BIOS setting 'Fan Always On' - if enabled, level 0 is the same as level 1, otherwise level 0 turns the fan off.
The fan can always be disabled completely by setting bit 0 of this register. This will then override anything in bits 6:1, and the fan will be stationary.
Setting speed via bits 6:1 is not entirely straightforward, due to some built-in hysteresis. Writing value X will not always give the same speed Y. You need to consider what the current state is to determine what X to write. My kernel module abstracts this for you. The following tables give the threshold values to switch the fan level up or down.
Target Level | SFAN value |
---|---|
1 | 48 |
2 | 52 |
3 | 62 |
4 | 66 |
5 | 76 |
6 | 80 |
7 | 84 |
Target Level | SFAN Value |
---|---|
6 | 78 |
5 | 74 |
4 | 72 |
3 | 62 |
2 | 56 |
1 | 46 |
0 | 42 |