# lm_sensors nicht-modular installieren

## Haubentaucher

Hallo,

ich habe auf einem NAS-Server einen Kernel ohne Module. Dort wollte ich jetzt aber die CPU-Temperatur messen und lm_sensors ohne Modules zu installieren, scheint recht kompliziert zu sein.

Ich habe das jetzt so gemacht, dass ich eine Datei /etc/conf.d/lm_sensors mit diesem Inhalt erstellt habe:

```

# sleep 2 # optional

/usr/bin/sensors -s # recommended

```

und dann lm_sensors mit /etc/init.d/lm_sensors gestartet habe.

Ein testweiser Aufruf von sensors liefert aber nur:

```

coretemp-isa-0000

Adapter: ISA adapter

Core 0:          N/A  (crit = +100.0°C)                  

coretemp-isa-0001

Adapter: ISA adapter

Core 1:          N/A  (crit = +100.0°C)                  

```

Wichig ist der Sensor auf dem Atomprozessor. Das "Modul" coretemp, das sensors-detect fordert, habe ich eigentlich einkompiliert.

Weiß einer von euch, wo der Fehler liegt? Mir reicht auch schon eine Kerneldatei mit dem Wert (was groß anders wird sensors ja auch nicht auslesen).

----------

## Josef.95

Hmm.., darf man fragen warum du dir das antust..., warum stellst du denn nicht die geforderten Treiber-Module als Modul zur verfügung?

Ich würde generell nur die Treiber build-in bauen die zum booten des Systems (ohne initrd) nötig sind, das sind i.d.R der HDD-Controller Treiber und der Treiber des Filesystems.

Alle anderen würde ich wo möglich als Modul bereitstellen, damit ist man doch meist viel flexibler, und zudem gibt es so einige Programme die eben als Standard Module erwarten.

----------

## Haubentaucher

Das System soll, wie geschrieben, auf einem NAS-Server laufen, auf dem eh so wenig wie möglich Programme laufen sollen (das verringert die Wahrscheinlichkeit nach Programmen, die nur modular funktionieren etwas). 

Dann ist ein nicht modularer Kernel prinzipiell sicherer, da keine "bösen" Module geladen werden können (inwiefern das auf einem Heimserver notwendig ist, sei mal dahingestellt) und zu guter Letzt probiere ich auch gerne mal was aus und da die Standardeinstellung eben anders ist und ich auf meinem Desktoprechner (natürlich) einen Kernel mit Modulen laufen habe, wollte ich das mal ohne probieren.

Groß andere Treiber außer denen für die Dateisysteme und Festplatten sind eh nicht vorhanden. Die Module, die ich hätte würden sich somit (fast) ausschließlich die lm_sensors-Treiber sein.

Wenn das mit lm_sensors partout nicht klappen sollte, werde ich die Module auch wieder aktivieren, aber ich wollte das zuerst einmal anders probieren. Und der Kernel stellt die Daten ja trotzdem bereit, Module hin oder her (deswegen auch die Frage nach dem manuellen Auslesen).

----------

## Max Steel

hmmm laut meinen letzten Informationen reicht lm_sensors es wenn die Treiber irgendwie geladen sind. Also ob jetzt als Modul oder fest ist egal. Die /etc/init.d/lm_sensors lädt prinzipiell nur die Module nach und sensors-detect schreibt auch nur die Treiber die als Modul bereitgestellt werden in die /etc/conf.d/lm_sensors.

Aber da ich meine Kernel bisher alle modular aufbaue... hab ich da keine weiteren Ambitionen und bin mir nichteinmal recht sicher ob die Info stimmt.

----------

## V10lator

Wie mein Vorposter schon vermutete ist es lm_sensors egal ob die Treiber als Module oder fest im Kernel vorhanden sind, Hauptsache sie sind vorhanden.

Diese Ausgabe stammt von einem Kernel mit fest einkompilierten Modulen:

