diff options
| author | Mikhail Kshevetskiy | 2024-11-21 22:29:06 +0000 |
|---|---|---|
| committer | Robert Marko | 2025-12-22 09:34:23 +0000 |
| commit | 623e329a52055af22f640d0c21ef666461c9ac5c (patch) | |
| tree | 62a15207c94ae35f2178f5f7ae582c4b235039c8 | |
| parent | 02f9e71dd2261d178f74ac93bff9d6eba216096c (diff) | |
| download | openwrt-623e329a52055af22f640d0c21ef666461c9ac5c.tar.gz | |
mediatek: fix pwn fan settings for sinovoip bpi-r3 (v3)
Popular cheap PWM fans for this machine, like the ones coming in
heatsink+fan combos will not work properly at the currently defined
medium speed. Trying different pwm setting using a command
echo $value > /sys/devices/platform/pwm-fan/hwmon/hwmon1/pwm1
I found:
pwm1 value fan rotation speed cpu temperature notes
-----------------------------------------------------------------
0 maximal 31.5 Celsius too noisy
40 optimal 35.2 Celsius no noise hearable
95 minimal
above 95 does not rotate 55.5 Celsius
-----------------------------------------------------------------
Current cooling levels are:
cooling-levels = <255 96 0>;
Thus only cpu-active-high and cpu-active-low modes are usable.
This patch fixes cpu-active-medium settings for bpi-r3 board.
This patch may not be enough. Users may wants to tweak their thermal_zone0
trip points, thus tuning fan rotation speed depending on cpu temperature.
That can be done on the base of the following example:
=== example =========
# cpu temperature below 25 Celsius degrees, no rotation
echo 25000 > /sys/class/thermal/thermal_zone0/trip_point_4_temp
# cpu temperature in [25..32] Celsius degrees, normal rotation speed
echo 32000 > /sys/class/thermal/thermal_zone0/trip_point_3_temp
# cpu temperature above 50 Celsius degrees, max rotation speed
echo 50000 > /sys/class/thermal/thermal_zone0/trip_point_2_temp
=====================
Changes v2:
* put patch to a proper directory
* updated patch description
* tested with latest openwrt based on linux-6.6
Changes v3:
* use upstream linux patch
* update patch description
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17130
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 095151b2354752be6b4be81e6b22b65227c59746)
| -rw-r--r-- | target/linux/mediatek/patches-6.12/061-v6.19-arm64-dts-mediatek-mt7986-bpi-r3-Change-fan-PWM-valu.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/target/linux/mediatek/patches-6.12/061-v6.19-arm64-dts-mediatek-mt7986-bpi-r3-Change-fan-PWM-valu.patch b/target/linux/mediatek/patches-6.12/061-v6.19-arm64-dts-mediatek-mt7986-bpi-r3-Change-fan-PWM-valu.patch new file mode 100644 index 0000000000..4b27031d11 --- /dev/null +++ b/target/linux/mediatek/patches-6.12/061-v6.19-arm64-dts-mediatek-mt7986-bpi-r3-Change-fan-PWM-valu.patch @@ -0,0 +1,72 @@ +From 5f271fe1365b63f67fc384ca8d50d473d09de0d1 Mon Sep 17 00:00:00 2001 +From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> +Date: Tue, 3 Dec 2024 07:33:55 +0300 +Subject: [PATCH] arm64: dts: mediatek: mt7986-bpi-r3: Change fan PWM value for + mid speed + +Popular cheap PWM fans for this machine, like the ones coming in +heatsink+fan combos will not work properly at the currently defined +medium speed. Trying different pwm setting using a command + + echo $value > /sys/devices/platform/pwm-fan/hwmon/hwmon1/pwm1 + +I found: + + pwm1 value fan rotation speed cpu temperature notes + ----------------------------------------------------------------- + 0 maximal 31.5 Celsius too noisy + 40 optimal 35.2 Celsius no noise hearable + 95 minimal + above 95 does not rotate 55.5 Celsius + ----------------------------------------------------------------- + +Thus only cpu-active-high and cpu-active-low modes are usable. +I think this is wrong. + +This patch fixes cpu-active-medium settings for bpi-r3 board. + +I know, the patch is not ideal as it can break pwm fan for some users. +Likely this is the only official mt7986-bpi-r3 heatsink+fan solution +available on the market. + +This patch may not be enough. Users may wants to tweak their thermal_zone0 +trip points, thus tuning fan rotation speed depending on cpu temperature. +That can be done on the base of the following example: + + === example ========= + # cpu temperature below 25 Celsius degrees, no rotation + echo 25000 > /sys/class/thermal/thermal_zone0/trip_point_4_temp + # cpu temperature in [25..32] Celsius degrees, normal rotation speed + echo 32000 > /sys/class/thermal/thermal_zone0/trip_point_3_temp + # cpu temperature above 50 Celsius degrees, max rotation speed + echo 50000 > /sys/class/thermal/thermal_zone0/trip_point_2_temp + ===================== + +Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> +Acked-by: Frank Wunderlich <frank-w@public-files.de> +Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> + +--- +Changes from v1 to v2: + * improve patch description + +Changes from v2 to v3: + * added question to Frank Wunderlich + +Changes from v3 to v4: + * Acked by Frank Wunderlich +--- + arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts ++++ b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts +@@ -42,7 +42,7 @@ + compatible = "pwm-fan"; + #cooling-cells = <2>; + /* cooling level (0, 1, 2) - pwm inverted */ +- cooling-levels = <255 96 0>; ++ cooling-levels = <255 40 0>; + pwms = <&pwm 0 10000>; + status = "okay"; + }; |