lm_sensors on 2.6.x kernels

Current status

For recent 2.6 kernels (2.6.9 and later), you need at least lm_sensors 2.8.8. If the drivers you need are platform drivers (as opposed to i2c drivers), you need at least lm_sensors 2.10.1.

Most hardware monitoring device drivers have been ported to Linux 2.6 by now, but some are still missing. All i2c bus drivers have been ported.

Almost all userspace tools (sensors, sensors-detect, the i2c diagnostic tools, eeprom decoding scripts and fan control scripts) offer support for 2.6.x kernels.

To install the userspace tools, download the latest lm_sensors package and run:

make user
make user_install

Recommended Kernel Configuration

  Code maturity level options
    [*] Prompt for development and/or incomplete code/drivers

  Bus options (PCI, PCMCIA, EISA, MCA, ISA)
    [*] PCI support

  Device Drivers
    I2C support
      <M> I2C support
      <M> I2C device interface
      I2C Algorithms
        <M> (configure all of them as modules)
      I2C Hardware Bus support
        <M> (configure all of them as modules)
      I2C Hardware Sensors Chip support (up to 2.6.12)
        <M> (configure all of them as modules)
    Hardware Monitoring support (since 2.6.13)
      <M> (configure all of them as modules)

Known general issues

Please review this list before reporting a problem to us.

  • In kernel 2.6.22, the way the I2C adapters are presented in sysfs changed, and this affects libsensors. You will need lm_sensors version 2.10.3 or later. Alternatively, the kernel can be compiled with CONFIG_SYSFS_DEPRECATED=y, then version 2.10.2 will work too. Older versions of lm_sensors will complain that the I2C adapter names can't be read. This is only a warning though.
  • A few chip drivers are not yet ported. Therefore sensors-detect may recommend a driver that is not present. Please check your kernel configuration and the drivers/i2c/chips (up to 2.6.12) or drivers/hwmon (since 2.6.13) directory for the presence of your driver. Our Devices page shows which drivers are present in 2.6 kernels.
  • If you would like to port an old hardware monitoring driver, your best chance is to look at a similar driver in your target 2.6 kernel tree and use it as an example.

Known driver-specific issues

Please review this list before reporting a problem to us.

  • In kernel 2.6.22, 5 drivers have been converted from i2c-isa to platform drivers: lm78, smsc47b397, smsc47m1, w83627hf and w83781d. Platform drivers are supported since lm_sensors 2.10.1, so make sure you have at least this version if you use one of the affected drivers. The remaining i2c-isa-based drivers will be converted soon.
  • Up to Linux 2.6.10 (included), via686a and i2c-viapro cannot both be loaded due to PCI resource conflicts. For most users, use i2c-isa + via686a to access sensor data. If values don't make sense, unload both drivers and try i2c-viapro + another chip driver (sensors-detect should tell you which). The issue was finally solved in Linux 2.6.11.
  • i2c-voodoo3 generally will not load due to PCI resource conflicts with tdfxfb or other frame buffer / display drivers. The 2.6 driver requests the PCI device, because it is considered Bad (TM) to use a device without requesting it. This probably means that the i2c-voodoo3 driver should me merged into the framebuffer driver, much like was done for matroxfb, radeonfb and nvidiafb. This also makes sense because the framebuffer driver can use the DDC channel (which is no more than I2C, renamed) to retrieve information about the monitor and adapt its output. But this also raises the problem that people may want to access the i2c busses without loading the full framebuffer driver...

Early 2.6 kernels (2.6.0 to 2.6.8)

Naming and magnitude standards for sysfs data was just stabilizing in early 2.6 kernels. As a result, we did our best to ensure that lm_sensors was compatible with the kernel state at any given state, and released often. This also means that each version of lm_sensors from 2.8.2 (the first 2.6 kernel compatible release) to 2.8.5 only work properly for a limited range of kernel versions.

Recommended kernel and lm_sensors combinations:

  • Kernels 2.6.9-rc1 and later: lm_sensors 2.8.8 or any later version
  • Kernels 2.6.5-rc1 to 2.6.8: lm_sensors 2.8.6 or any later version
  • Kernels 2.6.3-rc2 to 2.6.4: lm_sensors 2.8.5
  • Kernels 2.6.2-rc1 to 2.6.3-rc1: lm_sensors 2.8.4
  • Kernels 2.6.1-rc1 to 2.6.1: lm_sensors 2.8.3
  • Kernels 2.6.0 and earlier: lm_sensors 2.8.2

Note that you should really stick to the exact version of lm_sensors we recommend (up to kernel version 2.6.5), since newer versions usually do not support older (nor later, of course) kernels properly. This results in data not found, or off by factors of 10, in 'sensors'. Compatibility after kernel version 2.6.5 is guaranted (i.e. the latest version of lm_sensors will always support all versions of the kernel since 2.6.5).

Also note that several distributions are lying about the kernel they ship, and a 2.6.x kernel package may actually be built from 2.6.(x+1)-rc kernel sources. If you get broken readings, simply try the next lm_sensors release.

Specific issues (all fixed in later versions):

  • ASB100 support was dropped from the w83781d driver in Linux 2.6.5 / lm_sensors 2.8.5. If you have an Asus board and w83781d was detecting an AS99127F chip before, but not anymore, you most likely need to use the new, dedicated asb100 driver instead.
  • VRM is broken for 2.6 kernels in lm_sensors 2.8.6.
  • Hysteresis temperature is broken for 2.6 lm75, lm78 and gl518sm chip drivers in lm_sensors 2.8.6.
  • I2C core debugging is severely broken in kernels before 2.6.5-rc1. Don't select it unless you like kernel oopses.
  • The i2c-ali1535, i2c-sis5595 and i2c-via bus drivers do not accept hardware monitoring drivers connecting to them. Fixed in Linux 2.6.5-rc1.
  • it87 support is broken in lm_sensors 2.8.3 (with kernel 2.6.1).
  • lm75 and lm78 temperatures are not found by libsensors (with kernel 2.6.1) due to sysfs naming issues.