```
sensors

radeon-pci-0100

Adapter: PCI adapter

temp1:       +47.5°C                                    

atk0110-acpi-0

Adapter: ACPI interface

Vcore Voltage:     +1.28 V  (min =  +0.85 V, max =  +1.60 V)

 +3.3 Voltage:     +3.36 V  (min =  +2.97 V, max =  +3.63 V)

 +5 Voltage:       +5.17 V  (min =  +4.50 V, max =  +5.50 V)

 +12 Voltage:     +12.25 V  (min = +10.20 V, max = +13.80 V)

CPU FAN Speed:    1406 RPM  (min =  600 RPM)

CHASSIS FAN Speed:2327 RPM  (min =  600 RPM)

CPU Temperature:   +46.0°C  (high = +60.0°C, crit = +95.0°C)  

MB Temperature:    +39.0°C  (high = +45.0°C, crit = +95.0°C)
```

Natürlich geht das auch ohne lm_sensors, hier am Beispiel der CPU Temperatur:

```
cat /sys/class/hwmon/hwmon1/temp1_input

46000
```

(hwmon1 da 0 in diesem Fall die Radeon Grafikkarte ist.)

In /sys/class/hwmon/hwmon*/ befinden sich generell viele interessante Dateien mit denen man sich, gerade im Embeddet Bereich, lm_sensors eig. komplett sparen kann.

Hier noch ein Beispiel von einem Netbook mit Atom Prozessor:

```
[schlepptop src/linux]# cat /sys/class/hwmon/hwmon0/temp1_input

65000

[schlepptop src/linux]# lsmod

Module                  Size  Used by

oss_usb               102467  2 

oss_hdaudio           137123  4 

osscore               525007  4 oss_usb,oss_hdaudio
```

Wie man sieht sind keine Module geladen die etwas mit dem Monitoring zutun haben, trotzdem kann man sehen das die CPU 65° C warm ist. lm_sensors ist auf diesem Netbook nicht (mehr) installiert, würde aber auch die Temperatur anzeigen.

Mir ist gerade auf dem Netbook etwas aufgefallen: Es hat auch eine Atom CPU, aber:

# CONFIG_SENSORS_CORETEMP is not set

Sicher das du den richtigen Treiber benutzt? Ich muss mal kurz die Config durchwühlen welcher hier benutzt wird...

...

...

Scheint mit ACPI zu tun zu haben *weiterWühl*

...

Das habe ich jetzt gefunden, vielleicht hilfts ja?

```
CONFIG_X86_THERMAL_VECTOR=y

CONFIG_ACPI_THERMAL=y

CONFIG_THERMAL=y

CONFIG_THERMAL_HWMON=y

CONFIG_HWMON=y
```

----------

## Haubentaucher

 *V10lator wrote:*   

> Sicher das du den richtigen Treiber benutzt?

 

Nein, allerdings will das einerseits sensors-detect und im Kernel-Menü ist CONFIG_SENSORS_CORETEMP mit "Intel Core/Core2/Atom temparature sensor" betitelt.

Die Kernelconfig sieht bei mir jetzt so aus (gibt es eigentlich einen einfachen Weg, von den rohen Optionen, z.B. CONFIG_SENSORS_CORETEMP auf das Pendant in menuconfig oder nconfig zu kommen, in dem Fall "Device Drivers -> hwmon support -> Core/Core2 ... temp. sensor" ?):

