1. # Создайте директорию если нет
sudo mkdir -p /usr/local/bin
2. # Создайте скрипт
sudo nano /usr/local/bin/imac_fan_daemon.sh
3. Содержание файла:
#!/bin/bash
# Демон управления вентиляторами iMac 2011
# Автоматическая регулировка скорости на основе температуры CPUecho "========================================="
echo " Запуск демона управления вентиляторами"
echo " iMac 2011 27\""
echo "========================================="
echo ""# Включаем ручной режим для всех вентиляторов
echo "Включаем ручное управление вентиляторами..."
for i in 1 2 3; do
if [ -f "/sys/devices/platform/applesmc.768/fan${i}_manual" ]; then
echo 1 > "/sys/devices/platform/applesmc.768/fan${i}_manual"
echo " Fan$i: ручной режим включен"
fi
doneecho ""
echo "Начальные значения:"
for i in 1 2 3; do
if [ -f "/sys/devices/platform/applesmc.768/fan${i}_input" ]; then
current_rpm=$(cat "/sys/devices/platform/applesmc.768/fan${i}_input")
label=$(cat "/sys/devices/platform/applesmc.768/fan${i}_label" 2>/dev/null || echo "Unknown")
min_rpm=$(cat "/sys/devices/platform/applesmc.768/fan${i}_min")
max_rpm=$(cat "/sys/devices/platform/applesmc.768/fan${i}_max")
echo " Fan$i ($label): $current_rpm RPM (min: $min_rpm, max: $max_rpm)"
fi
doneecho ""
echo "Датчики температуры:"
sensors | grep -E "TC0P|TG0H|Tp2H|TPCD" | head -5echo ""
echo "========================================="
echo "Начинаем мониторинг температуры..."
echo "Нажмите Ctrl+C для остановки"
echo "========================================="# Основной цикл управления
while true; do
# Получаем температуру CPU из разных источников
TEMP1=$(sensors | grep 'TC0P' | awk '{print $2}' | sed 's/[+°C]//g' | cut -d. -f1)
TEMP2=$(sensors | grep 'Core 0' | awk '{print $3}' | sed 's/[+°C]//g' | cut -d. -f1 2>/dev/null || echo "0")
# Используем первый доступный датчик
if [ -n "$TEMP1" ] && [ "$TEMP1" != "" ]; then
TEMP=$TEMP1
SENSOR="TC0P"
elif [ -n "$TEMP2" ] && [ "$TEMP2" != "0" ]; then
TEMP=$TEMP2
SENSOR="Core 0"
else
TEMP=50
SENSOR="default"
fi
# Определяем RPM на основе температуры
if [ $TEMP -lt 40 ]; then
RPM=1200
LEVEL="Низкая"
elif [ $TEMP -lt 50 ]; then
RPM=1800
LEVEL="Средняя"
elif [ $TEMP -lt 60 ]; then
RPM=2500
LEVEL="Выше среднего"
elif [ $TEMP -lt 70 ]; then
RPM=3500
LEVEL="Высокая"
elif [ $TEMP -lt 80 ]; then
RPM=4500
LEVEL="Очень высокая"
else
RPM=5500
LEVEL="КРИТИЧЕСКАЯ!"
fi
# Устанавливаем RPM для всех вентиляторов
for i in 1 2 3; do
if [ -f "/sys/devices/platform/applesmc.768/fan${i}_output" ]; then
# Проверяем границы
min_rpm=$(cat "/sys/devices/platform/applesmc.768/fan${i}_min")
max_rpm=$(cat "/sys/devices/platform/applesmc.768/fan${i}_max")
if [ $RPM -lt $min_rpm ]; then
actual_rpm=$min_rpm
elif [ $RPM -gt $max_rpm ]; then
actual_rpm=$max_rpm
else
actual_rpm=$RPM
fi
echo $actual_rpm > "/sys/devices/platform/applesmc.768/fan${i}_output"
fi
done
# Получаем текущие RPM для отображения
fan1_rpm=$(cat "/sys/devices/platform/applesmc.768/fan1_input" 2>/dev/null || echo "N/A")
fan2_rpm=$(cat "/sys/devices/platform/applesmc.768/fan2_input" 2>/dev/null || echo "N/A")
fan3_rpm=$(cat "/sys/devices/platform/applesmc.768/fan3_input" 2>/dev/null || echo "N/A")
# Выводим информацию
echo "[$(date '+%H:%M:%S')] ${SENSOR}: ${TEMP}°C (${LEVEL}) -> RPM: ${actual_rpm} | Fan1: ${fan1_rpm} Fan2: ${fan2_rpm} Fan3: ${fan3_rpm}"
# Интервал проверки (секунды)
sleep 3
done# При завершении возвращаем автоуправление (если скрипт завершится не по Ctrl+C)
echo ""
echo "Возвращаем автоуправление вентиляторами..."
for i in 1 2 3; do
if [ -f "/sys/devices/platform/applesmc.768/fan${i}_manual" ]; then
echo 0 > "/sys/devices/platform/applesmc.768/fan${i}_manual"
fi
done
echo "Демон остановлен."
4. Сделать скрипт исполняемым:
sudo chmod +x /usr/local/bin/imac_fan_daemon.sh
5. Тестовый запуск
sudo /usr/local/bin/imac_fan_daemon.sh
6. Создать службу для автоматического запуска:
sudo nano /etc/systemd/system/imac-fans.service
7. Содержание файла
[Unit]
Description=iMac Fan Control Service
After=multi-user.target
After=lm_sensors.service[Service]
Type=simple
ExecStart=/usr/local/bin/imac_fan_daemon.sh
Restart=always
RestartSec=5
User=root
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target
8. Обновите systemd
sudo systemctl daemon-reload
9. Включите автозагрузку
sudo systemctl enable imac-fans.service
10. Запустите службу
sudo systemctl start imac-fans.service
11. Проверьте статус
sudo systemctl status imac-fans.service
12. Посмотрите логи
sudo journalctl -u imac-fans.service -f
13. Проверьте текущие RPM
for i in 1 2 3; do
echo "Fan$i: $(cat /sys/devices/platform/applesmc.768/fan${i}_input) RPM"
done# Проверьте режим управления
for i in 1 2 3; do
echo "Fan$i manual mode: $(cat /sys/devices/platform/applesmc.768/fan${i}_manual)"
done
14. Если нужно остановить службу: (на всякий случай)
sudo systemctl stop imac-fans.service