E250/E450 Environmental Monitoring

This is the homepage for the Linux kernel E250/E450 environmental monitoring driver (envctrl) which is currently in development. Most of the work has been done by Eric Brower, to whom every E250/E450 owner should be very grateful.

Before you consider getting the driver, you should know this: it is not finished or well tested. Right now fan speed control and temperature sensing works, but it's quite possible that bugs exist which will cause your machine to catch fire. Seriously. It nearly happened. Use this driver at your own risk!

Getting the driver

You may obtain the driver by anonymous subversion using the command below:

svn co svn://svn.david-web.co.uk/envctrl/trunk

The driver is in active development so it may not compile/work correctly at any given time. You will find working patches in the patches directory in the repository.

Compiling the driver

We target development at the current kernel version, so you may find that the drivers will only compile against the latest kernel. You can however use older patches (each patch filename contains the kernel version(s) it supports) without losing too much functionality.

There are two ways you can build the driver: out-of-tree, or by patching the kernel.

i) Building out-of-tree

Once you have obtained the sources from subversion, building out-of-tree is reasonably straight-forward:

  1. Ensure that you have the sources or headers for your kernel installed
  2. Enter the 'trunk' directory where the envctrl sources were downloaded to
  3. To compile the modules, run: make -C /lib/modules/`uname -r`/build M=`pwd`
  4. To install the modules, run: make modules_install -C /lib/modules/`uname -r`/build M=`pwd`
  5. Load the module: 'modprobe envctrl' for E450 or 'modprobe envctrltwo' for E250

ii) Patching the kernel

You need to ensure that you get the correct patch for your kernel. Patches may be found in the patches directory in the repository. Patches are named based on the kernel version they support and the date the patch was made - for best results, use the most recent patch with the kernel version specified.

  1. Change to your kernel source directory
  2. To apply the patch, run: cat envctrl-(kver)-(date).patch | patch -p1
  3. As long as the patch applied cleanly, start the kernel configuration and enable the following options (either as modules or built-in, whichever you prefer):
    Misc Linux/SPARC Drivers -> SUNW,envctrl environmental monitoring support
    Misc Linux/SPARC Drivers -> SUNW,envctrltwo environmental monitoring support
    Device Drivers -> I2C Support -> I2C Hardware Bus support -> Sun Microsystems envctrl I2C bus nexus driver
  4. Build the kernel and configure as you usually would
  5. Once you are running the new kernel, you can load the modules with 'modprobe envctrl' for E450 or 'modprobe envctrltwo' for E250. If you made the modules built-in, they should already be active.

Getting help

You can contact me with any questions or bug reports.