Úvod do problému
Tento článek je určen skupině uživatel jenž by rádi už nastálo změnili svůj OS na Linux. Jedním ze zásadních problémů se kterým se potýká drtivá většina uživatel notebooků při přechodu je neschopnost Linuxu ovládat otáčky ventilátoru chladícího zdroj notebooku. Který je většinou jediným zdrojem hluku v jinak tichém stroji. Na tento problém existuje nesčetné množství návod a rad, které zahrnují kompilaci kernelu a další relativně velké překážky. Tento návod je více méně univerzální. Postupujte však v jeho realizaci s rozvahou.
Instalace softwaru pro senzory a následná konfigurace
1. Nainstalujte si balíček lm-sensors
apt-get install lm-sensors
nebo z tohoto balíčku pro distribuce debian zde.
2. Teď je potřeba senzory detekovat, přihlaste se jako root a spusťte následující příkaz:
sensors-detect
Zadávejte Y a potvrzujte ENTER.
3. Pokud se vám objevila hláška -> Sorry, no sensors were detected.
Postupujte následovně:
a)vytvořte si v domovském adresáři soubor unhide_ICH_SMBus, kterému nastavte CHMOD 755, jehož obsah bude následující:
#!/bin/bash
# (C) Rudolf Marek ,
# Jean Delvare
#
# Thanks Jean Delvare and Oliver Dreier for testing.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation
pcibus="/sys/bus/pci/slots/"
device="00:1f"
if [ "$UID" -ne 0 ] ; then
echo "You need to be root to run this script!"
exit 252
fi
smbus=`lspci -n -s $device.3 grep -i '0c05: *8086'`
if [ -n "$smbus" ] ; then
echo "ICH SMBus is already there!"
lspci -s $device.3
exit
fi
intel=`lspci -n -s $device.0 grep 8086`
if [ -z "$intel" ] ; then
echo "Not for your chipset - Intel (ICH) only"
exit 255;
fi
modprobe fakephp &> /dev/null
if [ ! -d "$pcibus" ] ; then
echo "You need the fake PCI hotplug driver! (fakephp.ko and 2.6 kernel)"
exit 255;
fi
echo "Enabling SMBus PCI device ..."
newval=$( printf '%x' $((0x$(setpci -s $device.0 f2.w) & 0xfff7)))
setpci -s $device.0 f2.w=$newval
echo "Rescanning the bus ..."
echo 1 > $pcibus/0000:$device.0/power 2>/dev/null
if [ ! -d "$pcibus/0000:$device.3" ] ; then
echo "Failed to enable the SMBUS"
exit 253;
fi
if [ ! -d "/sys/bus/pci/drivers/i801_smbus" ] ; then
echo "Loading i2c-i801 ..."
modprobe i2c-i801
if [ $? -ne 0 ] ; then
exit 251
fi
fi
lspci -s $device.3
echo "Done!"
b) skript spusťte, pokud se vám objeví Done! vše proběhlo tak jak mělo.
c) opět zadejte do terminálu jako root příkaz:
sensors-detect
Všechny hlášky potvrďte.
4. Pro otestování funkčnosti spusťte v terminálu postupně tyto příkazy:
root@horus:/home/ubuntu# sudo modprobe i2c-i801
Password:
root@horus:/home/ubuntu# sudo modprobe adm1031
Password:
root@horus:/home/ubuntu# sudo modprobe eeprom
Password:
root@horus:/home/ubuntu# sudo depmod -a
Password:
root@horus:/home/ubuntu# sudo update-modules
Password:
root@horus:/home/ubuntu# sudo sensors
Password:
adm1031-i2c-0-2c
Adapter: SMBus I801 adapter at 1200
CPU Fan: 12053 RPM (min = 661 RPM, div = 4)
Case Fan: 16875 RPM (min = 661 RPM, div = 4)
SYS Temp: +57.0°C (low = +51°C, high = +70°C)
SYS Crit: +87°C
CPU Temp: +52.5°C (low = +46°C, high = +60°C)
CPU Crit: +75°C
AUX Temp: +0.0°C (low = +0°C, high = +80°C) DISCONNECT
AUX Crit: +100°C
Posledních několik řádko potvrzuje, že máte správně nakonfigurovány senzory.
5. Pomocí terminálu jako root spusťte příkaz:
sudo gedit /etc/init.d/rc.local
přidejte tento řádek:
/home/mujdomov/unhide_ICH_SMBus
na toto místo:
do_start() {
if [ -x /etc/rc.local ]; then
log_begin_msg "Running local boot scripts (/etc/rc.local)"
/etc/rc.local
log_end_msg $?
/home/ubuntu/unhide_ICH_SMBus
fi
}
Uložte.
Toto zajistí, že budou senzory aktivní po každém bootu.
Konfigurace fancontrol pomocí pwmconfig a uvedení do provozu
1. Jako root spusťte následující příkaz z terminálu:
pwmconfig
Pomocí ENTER potvrďte všechny výzvy a nastavte interval na 10s, pokračujte dále dokud pwmconfig nezapíše konfigurační soubor.
Postupně budou testovány ventilátory a zapsán dočasný konfigurační soubor do složky /etc.
2. Nyní stiskněte 5 pro náhled na konfigurační soubor která je nejspíše prázdný.
3. Stiskněte 1 pro upravení nastavení.
4. Vyberte teplotu, která odpovídá teplotě vašeho procesoru. (většinou stejné číslo jako je číslo ventilátoru).
MINTEMP -> počáteční teplota chlazení procesoru a zdroje.
MAXTEMP -> koncová definuje rozsah.
Pokračujte s předdefinovanými nastaveními až k bodu: "Enter the minimum PWM value (0-255).
5. Zde zmáčněte "t" a ENTER, ENTER mačkejte dokud neuvidíte, že se ventilátor točí, poté stiskněte "y" a ENTER.
6. To samé v dalším kroku, když uvidíte, že se venitilátor zastaví , stiskněte "y" a ENTER.
7. Opět stiskněte 5 a ENTER, zobrazí se vám něco podobného:
INTERVAL=5
FCTEMPS= 1-0290/pwm2=1-0290/temp2_input
FCFANS= 1-0290/pwm2=1-0290/fan2_input
MINTEMP= 1-0290/pwm2=43
MAXTEMP= 1-0290/pwm2=53
MINSTART= 1-0290/pwm2=120
MINSTOP= 1-0290/pwm2=105
8. Stiskněte 4 a ENTER.
9. Vyzkoušejte pomocí příkazu (jako root):
fancontrol
Měly by jste slyšet regulaci otáček.
Vytvoření startovacího démona
1. Jako root Spusťte v terminálu následujíci příkaz:
sudo gedit /etc/init.d/fancontrol
2. Vložte tento kód a soubor uložte:
#!/bin/sh
#
# Fancontrol start script.
#
set -e
# Defaults
DAEMON=/usr/sbin/fancontrol
PIDFILE=/var/run/fancontrol.pid
PATH=/sbin:/bin:/usr/sbin:/usr/bin
test -f $DAEMON || exit 0
. /lib/lsb/init-functions
case "$1" in
start)
log_begin_msg "Starting fancontrol daemon..."
start-stop-daemon --start -o -q -m -b -p $PIDFILE -x $DAEMON
log_end_msg $?
;;
stop)
log_begin_msg "Stopping fancontrol daemon..."
start-stop-daemon --stop -o -q -p $PIDFILE
log_end_msg $?
;;
force-reload|restart)
sh $0 stop
sh $0 start
;;
*)
log_success_msg "Usage: /etc/init.d/fancontrol {start|stop|restart|force-reload}"
log_success_msg " start - starts system-wide fancontrol service"
log_success_msg " stop - stops system-wide fancontrol service"
log_success_msg " restart, force-reload - starts a new system-wide fancontrol service"
exit 1
;;
esac
exit 0
A nastavte práva k tomuto souboru na CHMOD 755.
3. Jako root Spusťte v terminálu následující příkaz:
update-rc.d fancontrol defaults 99 01
To zajistí start fancontrol při každém bootu.
4. Hotovo.
Závěr
Možná, že tento postup na první pohled nevypadá krátce a jednoduše avšak je stále několikrát jednodušší než oprava špatného ACPI nebo rekompilace kernelu.