You are not logged in.

#1 2009-04-29 17:40:35

Registered: 2009-04-29
Posts: 5

Macbook 1,1 cooling (fan control) [KINDA SOLVED]

Hi, im new to arch (but not to linux, been in debian before) and im having some trouble with cooling.

If done a billion searches and saw lots of threads,, but i found no working solution to automated fan control, right now im working with 3500 min fan speed fixed and fan1_manual to 0, but it never changes fan speed.

I found 2 possible solutions, one its the cmp-daemon in AUR, which i installed, and when i try to start it with

# /etc/rc.d/cmp-daemon start

it says

:: Starting cmp-daemon                                                                      [BUSY] 
daemon is already running or applesmc not loaded, try:  modprobe applesmc -v                [FAIL]

Well, i can assure that there is no cmp-daemon program running, killall cmp-daemon returns No such process, and applesmc its loaded:

# lsmod | grep applesmc
applesmc               21956  0 
led_class               3384  1 applesmc
input_polldev           3100  1 applesmc

also im setting fan speed manually to not fry my laptop, so setting fans and sensors work.

The other solution from the Macbook Arch wiki its a link to where sb posted a script which could work, but the problem its that even though i registered to download it, it says i have not permissions (even for posting). So if anyone has the smcfancontrol.0.2.tar.gz and could upload it anywhere i would be thankful.

If there is any other solution im not aware of, please could you point it for me?

Thank you and hi to everyone smile

Last edited by Joakin (2009-04-30 00:39:41)


#2 2009-04-30 00:38:49

Registered: 2009-04-29
Posts: 5

Re: Macbook 1,1 cooling (fan control) [KINDA SOLVED]

Well after finding nothing anywhere, i decided to start touching the code of the cmp-daemon downloading it from instead of installing it from yaourt.

Finally i made it work with some tweaks (this is what i did to make it work with my Macbook 1,1):

1. Read README for manual installation

2. Open cmp-daemon.c and:

2.1 Find the line "strcmp(buffer,"model name : Intel Core 2 Duo..." and change the string in the strcmp with the output of:

cat /proc/cpuinfo | grep "model name"

2.2 Erase all reference to whatsoever function call containing fan_2
(i think i erased the calls to 'write_fan_2_manual' and 'write_fan_2_speed' only, but i dont remember if im missing something)
This is because Macbook 1,1 only has 1 fan, so there is no second fan to control.

2.3 Find the 2 lines that contain this piece of code:


This is the formula used to get the fan speed depending on the temperature.
To the programmer of this program it gave the values:
50ºC -> 1920
60ºC -> 3520
70ºC -> 5120

I tried the program with that values, and i find them very low, so im using other function that is


with this one u get:
50ºC -> 4000
60ºC -> 5000
70ºC -> 6000

which i think its more appropiate, it keeps the macbook warm more or less like in osx leopard. There you can use the formula u think its best, right now i used this one because i think that its a good one, but i have no fu**in idea of how it should be. Maybe what im using will eat up my battery really fast, i have to try it.

2.4 Change this 2 lines:

#define RD_CPU_1_TEMP "/sys/devices/platform/coretemp.0/temp1_input"
#define RD_CPU_2_TEMP "/sys/devices/platform/coretemp.1/temp1_input"

per this other ones:

#define RD_CPU_1_TEMP "/sys/devices/platform/applesmc.768/temp2_input"
#define RD_CPU_2_TEMP "/sys/devices/platform/applesmc.768/temp3_input"

I made this because i dont have the temp1_input file inside coretemp.* folders. Since i dont know what the f**k are the temp outputs from applesmc, i just used temp2 and 3 to read temperatures to graduate fans, because they are the highest. Again, i have no fu**in idea of how it should be, if you know something more than me please let me know.

3. Compile with gcc cmp-daemon.c -o cmp-daemon

4. Try it with ./cmp-daemon
Right now it should change your fan speed, its running in background. Though, each 3 minutes cmp-daemon was ignoring everything and returning to min fan speed. To fix that i had to set the fan1_min to 2000 and fan1_max to 6000 like in the C code, then it worked. Dont know why tongue, its just something i tried.

5. Follow instructions on README file to manual install. Probably using pkgbuild with the modified source code its a better idea, i did it README-mode and its working, so i did not try anything else.
(One more note, cmp-daemon script its refering to cmp-daemon.init, just ' mv cmp-daemon.init /usr/sbin/cmp-daemon ' should doit, and i dont know if its necessary, but i 'chmod 755 /usr/sbin/cmp-daemon' chmoded the script just in case it needed permissions)

Well i think thats all, any improving to this method, help, or comments would be appreciated. I hope it helps someone else.



Board footer

Powered by FluxBB