```
$ cat .config | grep THERMAL

CONFIG_X86_THERMAL_VECTOR=y

CONFIG_ACPI_THERMAL=y

CONFIG_THERMAL=y

CONFIG_THERMAL_HWMON=y

$ cat .config | grep CORETEMP

CONFIG_SENSORS_CORETEMP=y

$ cat .config | grep HWMON

CONFIG_HWMON=y

# CONFIG_HWMON_VID is not set

# CONFIG_HWMON_DEBUG_CHIP is not set

CONFIG_THERMAL_HWMON=y

$ cat .config | grep I2C

# CONFIG_MOUSE_SYNAPTICS_I2C is not set

CONFIG_I2C=y

CONFIG_I2C_BOARDINFO=y

CONFIG_I2C_COMPAT=y

CONFIG_I2C_CHARDEV=y

# CONFIG_I2C_MUX is not set

CONFIG_I2C_HELPER_AUTO=y

CONFIG_I2C_ALGOBIT=y

# I2C Hardware Bus support

# CONFIG_I2C_ALI1535 is not set

# CONFIG_I2C_ALI1563 is not set

# CONFIG_I2C_ALI15X3 is not set

# CONFIG_I2C_AMD756 is not set

# CONFIG_I2C_AMD8111 is not set

CONFIG_I2C_I801=y

CONFIG_I2C_ISCH=y

CONFIG_I2C_PIIX4=y

# CONFIG_I2C_NFORCE2 is not set

# CONFIG_I2C_SIS5595 is not set

# CONFIG_I2C_SIS630 is not set

# CONFIG_I2C_SIS96X is not set

# CONFIG_I2C_VIA is not set

# CONFIG_I2C_VIAPRO is not set

# CONFIG_I2C_SCMI is not set

# I2C system bus drivers (mostly embedded / system-on-chip)

# CONFIG_I2C_OCORES is not set

# CONFIG_I2C_PCA_PLATFORM is not set

# CONFIG_I2C_SIMTEC is not set

# CONFIG_I2C_XILINX is not set

# External I2C/SMBus adapter drivers

# CONFIG_I2C_PARPORT_LIGHT is not set

# CONFIG_I2C_TAOS_EVM is not set

# CONFIG_I2C_TINY_USB is not set

# Other I2C/SMBus bus drivers

# CONFIG_I2C_DEBUG_CORE is not set

# CONFIG_I2C_DEBUG_ALGO is not set

# CONFIG_I2C_DEBUG_BUS is not set

# CONFIG_SENSORS_LIS3_I2C is not set

# CONFIG_MFD_WM8350_I2C is not set

# I2C RTC drivers

$ cat .config | grep ISA

CONFIG_GENERIC_ISA_DMA=y

CONFIG_ISA_DMA_API=y

CONFIG_SECURITY_SELINUX_DISABLE=y

CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
```

Allerdings kann ich immer noch nichts auslesen, selbst am Kernel:

```
$ ls /sys/class/hwmon/hwmon*

/sys/class/hwmon/hwmon0:

device  power  subsystem  uevent

/sys/class/hwmon/hwmon1:

device  power  subsystem  uevent
```

@V10lator Danke übrigens für die ausführliche Antwort.

mfG

----------

## Finswimmer

 *Haubentaucher wrote:*   

> gibt es eigentlich einen einfachen Weg, von den rohen Optionen, z.B. CONFIG_SENSORS_CORETEMP auf das Pendant in menuconfig oder nconfig zu kommen, in dem Fall "Device Drivers -> hwmon support -> Core/Core2 ... temp. sensor" ?

 

make menuconfig: 

Slash ( / ) drücken und dann die Option eingeben, dann kommt die Hilfe dazu, zusammen mit dem "Pfad"

----------

## Haubentaucher

Danke, das funktioniert mit nconfig übrigens auch (finde ich etwas übersichtlicher).

----------

## V10lator

Ich komme leider gerade von einer privaten Feier, bin also nicht ganz nüchtern, aber spontan würde ich vermuten das

CONFIG_ACPI_THERMAL=y

und

CONFIG_SENSORS_CORETEMP=y

sich beißen könnten. Versuch vielleicht mal abwechselnd jeweils nur eins davon zu aktivieren. Ansonsten wäre eventuell die Ausgabe von dmesg direkt nach dem booten noch hilfreich.

Aber bevor ich mich morgen ärgere was ich hier für einen Müll geschrieben habe und ich jetzt noch gefühlte 1000 Tippfehler korrigieren darf hör ich lieber mal auf zu schreiben  :Wink: 

----------

## Haubentaucher

