amdgpu: limit fan speed
This commit is contained in:
		
							parent
							
								
									fac1976c9c
								
							
						
					
					
						commit
						6e5eebe3c1
					
				
					 2 changed files with 30 additions and 5 deletions
				
			
		| 
						 | 
					@ -18,7 +18,7 @@ in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  systemd.services.amd-fan-control = {
 | 
					  systemd.services.amd-fan-control = {
 | 
				
			||||||
    script = ''
 | 
					    script = ''
 | 
				
			||||||
      ${lib.getExe pkgs.amd-fan-control} /sys/class/drm/card1/device 60 85
 | 
					      ${lib.getExe pkgs.amd-fan-control} /sys/class/drm/card1/device 60 90 0 80
 | 
				
			||||||
    '';
 | 
					    '';
 | 
				
			||||||
    serviceConfig = {
 | 
					    serviceConfig = {
 | 
				
			||||||
      Restart = "always";
 | 
					      Restart = "always";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,10 +39,31 @@ if [ -z "$TEMP_MAX" ];then
 | 
				
			||||||
  bail "No maximum temperature provided"
 | 
					  bail "No maximum temperature provided"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PWM_MIN=0
 | 
					PWM_MIN_PCT="$4"
 | 
				
			||||||
PWM_MAX=255
 | 
					PWM_MAX_PCT="$5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -z "$PWM_MIN_PCT" ];then
 | 
				
			||||||
 | 
					  bail "No minimum fan speed % not provided"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -z "$PWM_MAX_PCT" ];then
 | 
				
			||||||
 | 
					  bail "No maximum fan speed % not provided"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PWM_MIN="$(( $PWM_MIN_PCT * 255 / 100))"
 | 
				
			||||||
 | 
					PWM_MAX="$(( $PWM_MAX_PCT * 255 / 100))"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "Running..." >&2
 | 
					echo "Running..." >&2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "TEMP_MIN=$TEMP_MIN°C"
 | 
				
			||||||
 | 
					echo "TEMP_MAX=$TEMP_MAX°C"
 | 
				
			||||||
 | 
					echo "FAN_MIN=$PWM_MIN_PCT%"
 | 
				
			||||||
 | 
					echo "FAN_MAX=$PWM_MAX_PCT%"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo 1 > "$HWMON/pwm1_enable"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PREV=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while true; do
 | 
					while true; do
 | 
				
			||||||
    TEMPERATURE_RAW=$(cat "$TEMP_INPUT")
 | 
					    TEMPERATURE_RAW=$(cat "$TEMP_INPUT")
 | 
				
			||||||
    TEMPERATURE="$(( $TEMPERATURE_RAW / 1000 ))"
 | 
					    TEMPERATURE="$(( $TEMPERATURE_RAW / 1000 ))"
 | 
				
			||||||
| 
						 | 
					@ -55,7 +76,11 @@ while true; do
 | 
				
			||||||
        PWM=$PWM_MIN
 | 
					        PWM=$PWM_MIN
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    echo 1 > "$HWMON/pwm1_enable"
 | 
					    AVG="$(( ($PWM * 20 + $PREV * 80) / 100 ))"
 | 
				
			||||||
    echo "$PWM" > "$HWMON/pwm1"
 | 
					
 | 
				
			||||||
 | 
					    echo "$AVG"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "$AVG" > "$HWMON/pwm1"
 | 
				
			||||||
 | 
					    PREV="$AVG"
 | 
				
			||||||
    sleep .1s
 | 
					    sleep .1s
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue