Obsługa sensorów płyty głównej w Linuksie

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!
Jest to artykuł konkursowy nadesłany do nas przez Szymona S.

Wstęp

Z pewnością każdy zatroskany użytkownik z wielką radością wita wszystkie rewelacje pozwalające zdiagnozować aktualną kondycję podzespołów swojego ulubionego komputera i zapobiec ewentualnym efektownym, acz niepożądanym fajerwerkom w skrzyni komputera.
Informacje o temperaturze i napięciu procesora oraz obrotach wentylatora mogą być też przydatne overclockerom, ponieważ zlustrowane ich chłodnym okiem pozwalają stwierdzić, czy warto jeszcze katować biedny procesor w imię przesuwania granicy wytrzymałości i szybkości sprzętu.
Na szczęście nasz ulubiony system operacyjny udostępnia wręcz nieprzyzwoitą liczbę narzędzi spełniających to niewdzięczne zadanie. W niniejszym artykule zajmiemy się konfiguracją pakietu lm-sensors – zbioru narzędzi pozwalającym na dostęp do informacji o sensorach płyty głównej z poziomu konsoli – który jest wykorzystywany przez masę innych aplikacji monitorujących nasz informatyczny ekwipunek.

Instalacja

Na początku warto by zassać z bezdennych czeluści repozytorium Debiana wspomniany pakiet lm-sensors:

sudo apt-get install lm-sensors

Po, miejmy nadzieję, udanej instalacji należy zgrabnie przebierając palcami po klawiaturze napisać w terminalu następujący ciąg znaków:

sudo sensors-detect

Wraz z naciśnięciem klawisza Enter rozpocznie się przesłuchanie – program konfigurujący zaleje nas masą podchwytliwych pytań. Na każde z nich zalecam nieustępliwe odpowiadanie ‘yes’. Postępując tak, zgadzamy się na przeskanowanie dostępnych czujników płyty głównej i dodanie stosownych
wpisów do /etc/modules/.
Po odpytywaniu restartujemy moduły jądra poleceniem:

sudo service module-init-tools start

i testujemy komendą:

sensors

Możemy teraz rozkoszować swoje oczy pięknym wykazem wartości wspomnianych czujników. W moim przypadku wygląda on tak:

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +38.0°C  (high = +76.0°C, crit = +100.0°C)
Core 1:       +40.0°C  (high = +76.0°C, crit = +100.0°C)

it8718-isa-0290
Adapter: ISA adapter
in0:          +1.06 V  (min =  +0.00 V, max =  +4.08 V)
in1:          +1.90 V  (min =  +0.00 V, max =  +4.08 V)
in2:          +3.34 V  (min =  +0.00 V, max =  +4.08 V)
+5V:          +2.94 V  (min =  +0.00 V, max =  +4.08 V)
in4:          +0.22 V  (min =  +0.00 V, max =  +2.10 V)
in5:          +4.08 V  (min =  +0.00 V, max =  +4.08 V)  ALARM
in6:          +4.08 V  (min =  +0.00 V, max =  +4.08 V)  ALARM
in7:          +3.10 V  (min =  +0.00 V, max =  +4.08 V)
Vbat:         +3.25 V
fan1:         927 RPM  (min =    0 RPM)
fan2:           0 RPM  (min =    0 RPM)
temp1:        -55.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp2:         -2.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp3:        +27.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermal diode
cpu0_vid:    +3.300 V
intrusion0:  ALARM

Najbardziej interesujące są pozycje Core 1, Core 2 oraz fan1 i fan2.

Posłowie

Mimo że po instalacji lm-sensors życie z pewnością nabrało kolorów, to warto by mieć na podorędziu program przedstawiający te wszystkie zawiłe informacje w formie miłej dla oka. Tu wybór jest przeogromny, jednakże ja sam gorąco polecam GKrellM. Jego strona domowa znajduje się tutaj.

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • macios4x

    Wydaje się, że Ubuntu nie rozpoznaje sensorów na płycie ASUS P5l-VM 1394. Nie wykrywa żadnych sensorów.

  • http://mate-desktop.org/ paweł634

    Styl autora denerwujący :( ale temat wart przeczytania zwłaszcza dla nowych.
    Także polecam gkrellm dużo łatwiejszy w użyciu niż conky.
    Dodam jeszcze, żeby monitorować temperaturę dysku twardego trzeba doinstalować:
    sudo apt-get install hddtemp

    • Sinnes

      Mnie tam się styl podobał. ;)

  • RafciX

    Mnie to zastanawia, co to są za napięcia, które wyświetla mi ten program (in0, in1, in2 i tak dalej) oraz do czego służą czujniki: cpu0_vid oraz intrusion0.

    • szx

      Polecenie sensors ma to do siebie, że często jego zwracane wyniki trzeba interpretować „na czuja” – przeznaczenie każdego czujnika napięcia jest zależne od modelu płyty głównej.

      cpu0_vid jest napięciem, jakiego oczekuje CPU od płyty głównej.

      Czujnik intrusion0 z tego co mi wiadomo wykrywa „chassis intrusion”, czyli po prostu czy obudowa jest otwarta. Można wyłączyć w BIOS-ie.

      Można wymusić ignorowanie tych zbędnych czujników poprzez dodanie do pliku konfiguracyjnego /etc/sensors3.conf następujących linijek:

      chip „it8718-isa-0290”
      ignore intrusion0
      ignore cpu0_vid

      Oczywiście zamiast ‚it8718-isa-0290’ trzeba zamienić na nazwę własnego „chipu”. Należy też pamiętać, by po każdorazowej modyfikacji pliku konfiguracyjnego wywołać komendę sensors -s.

  • szx

    @macios4x
    Trudno cokolwiek poradzić na podstawie tak szczątkowych danych. Jaka masz wersję Ubuntu i kernela (komenda uname -r) i co dokładnie wypluwają komendy sensors-detect i sensors?

    Warto nadmienić, że według FAQ lm_sensors występują problemy z niektórymi wersjami jadra.

    • macios4x

      Ubuntu 10.04 2.6.32-31-generic; 12.04 tak samo, sudo sensors-detect, potwierdzam wszystko „yes”, ale praktycznie niczego nie wykrywa:

      Silicon Integrated Systems SIS5595… No
      VIA VT82C686 Integrated Sensors… No
      VIA VT8231 Integrated Sensors… No
      AMD K8 thermal sensors… No
      AMD Family 10h thermal sensors… No
      AMD Family 11h thermal sensors… No
      Intel Core family thermal sensor… No
      Intel Atom thermal sensor… No
      Intel AMB FB-DIMM thermal sensor… No
      VIA C7 thermal sensor… No
      VIA Nano thermal sensor… No

      Some Super I/O chips contain embedded sensors. We have to write to
      standard I/O ports to probe them. This is usually safe.
      Do you want to scan for Super I/O sensors? (YES/no): y
      Probing for Super-I/O at 0x2e/0x2f
      Trying family `National Semiconductor’… No
      Trying family `SMSC’… No
      Trying family `VIA/Winbond/Nuvoton/Fintek’… Yes
      Found `Winbond W83627DHG Super IO Sensors’ Success!
      (address 0x290, driver `w83627ehf’)
      Probing for Super-I/O at 0x4e/0x4f
      Trying family `National Semiconductor’… No
      Trying family `SMSC’… No
      Trying family `VIA/Winbond/Nuvoton/Fintek’… No
      Trying family `ITE’… No

      Some systems (mainly servers) implement IPMI, a set of common interfaces
      through which system health data may be retrieved, amongst other things.
      We first try to get the information from SMBIOS. If we don’t find it
      there, we have to read from arbitrary I/O ports to probe for such
      interfaces. This is normally safe. Do you want to scan for IPMI
      interfaces? (YES/no): y
      Probing for `IPMI BMC KCS’ at 0xca0… No
      Probing for `IPMI BMC SMIC’ at 0xca8… No

      Some hardware monitoring chips are accessible through the ISA I/O ports.
      We have to write to arbitrary I/O ports to probe them. This is usually
      safe though. Yes, you do have ISA I/O ports even if you do not have any
      ISA slots! Do you want to scan the ISA I/O ports? (yes/NO): y
      Probing for `National Semiconductor LM78′ at 0x290… No
      Probing for `National Semiconductor LM79′ at 0x290… No
      Probing for `Winbond W83781D’ at 0x290… No
      Probing for `Winbond W83782D’ at 0x290… No

      Lastly, we can probe the I2C/SMBus adapters for connected hardware
      monitoring devices. This is the most risky part, and while it works
      reasonably well on most systems, it has been reported to cause trouble
      on some systems.
      Do you want to probe the I2C/SMBus adapters now? (YES/no): y
      Using driver `i2c-i801′ for device 0000:00:1f.3: Intel 82801G ICH7
      Module i2c-i801 loaded successfully.
      Module i2c-dev loaded successfully.

      Next adapter: intel drm CRTDDC_A (i2c-0)
      Do you want to scan it? (YES/no/selectively): y
      Client found at address 0x49
      Probing for `National Semiconductor LM75’… No
      Probing for `Dallas Semiconductor DS75’… No
      Probing for `National Semiconductor LM77’… No
      Probing for `Dallas Semiconductor DS1621/DS1631’… No
      Probing for `National Semiconductor LM73’… No
      Probing for `National Semiconductor LM92’… No
      Probing for `National Semiconductor LM76’… No
      Probing for `Maxim MAX6633/MAX6634/MAX6635’… No
      Client found at address 0x50
      Probing for `Analog Devices ADM1033’… No
      Probing for `Analog Devices ADM1034’… No
      Probing for `SPD EEPROM’… No
      Probing for `EDID EEPROM’… Yes
      (confidence 8, not a hardware monitoring chip)
      Client found at address 0x51
      Probing for `Analog Devices ADM1033’… No
      Probing for `Analog Devices ADM1034’… No
      Probing for `SPD EEPROM’… No
      Client found at address 0x52
      Probing for `Analog Devices ADM1033’… No
      Probing for `Analog Devices ADM1034’… No
      Probing for `SPD EEPROM’… No
      Client found at address 0x53
      Probing for `Analog Devices ADM1033’… No
      Probing for `Analog Devices ADM1034’… No
      Probing for `SPD EEPROM’… No

      Next adapter: SMBus I801 adapter at 0400 (i2c-1)
      Do you want to scan it? (YES/no/selectively): y
      Client found at address 0x50
      Probing for `Analog Devices ADM1033’… No
      Probing for `Analog Devices ADM1034’… No
      Probing for `SPD EEPROM’… Yes
      (confidence 8, not a hardware monitoring chip)
      Probing for `EDID EEPROM’… No
      Client found at address 0x51
      Probing for `Analog Devices ADM1033’… No
      Probing for `Analog Devices ADM1034’… No
      Probing for `SPD EEPROM’… Yes
      (confidence 8, not a hardware monitoring chip)
      Client found at address 0x52
      Probing for `Analog Devices ADM1033’… No
      Probing for `Analog Devices ADM1034’… No
      Probing for `SPD EEPROM’… Yes
      (confidence 8, not a hardware monitoring chip)
      Client found at address 0x53
      Probing for `Analog Devices ADM1033’… No
      Probing for `Analog Devices ADM1034’… No
      Probing for `SPD EEPROM’… Yes
      (confidence 8, not a hardware monitoring chip)

      Now follows a summary of the probes I have just done.
      Just press ENTER to continue:

      Driver `w83627ehf’:
      * ISA bus, address 0x290
      Chip `Winbond W83627DHG Super IO Sensors’ (confidence: 9)

      To load everything that is needed, add this to /etc/modules:
      #—-cut here—-
      # Chip drivers
      w83627ehf
      #—-cut here—-
      If you have some drivers built into your kernel, the list above will
      contain too many modules. Skip the appropriate ones!

      Do you want to add these lines automatically to /etc/modules? (yes/NO)n

      Unloading i2c-dev… OK
      Unloading i2c-i801… OK

      • http://mate-desktop.org/ paweł634

        coś jednak wykrywa:

        To load everything that is needed, add this to /etc/modules:
        #—-cut here—-
        # Chip drivers
        w83627ehf
        #—-cut here—-
        If you have some drivers built into your kernel, the list above will
        contain too many modules. Skip the appropriate ones!

        Do you want to add these lines automatically to /etc/modules? (yes/NO)n

        na ostatnie pytanie trzeba dać yes, [automatycznie doda Ci ten moduł do /etc/modules] po restacie wskazania powinny się pojawić.

        • macios4x

          I tak nie działa, na Ubuntu 12.04 też nic:

          No sensors found!
          Make sure you loaded all the kernel drivers you need.
          Try sensors-detect to find out which these are.

          • http://mate-desktop.org/ paweł634

            sprawdź czy masz dopisany ten moduł: w83627ehf,
            w terminalu:
            sudo gedit /etc/modules

            albo wklej tu zawartość pliku /etc/modules.

          • macios4x

            # /etc/modules: kernel modules to load at boot time.
            #
            # This file contains the names of kernel modules that should be loaded
            # at boot time, one per line. Lines beginning with „#” are ignored.

            lp

            # Generated by sensors-detect on Sun Mar 11 14:44:15 2012
            # Chip drivers
            w83627ehf

  • ARNi

    Szmitas ,za first zadanie na „Wstępie” powinieneś dostać bana :) na tej stronie na całe wakacje i przepisać 100 x „aczkolwiek” .

  • http://mate-desktop.org/ paweł634

    macios4
    ok, moduł powinien się ładować, chyba jednak jakiś bug.

    hm, miałem kiedyś problem z sensorami przez acpi, rozwiązaniem okazało się dopisanie w /boot/grub/grub.cfg , „acpi_enforce_resources=lax” ,
    linux /boot/vmlinuz-3.0.0.0-2-686 root=UUID=666828e4a-ce2af71f7606 ro quiet acpi_enforce_resources=lax , ale to była inna płyta i u Ciebie to pewnie nie pomoże.

  • Czeslaw

    Program GKrellM jest w repozytoriach Ubuntu, więc aby go zainstalować, wystarczy wpisać w konsoli:

    sudo apt-get install gkrellm

  • emeritus

    Fajne,dzięki!Co prawda u mnie „zatrybiły” tylko sensory od cpu 0 i cpu 1 ale to chodzi!Temperaturkę grafiki mogę sobie sprawdzić w Nvidia Xserver settings.

  • szx

    @macios4
    Według wspomnianego już ustępu w FAQ w przypadku kernela 2.6.31 należy postąpić tak jak paweł634, czyli do pliku /boot/grub/grub.cfg należy dodać linijkę:
    acpi_enforce_resources=lax

    Ostrzegam jednak, że grzebiesz w bebechach systemu na własną odpowiedzialność.

    • macios4x

      Zrobiłem tak, ale bez zmian, nadal brak sensorów.

  • shani

    A czy jest jakis tego typu sposob zeby odczytac temperature grafiki? Nvidii Xserver settingsa nie za bardzo moge uruchomic. Ale cos takiego jak lm-sensors czy hddtemp byloby super.

  • Czesław

    GKrellM – prawy PM na nole powoduje wyświetlenie ustawień podglądu napięć, obrotów wentylatora, temperatury, alarmów … A możliwości jest, że głowa boli … :)

    • shani

      U mnie niestety owy program powoduje wyswietlenie tych samych wartosci wspolczynnikow co w innych tego typu programach, widac brakuje mi czegos jeszcze aby wyswietlac chociazby wspomniana temperature grafiki, badz obtorow wentylatora.

  • http://error Czesław

    …powinno być „na dole”

  • Tomo Szymanek

    lm sensors po zainstalowaniu chodzi jak marzenie – porada jest ok

  • Wojti

    Witam. Proszę o pomoc. Szukam już 3ci dzień. Jestem początkujacym linuxiarzem. Zależy mi by mój komputer się chłodził. Wiatraki mogą chodzić na full zależy mi na Cpu i Gpu. Proszę jeśli jest możliwość o podzielenie się rozwiązaniem jak uzależnić pracę wiatraków, ich obroty od temperatury cpu i gpu. W tym momencie działa mi jedynie dodatkowa podkładka chłodząca. Wiatraki włączają się sporadycznie. Pozdrawiam.