История изменений
Исправление intelfx, (текущая версия) :
Тогда:
- файл
/sys/devices/platform/coretemp.0/temp1_input
содержит температуру процессора (кристалла) в миллиградусах Цельсия - костыль для управления вентилятором выглядит так:
#!/bin/bash TEMPERATURE_FILE="/sys/devices/platform/coretemp.0/temp1_input" TIMEOUT=10 # в секундах function write_fan() { if [[ "$1" ]]; then ec_access -w D5 -v "$1" fi } declare -A FAN_PROFILES FAN_PROFILES=( [0]="значение для отключенного вентилятора" [30000]="значение для минимальной скорости на 30°" [60000]="значение для средней скорости на 60°" [90000]="значение для максимальной скорости на 90°" ) TEMPERATURE_LAST=-1 while true; do [[ -r "$TEMPERATURE_FILE" ]] || { echo "Can't read CPU temperature, exiting" >&2; exit 1; } TEMPERATURE_INPUT="$(< "$TEMPERATURE_FILE" )" # найдём максимальный профиль, не превышающий текущей температуры TEMPERATURE_CHOSEN=0 for profile in "${!FAN_PROFILES[@]}"; do if (( profile <= TEMPERATURE_INPUT )) && (( TEMPERATURE_CHOSEN < profile )); then TEMPERATURE_CHOSEN="$profile" fi done if (( TEMPERATURE_CHOSEN != TEMPERATURE_LAST )); then echo "debug: profile transition \"$TEMPERATURE_LAST\" -> \"$TEMPERATURE_CHOSEN\"" >&2 TEMPERATURE_LAST="$TEMPERATURE_CHOSEN" write_fan "${FAN_PROFILES["$TEMPERATURE_CHOSEN"]}" fi sleep "$TIMEOUT" done
Как-то так (не тестировал ни разу, но вроде бы должно работать).
ec_control
надо кинуть в /usr/local/bin
(или куда-нибудь ещё, но тогда в write_fan()
придётся прописать полный путь до файла), скрипт кинуть куда угодно (сделав ему chmod +x
, естественно) и добавить в автозапуск.
Как последнее делается в апстарте - понятия не имею, но может сработать добавление в /etc/rc.local
строки вида <полный_путь_до_скрипта> &
.
Исходная версия intelfx, :
Тогда:
- файл
/sys/devices/platform/coretemp.0/temp1_input
содержит температуру процессора (кристалла) в миллиградусах Цельсия - костыль для управления вентилятором выглядит так:
#!/bin/bash TEMPERATURE_FILE="/sys/devices/platform/coretemp.0/temp1_input" TIMEOUT=10 # в секундах function write_fan() { if [[ "$1" ]]; then ec_access -w D5 -v "$1" fi } declare -A FAN_PROFILES FAN_PROFILES=( [0]="значение для отключенного вентилятора" [30000]="значение для минимальной скорости на 30°" [60000]="значение для средней скорости на 60°" [90000]="значение для максимальной скорости на 90°" ) TEMPERATURE_LAST=-1 while true; do [[ -r "$TEMPERATURE_FILE" ]] || { echo "Can't read CPU temperature, exiting" >&2; exit 1; } TEMPERATURE_INPUT="$(< "$TEMPERATURE_FILE" )" # найдём максимальный профиль, не превышающий текущей температуры TEMPERATURE_CHOSEN=0 for profile in "${!FAN_PROFILES[@]}"; do if (( profile <= TEMPERATURE_INPUT )) && (( TEMPERATURE_CHOSEN < profile )); then TEMPERATURE_CHOSEN="$profile" fi done if (( TEMPERATURE_CHOSEN != TEMPERATURE_LAST )); then echo "debug: profile transition \"$TEMPERATURE_LAST\" -> \"$TEMPERATURE_CHOSEN\"" TEMPERATURE_LAST="$TEMPERATURE_CHOSEN" write_fan "${FAN_PROFILES["$TEMPERATURE_CHOSEN"]}" fi sleep "$TIMEOUT" done
Как-то так (не тестировал ни разу, но вроде бы должно работать).
ec_control
надо кинуть в /usr/local/bin
(или куда-нибудь ещё, но тогда в write_fan()
придётся прописать полный путь до файла), скрипт кинуть куда угодно (сделав ему chmod +x
, естественно) и добавить в автозапуск.
Как последнее делается в апстарте - понятия не имею, но может сработать добавление в /etc/rc.local
строки вида <полный_путь_до_скрипта> &
.