-   Linux - General (
-   -   Anyone having problems with i8kutils on Kernel 2.6? (

ashlock 09-27-2004 03:33 AM

Anyone having problems with i8kutils on Kernel 2.6?
i8kutils (fan temp control for Dell inspiron laptops) is included in 2.6 kernels, but the modules would not install for me. I always got an "invalid module format" message when trying to (force) install the module.

After 2 months of occasional messing around with this problem, I finally got it working. There were about 4 different problems with getting it working under Kernel 2.6.8 on Fedora Core 2. Here is my rather jaded 2 am synopsis of my solution procedure.

Getting the i8kutils to work on Kernel 2.6.8-1.521 on an inspiron 8600

(1) i8kutils was included in the kernel. Compiling it as a module or directly into
the kernel didn't work, giving the error;

insmod: error inserting 'i8k.o': -1 Invalid module format

So I Downloaded the source code and had to create the symbolic links /usr/src/linux and
/usr/src/linux-2.6 to point to the current source directory (newer RH Kernels don't do this anymore, I guess). I could have just changed the /usr/src/linux variable in the Makefile but I think some module stuff also needs these links. Then I
ran 'make' and 'make install'.

(2) Then make module was complaining about some crap;

---begin some crap---

/usr/src/linux/include/asm/system.h: In function `__set_64bit_var':
/usr/src/linux/include/asm/system.h:193: warning: dereferencing type-punned pointer
will break strict-aliasing rules
/usr/src/linux/include/asm/system.h:193: warning: dereferencing type-punned pointer
will break strict-aliasing rules
i8k.c:884:2: warning: #warning "compiling unversioned module, load with insmod --force"
strip --strip-unneeded \

---end some crap---

I googled the error message, found out that optimization -O2 was the problem, and changed this to -O in the Makefile. The aliasing error went away and the complaint about

(3) SET_MODULE_OWNER appears to have been deprecated (see, so I tried to use patch but couldn't figure it out,
and I just added the line

#define SET_MODULE_OWNER(dev) ((dev)->owner = THIS_MODULE)

after the line containing 'symbol_request', to /usr/src/linux/include/linux/module.h
and this problem went away.

(4) Then the module format was the old i8k.o and we need it to be the current i8k.ko
(see , so move Makefile to Makefile2 since we are done
with it and can always use 'make -f Makefile2' to use it again, and create a new
Makefile containing the line;

obj-m := i8k.o

and type

make -C /path/to/source SUBDIRS=$PWD modules


insmod i8k.ko

And freakin' voila, a 2 month long nagging problem solved that the author probably
could have solved in about 2 seconds if he had the time to look at my (invited)
email. He's probably way to deluged by a flood of similar emails, though.

ashlock 09-27-2004 12:35 PM

After recompiling the kernel, i8kutils will now load at boot time, but I get a lot of warnings because netdevice .h file had already defined SET_MODULE_OWNER(dev).

Is there a better way to take care of this part of the problem?

ashlock 01-14-2005 12:24 AM

Just in case anyone else is using this, it's easier to replace step 3 with the following; just delete the line that mentions SET_MODULE_OWNER from i8k.c

All times are GMT -5. The time now is 04:23 AM.