11 January 2012

47. A step on the way to compiling the omnibook apci drivers on debian testing

First, see here:
http://sourceforge.net/projects/omnibook/
http://home.comcast.net/~rickrich1/toshiba-1115-s103/omnibook.txt

I have an old toshiba satellite a205 which has a fan that turns on at 50 degrees and turns off at 45 degrees. It's a much too narrow range, so the fan is starting up every two minutes or so -- having it turn off at 40 degrees would probably make more sense. To this effect I wanted to see if I could get apci fan support.

In the end I don't seem to have succeeded, but here's what I did manage to do, and what happened:

Go:
Install build-essential and the kernel headers for your kernel

git clone git://omnibook.git.sourceforge.net/gitroot/omnibook/omnibook
cd omnibook/

vim polling.c
comment out lines 128:
//        cancel_rearming_delayed_workqueue(omnibook_wq, &omnibook_poll_work);

and 191 using // :
//            cancel_rearming_delayed_workqueue(omnibook_wq, &omnibook_poll_work);

Run:
sudo make load

Read through doc/INSTALL, then


WARNING:
Some say that loading with the wrong ectype can be bad for you computer. My guess is that things will be fine as long as you don't put the computer on heavy load while trying the method below out so that you don't risk burning anything.

OK, time to try the shotgun approach:
var=1 && sudo rmmod omnibook && sudo modprobe omnibook ectype=$var && ls /proc/omnibook

Do this with values of var from 1-16. See which one gives the 'best' support. For me most things showed up for all ectypes between 1 and 10, but only ectype=1 show fan_policy

Next do cat /proc/omnibook/fan , cat /proc/omnibook/display, cat /proc/omnibook/battery etc. to see whether the settings seem to correspond to reality.

ectypes
I can't find the original document which details the different ectypes and the corresponding laptop models. Your best guess is to do like I did above (just trying randomly) or to google for omnibook and ectype and see which model is closer to yours.

Making omnibook load on boot:
vim /etc/modules
add a line saying
omnibook

and the create a file called omnibook.conf under /etc/modprobe.d
In /etc/modprobe.d/omnibook.conf you put a single line:
options modprobe ectype=12

cat /proc/omnibook/fan_policy gives

Fan off temperature:         0 C
Fan on temperature:          0 C
Fan level 2 temperature:     0 C
Fan level 3 temperature:     0 C
Fan level 4 temperature:     0 C
Fan level 5 temperature:     0 C
Fan level 6 temperature:    10 C
Fan level 7 temperature:    108 C
Minimal temperature to set: 25 C
Maximal temperature to set: 95 C

Those are the same values as in fan_policy.c (in the source code we downloaded). It seems that the way to change the values is that you should recompile, which is easy enough but also a bit scary. Haven't played with it yet.


Here's tree /proc/omnibook :

/proc/omnibook
├── ac
├── battery
├── blank
├── display
├── dmi
├── fan
├── fan_policy
├── hotkeys
├── lcd
├── temperature
├── touchpad
└── version

0 directories, 12 files



Here's the dmesg | grep omni output:

[    8.792966] omnibook: Driver version 2.20090707-trunk.
[    8.792969] omnibook: Forced load with EC type 1.
[    8.793055] omnibook: Feature range f86be5c0 - f86beac0
[    8.793058] omnibook: Testing feature ac at address f86be5c0
[    8.793060] omnibook: Begin table match of ac feature.
[    8.793063] omnibook: Attempting backend ec init.
[    8.793066] omnibook: Returning table entry nr 0.
[    8.793068] omnibook: Match succeeded: continuing with ac.
[    8.793072] omnibook: Testing feature battery at address f86be600
[    8.793075] omnibook: Begin table match of battery feature.
[    8.793077] omnibook: Attempting backend ec init.
[    8.793079] omnibook: Returning table entry nr 0.
[    8.793082] omnibook: Match succeeded: continuing with battery.
[    8.793086] omnibook: Testing feature blank at address f86be640
[    8.793088] omnibook: Begin table match of blank feature.
[    8.793090] omnibook: Attempting backend i8042 init.
[    8.793093] omnibook: Returning table entry nr 1.
[    8.793095] omnibook: Match succeeded: continuing with blank.
[    8.793098] omnibook: LCD backlight turn off at console blanking is enabled.
[    8.793102] omnibook: Testing feature bluetooth at address f86be680
[    8.793105] omnibook: Testing feature cooling at address f86be6c0
[    8.793107] omnibook: Testing feature display at address f86be700
[    8.793110] omnibook: Begin table match of display feature.
[    8.793112] omnibook: Attempting backend ec init.
[    8.793114] omnibook: Returning table entry nr 2.
[    8.793116] omnibook: Match succeeded: continuing with display.
[    8.795163] omnibook: Testing feature dock at address f86be740
[    8.795166] omnibook: Testing feature dump at address f86be780
[    8.795168] omnibook: Testing feature fan at address f86be7c0
[    8.795171] omnibook: Begin table match of fan feature.
[    8.795173] omnibook: Attempting backend ec init.
[    8.795176] omnibook: Returning table entry nr 0.
[    8.795178] omnibook: Match succeeded: continuing with fan.
[    8.795182] omnibook: Testing feature fan_policy at address f86be800
[    8.795184] omnibook: Begin table match of fan_policy feature.
[    8.795187] omnibook: Attempting backend ec init.
[    8.795189] omnibook: Returning table entry nr 0.
[    8.795191] omnibook: Match succeeded: continuing with fan_policy.
[    8.795195] omnibook: Testing feature hotkeys at address f86be840
[    8.795197] omnibook: Begin table match of hotkeys feature.
[    8.795200] omnibook: Attempting backend i8042 init.
[    8.795202] omnibook: Returning table entry nr 0.
[    8.795204] omnibook: Match succeeded: continuing with hotkeys.
[    8.795207] omnibook: Enabling all hotkeys.
[    8.799296] omnibook: Testing feature dmi at address f86be880
[    8.799300] omnibook: dmi feature has no backend table, io_op not initialized.
[    8.799304] omnibook: Testing feature version at address f86be8c0
[    8.799307] omnibook: version feature has no backend table, io_op not initialized.
[    8.799311] omnibook: Testing feature lcd at address f86be900
[    8.799314] omnibook: Begin table match of lcd feature.
[    8.799317] omnibook: Attempting backend ec init.
[    8.799319] omnibook: Returning table entry nr 2.
[    8.799322] omnibook: Match succeeded: continuing with lcd.
[    8.799326] omnibook: Testing feature muteled at address f86be940
[    8.799329] omnibook: Testing feature key_polling at address f86be980
[    8.799332] omnibook: Testing feature temperature at address f86be9c0
[    8.799334] omnibook: Begin table match of temperature feature.
[    8.799337] omnibook: Attempting backend ec init.
[    8.799339] omnibook: Returning table entry nr 0.
[    8.799341] omnibook: Match succeeded: continuing with temperature.
[    8.799347] omnibook: Testing feature touchpad at address f86bea00
[    8.799350] omnibook: Begin table match of touchpad feature.
[    8.799352] omnibook: Attempting backend i8042 init.
[    8.799355] omnibook: Returning table entry nr 0.
[    8.799357] omnibook: Match succeeded: continuing with touchpad.
[    8.799361] omnibook: Testing feature wifi at address f86bea40
[    8.799363] omnibook: Testing feature throttling at address f86bea80
[    8.799366] omnibook: Enabled features: ac battery blank display fan fan_policy hotkeys dmi version lcd temperature touchpad.

No comments:

Post a Comment