Fans and Temperature

Fans and Temperature

Fan control

Controlling the fan behavior is pretty strightforward:

speed = -1
min_fans = 1

The default speed setting lets luxminer increase or slow down the fans depending on the temperature needs. Depending on your environment, you will want a finer control, for example running in a lower speed due to noise or fixing the speed at 100 to maximize cooling.

The min_fans let you choose what is the minimum number of fans that need to be working. If we go below this minimum, the system panics and stops, in an effort to avoid hardware damage due to high temperatures. For aging hardware, fans sometimes go offline and then back on again shortly after, so take this into consideration when setting this parameter.

Do remember that if immersion mode is activated, those values are ignored. It is also possible to change these values with the fanset API command.

Temperature control

Temperature control is divided in two parts. The first one is the definition of maximum temperature thresholds:

target_temp = 80.0 # for S9 models
hot_temp = 85.0    # for S9 models
panic_temp = 90.0  # for S9 models

In this case, if the miner goes above target_temp, the automatic fan speed handling of LUXminer jumps immediately to 100 in an effort to lower the temperatures to more reasonable defaults. Regardless of that, once the temperature of panic_temp is reached, the board voltage is abruptly cut and the system panics to try to avoid hardware damage due to high temperatures. You can fine-tune those values using the tempctrlset API command.


Do not change temperature configuration, unless you are confident that the values you put in are correct for your miner model and environment. A bad target temperature could result in loss of performance due to overtemp, or even frying your board.

The second configuration block defines how we should handle the temperature sensors:

bad_average_threshold = 2
max_bad_readings = 10
min_per_board = 1

First, we use min_per_board to define what is the minimum number of working temperature sensors required, per board. If this value is not met, the board is rebooted in an effort to make it work, but if it keeps failing, the board is shut down for good.

To determine wether a temperature sensor is good or not, we have the max_bad_readings parameter. If we get that many bad readings in a row, we assume the sensor is "broken" and act accordingly.

But what defines a "bad" reading? A couple of possible causes:

  • We couldn't identify the sensor.
  • The sensor does not answer after a rather generous number of tries.
  • The sensor answers, but the temperature value is erratic. This is detected by checking the average temperature, and if it goes above bad_average_threshold between readings, the reading is considered "unreliable", and count as an error.

ATM settings

Also related to the temperature, are the ATM settings:

enabled = false
startup_minutes = 15
post_ramp_minutes = 15
temp_window = 10
min_profile = ""
max_profile = "default"

ATM is the Automatic Temperature Management feature from LUXminer, which allows your miner to automatically change to an overclocking or underclocking profile depending on temperature thresholds. This feature is disabled by default, and you can change it with the atmset command.