kirkwood: use 3 temperature sensors for Zyxel NSA310B
authorThomas Beckler <thomas.beckler@hotmail.com>
Sat, 30 May 2020 21:40:03 +0000 (23:40 +0200)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Fri, 5 Feb 2021 21:21:08 +0000 (22:21 +0100)
Instead of taking the input of one temperature sensor (temp1), the
script takes into account three temperature sensors to control the
PWM of the cooling fan.

temp1 -> placed on main board
temp2 -> placed on main board
temp3 -> placed on or close to chipset

All three temperatures give valid input for the PWM of the fan on
NSA310 and are actually changing.

Tested on two NSA310.

Signed-off-by: Thomas Beckler <thomas.beckler@hotmail.com>
Reviewed-by: Alberto Bursi <bobafetthotmail@gmail.com>
[commit title/message facelift, code cleanup]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/kirkwood/base-files/etc/init.d/hwmon_fancontrol

index c64ed1100cb1b1988760c88de37166cf6e9233dc..334a2a08ef93c19e2ed7486dd2541a8de02945da 100755 (executable)
@@ -27,10 +27,22 @@ boot() {
                ;;
        zyxel,nsa310b)
                path_to_hwmon='/sys/devices/platform/ocp@f1000000/f1011000.i2c/i2c-0/0-002e/hwmon/hwmon0'
-               echo 2 > "$path_to_hwmon/pwm1_enable" # fan is on pwm1
-               echo 1 > "$path_to_hwmon/pwm1_auto_channels" # temp1 is the only one that changes
-               echo 23000 > "$path_to_hwmon/temp1_auto_temp_min"
-               echo 43000 > "$path_to_hwmon/temp1_auto_temp_max" # next step is 49600 millicelsius, or 50 celsius, 43 celsius is better
+               # use the max. value of (temp1) OR (temp2) OR (temp3) as an input
+               # for the PWM of the cooling fan
+               echo 123 > "$path_to_hwmon/pwm1_auto_channels"
+               # Temperature sensor #1 placed on mainboard
+               echo 30000 > "$path_to_hwmon/temp1_auto_temp_min"
+               echo 49600 > "$path_to_hwmon/temp1_auto_temp_max"
+               # Temperature sensor #2 placed on mainboard
+               # range: 0 to 127000 in steps of 1000 [millicelsius]
+               echo 30000 > "$path_to_hwmon/temp2_auto_temp_min"
+               # range: 0 to 127000 in steps of ???? [millicelsius]
+               echo 49600 > "$path_to_hwmon/temp2_auto_temp_max"
+               # Temperature sensor #3 placed close to a chipset
+               # range: 0 to 60000 in steps of 1000 [millicelsius]
+               echo 23000 > "$path_to_hwmon/temp3_auto_temp_min"
+               # pre-defined steps: 103000, 122000, 143300, 170000 in [millicelsius]
+               echo 103000 > "$path_to_hwmon/temp3_auto_temp_max"
                ;;
        esac
 }