Funktioniert beides nicht. Wenn man coretemp entfernt, erkennt er nicht mal mehr den Sensor. Beim Entfernen von CONFIG_ACPI_THERMAL ändert sich nichts, es kommt immer noch keine Angabe.

----------

## Josef.95

Hmm.., ich kenne diese Intel_Atom CPU`s nun nicht..

Aber, ich frage mich wird lm_sensors denn überhaupt benötigt?

(ich hab es hier nicht installiert)

Zudem könnte der Pfad je nach Treiber auch abweichen, hier bei einer AMD k8 CPU würde zb 

```
cat /sys/class/hwmon/hwmon0/device/temp1_input

28000

```

 = 28 °C

passen.

(Und dieser Wert würde auch korrekt von Systemmonitoren wie zb Conky oder GKrellM verwendet werden)

/edit:

Verwendet wird hier: 

```
Device Drivers  --->

<M> Hardware Monitoring support  --->

--- Hardware Monitoring support

      *** Native drivers ***

<M>   Abit uGuru (rev 1 & 2)
```

----------

## Haubentaucher

Das scheint mit /sys/class/hwmon/hwmon*/device/temp1_input besser zu passen. Die Pseudodatei ist bei mir auch vorhanden und die Ausgabe deckt sich mit der Angabe von sensors:

```
$ cat /sys/class/hwmon/hwmon1/device/temp1_input 

cat: /sys/class/hwmon/hwmon1/device/temp1_input: Die Ressource ist zur Zeit nicht verfügbar
```

Ich habe allerdings herausgefunden, das coretemp meckert:

```
$ dmesg | grep coretemp

[    1.228045] coretemp coretemp.0: Unable to read TjMax from CPU.

[    1.228158] coretemp coretemp.0: Using relative temperature scale!

[    1.228504] coretemp coretemp.1: Unable to read TjMax from CPU.

[    1.228616] coretemp coretemp.1: Using relative temperature scale!
```

Vielleicht ist das auch irgendeine falsch gesetzte BIOS-Einstellung, die das Auslesen von TjMax verhindert.

----------

## Haubentaucher

Habe im BIOS nichts in der Richtung gefunden, außer der Anzeige von CPU-Temperatur und Lüftergeschwindigkeit.

----------

## Josef.95

Ich hab noch mal kurz das allwissende Orakel zu "gentoo Temperatur hwmon Atom" befragt, und fand dort u.a. diesen Wiki Beitrag http://en.gentoo-wiki.com/wiki/Asus_Eee_Box_B202#Sensors

Dort geht es auch um eine Atom CPU und sensors

(Eventuell hilft das ja weiter...)

----------

## Haubentaucher

Danke für die Hilfe, aber ich bezweifle, dass das der richtige Lösungsansatz ist. Zum einen ist der 31er Kernel schon recht alt und zum anderen steht hier, dass es ohne Verrenkungen funktioniert.

Allerdings ist die Ausgabe wieder ziemlich ähnlich zu der, die ich habe.

----------

## Haubentaucher

Ich habe jetzt sogar mal mit der Boot-Option acpi_enforce_resources=lax gebootet, hat aber auch nichts geändert.

----------

## Josef.95

Hmm. anscheinend gibt es bei den Atom CPU Modellen unterschiedliche Sensoren ( und dafür dann auch jeweils andere Treiber?)

Was für ein CPU Typ ist das denn genau bei dir?

Ansonsten siehe evtl. auch noch  http://en.gentoo-wiki.com/wiki/Asus_Eee_PC_901#Sensors

----------

## Haubentaucher

Das ist ein Intel Atom D525, zusammen mit dem Gigabyte GA-D525TUD Board, also genau dasselbe wie in dem eben von mir verlinkten Seiten.

/proc/acpi/thermal-zone fehlt bei mir.

----------

## Haubentaucher

Ich habe das ganze testweise mal mit Ubuntu probiert, in dessen Kernel ja so ziemlich alles drin ist und dort hat man genau dasselbe Problem.

----------

