Monday, July 14, 2008

How to Access SMM BIOS from Dell Latitude and Inspiron Laptops

For accessing laptop's SMM Bios from Dell Inspiron and Latitude and I just found out that Fedora supports i8utils rpm package for accessing SMM Bios of Dell Inspiron and Latitude laptops. I8utils SMM BIOS support tools can provide access to SMM BIOS for supported laptops specifically for Dell Insiron and Latitude laptops. This SMM BIOS is used to support APM functionalities and modify custom hardware specifications like fan coolling, volume buttons and more.

After i8kutils installation, I found out a  copy of i8utils README text and decided to post it here, as follows.

I8kUtil Package for Dell Inspiron and Latitude Laptops

This package contains a kernel driver and user-space programs for accessing the SMM BIOS of Dell Inspiron and Latitude laptops. The SMM BIOS is used on many recent laptops to implement APM functionalities and to access custom hardware, for example the cooling fans and volume buttons of the I8000.

The kernel driver and the utilities included in the package can report the following information about the hardware:

* BIOS version

* serial number

* CPU temperature

* fan status

* fan rotation speed (only on some models)

* ac power status

* volume buttons status (not the multimedia buttons)

The package include also the following utilities:

* i8kctl     - command-line interface to the kernel driver

* i8kmon     - temperature monitor with automatic or manual fan control

* i8kbuttons - monitors volume buttons and runs user-defined commands

The i8kctl can be used to manually control the fan speed, like my old i8kfan utility, but that program is now obsoleted by the new i8kmon program which can continuously monitor the CPU temperature and control automatically the fans. The automatic fan control feature of i8kmon does essentially the same job of the BIOS. The only difference is that my program works.

The driver has been reported to work with the following hardware and BIOS:

Inspiron 1100 (BIOS A06), one fan, no buttons
Inspiron 2650 (BIOS A05)
Inspiron 3700 (BIOS A15), no fan speed
Inspiron 3800 (BIOS A14), no fan speed
Inspiron 4000 (BIOS A10), no fan speed
Inspiron 4100
Inspiron 4150
Inspiron 5100 (BIOS A06), one fan, no buttons
Inspiron 5150 (BIOS A24), one fan, no buttons
Inspiron 8000 (BIOS A17)
Inspiron 8100 (BIOS A04)
Inspiron 8200 (BIOS A06)
Latitude C400 (BIOS A01)
Latitude C510 (BIOS A07)
Latitude C600 (BIOS A17)
Latitude C610
Latitude C800 (BIOS A17)
Latitude C810 (BIOS A12)
Latitude C840 (BIOS A10)
Latitude CPiA (BIOS A14), no fan speed
Latitude CPx J750GT (BIOS A13), no fan speed
Latitude D600 (BIOS A05)
Latitude D800 (BIOS A00)
Latitude X200 (BIOS A07)

but will probably work on any recent Dell laptop. Note that on some models or BIOS versions the fan speed is not available. On some BIOS also the BIOS version is not available from SMM but the driver is able to obtain it using another method.

The driver seems *NOT WORKING* on the following models:

Inspiron 2500 (BIOS A10)
Inspiron 3200
Inspiron 3500
Inspiron 5000e (BIOS A06)
Inspiron 5150 (BIOS A23)
Inspiron 7000
Inspiron 7500
Latitude CPx H450GT
Latitude LS H500ST

On loading the module checks for the presence of an Dell Inspiron or Latitude laptop and refuses to load if running on an unknown system. You can however force loading of the driver, for testing it on unknown hardware, by passing the "force=1" option to insmod:

insmod i8k.o force=1

Note that force loading of the module on unknown hardware could crash your system and will anyway 'taint' the kernel. The force option is provided only for testing purposes or for loading on systems where the BIOS version can't be read from the SMM BIOS.

The information provided by the kernel driver can be accessed by simply reading the /proc/i8k file.

For example:

$ cat /proc/i8k
1.0 A17 2J59L02 52 2 1 8040 6420 1 2

The fields read from /proc/18k are:

1.0 A17 2J59L02 52 2 1 8040 6420 1 2
|   |   |       |  | | |    |    | |
|   |   |       |  | | |    |    | +------- 10. buttons status
|   |   |       |  | | |    |    +--------- 9.  ac status
|   |   |       |  | | |    +-------------- 8.  right fan rpm
|   |   |       |  | | +------------------- 7.  left fan rpm
|   |   |       |  | +--------------------- 6.  right fan status
|   |   |       |  +----------------------- 5.  left fan status
|   |   |       +-------------------------- 4.  CPU temperature (Celsius)
|   |   +---------------------------------- 3.  serial number
|   +-------------------------------------- 2.  BIOS version
+------------------------------------------ 1.  /proc/i8k format version

For performance reasons the /proc/i8k doesn't report by default the ac status since this SMM call takes a long time to execute and is not really needed. If you want to see the ac status in /proc/i8k you must explictitly enable this option by passing the "power_status=1" parameter to insmod. If ac status is not available -1 is printed instead.

Fedora Installation of il8utils

Fedora supports il8utils rpm package and can be installed using yum. Be warned, install at your own risk.

# yum -y install i8ktuils

All done.

0 comments:

Sign up for PayPal and start accepting credit card payments instantly.
ILoveTux - howtos and news | About | Contact | TOS | Policy