In 2.6.20.9 I can change trippoints (example): echo "105:100:100:78:70:40:30" > /proc/acpi/thermal_zone/TZ0/trip_points echo 10 > /proc/acpi/thermal_zone/TZ0/polling_frequency Then I got: cat /proc/acpi/thermal_zone/TZ0/* <setting not supported> cooling mode: active polling frequency: 10 seconds state: active[2] temperature: 45 C critical (S5): 105 C active[0]: 78 C: devices=0xdf415a40 active[1]: 70 C: devices=0xdf4159dc active[2]: 40 C: devices=0xdf41598c active[3]: 30 C: devices=0xdf41593c cat /proc/acpi/fan/*/* status: off status: off status: on status: on And fan turns on. In 2.6.22-rc1-mm1: echo "105:100:100:78:70:40:30" > /proc/acpi/thermal_zone/TZ0/trip_points bash: echo: write error: BĹ‚
*** This bug has been marked as a duplicate of 8496 ***
*** Bug 8496 has been marked as a duplicate of this bug. ***
original: active[2]: 60 C: devices=0xc182798c active[3]: 50 C: devices=0xc182793c modified: active[2]: 40 C: devices=0xdf41598c active[3]: 30 C: devices=0xdf41593c So at 45C, you want your fan to be running at 2nd speed rather than off as the OEM designed the platform? You enable polling mode as a workaround for the fact that the first trip point is not actually going to fire until 50*C? What happens if you purposely heat up the system past the actual 50*C trip point? Do you find that your manual trip-points are still intact, or does the contents of trip_points change? Can you turn on the fan this way? echo 0 > /proc/acpi/fan/.../state where "..." corresponds to the file for the lowest speed, and when that is on, you can then try the file corresponding to the 2nd speed.
"So at 45C, you want your fan to be running at 2nd speed rather than off as the OEM designed the platform?" Yes, it is a example. In my hp nx6310 only I want change critical trip point, but my friend need change first trippoint from 30*C to (for example) 50, because fan turns on too early (hp nc6220). Unfortunately she doesn't want test latest -mm kernel, but propably she has similar problem. In this case I want change turn on fan to 2nd speed at 45*C. Default is 50 for 1st speed and 60*C for 2nd speed. When I don't change trippoints (defaults), fan works (I don't need use polling mode). When I heat the system (eg. command: "openssl speed") and don't change trippoints fan turns on at 50*C (in 2.6.20.9 and 2.6.22-rc1-mm1) it works fine. 2.6.20.9: I can change trippoints (as in description) and fan turns on earlier. In 2.6.22-rc1-mm1 I cannot. echo 0 > /proc/acpi/fan/xxx/state "0" turns on "3" turns off Works xxx: C30C (100% speed of fan), C30D (3rd speed - 75%), C30E (2nd speed - 60%), C30F (1st speed - 40%). In my case this problem isn't big, in all probability CPU shouldn't rise over 100*C. But many hp notebooks (for example my friend) will have problem with read-only trip points. PS Sorry for my English and duplicate bug (first time I use bugzilla).
"You enable polling mode as a workaround for the fact that the first trip point is not actually going to fire until 50*C?" "polling mode" it means "colling_policy" or "colling_mode" file? ls /proc/acpi/thermal_zone/TZ0/ cooling_mode polling_frequency state temperature trip_points cat /proc/acpi/thermal_zone/TZ0/cooling_mode <setting not supported> cooling mode: active
> echo 0 > /proc/acpi/fan/xxx/state > "0" turns on > "3" turns off > > Works Thanks for confirming that you can control your fam-speed at will without over-riding the trip points. When you or your friend use 2.6.21 and manually over-ridin the trip points. What happens when the temperature changes to cross one of the system-provided trip points. Does the trip-point file stay in its over-ride form, or does the system change it out from under you?
kernel 2.6.21, config, dmesg: http://www.unixy.pl/maciek/download/kernel/2.6.21/ daemon acpid disabled[1], defaults trip points ----- scenario: CPU: idle rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/thermal_zone/TZ0/* <setting not supported> cooling mode: active <polling disabled> state: ok temperature: 45 C critical (S5): 256 C active[0]: 78 C: devices=0xdf790a40 active[1]: 70 C: devices=0xdf7909dc active[2]: 60 C: devices=0xdf79098c active[3]: 50 C: devices=0xdf79093c rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/fan/*/state status: off status: off status: off status: off ----- scenario: run command: "openssl speed" rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/thermal_zone/TZ0/* <setting not supported> cooling mode: active <polling disabled> state: active[3] temperature: 50 C critical (S5): 256 C active[0]: 78 C: devices=0xdf790a40 active[1]: 70 C: devices=0xdf7909dc active[2]: 60 C: devices=0xdf79098c active[3]: 45 C: devices=0xdf79093c rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/fan/*/state status: off status: off status: off status: on -> NOTE: active[3] change from 50*C to 45*C rutek:/home/maciek# cat /proc/acpi/event thermal_zone TZ0 00000081 00000000 thermal_zone TZ0 00000081 00000000 ----- scenario: run command "openssl speed" longer rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/thermal_zone/TZ0/* <setting not supported> cooling mode: active <polling disabled> state: active[2] temperature: 60 C critical (S5): 256 C active[0]: 78 C: devices=0xdf790a40 active[1]: 70 C: devices=0xdf7909dc active[2]: 55 C: devices=0xdf79098c active[3]: 45 C: devices=0xdf79093c rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/fan/*/state status: off status: off status: on status: on ->Note: active[3] change from 50 to 45 active[2] from 60 to 55 rutek:/home/maciek# cat /proc/acpi/event thermal_zone TZ0 00000081 00000000 thermal_zone TZ0 00000081 00000000 thermal_zone TZ0 00000081 00000000 ----- Scenario: return to CPU idle: rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/thermal_zone/TZ0/* <setting not supported> cooling mode: active <polling disabled> state: ok temperature: 45 C critical (S5): 256 C active[0]: 78 C: devices=0xdf790a40 active[1]: 70 C: devices=0xdf7909dc active[2]: 60 C: devices=0xdf79098c active[3]: 50 C: devices=0xdf79093c rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/fan/*/state status: off status: off status: off status: off =========================== Comments: [1] When acpid is enabled and I change trip points, any events from /proc/acpi/events change trip points to defaults (depends on actual temperature - like above). So I must add this files: file: /etc/acpi/events/thermal_zone #called when acpid receives thermal_zone event event=thermal_zone action=/etc/acpi/thermal_zone.sh ----- file: /etc/acpi/thermal_zone.sh #!/bin/sh echo "105:100:100:78:70:60:50" > /proc/acpi/thermal_zone/TZ0/trip_points echo 10 > /proc/acpi/thermal_zone/TZ0/polling_frequency Scenario: run acpid and "openssl speed": rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/thermal_zone/TZ0/* <setting not supported> cooling mode: active polling frequency: 10 seconds state: active[3] temperature: 50 C critical (S5): 105 C active[0]: 78 C: devices=0xdf790a40 active[1]: 70 C: devices=0xdf7909dc active[2]: 60 C: devices=0xdf79098c active[3]: 50 C: devices=0xdf79093c rutek:/home/maciek/kernel.org/2.6.21# cat //proc/acpi/fan/*/state status: off status: off status: off status: on
"Comments: [1] When acpid is enabled and I change trip points, any events from /proc/acpi/events " Should be: "any _thermal_ events"
Update: I was wrong, that not acpid change trippoints, but system did it: acpid stop, change trip points like below: rutek:/home/maciek# cat /proc/acpi/thermal_zone/TZ0/* <setting not supported> cooling mode: active polling frequency: 10 seconds state: ok temperature: 45 C critical (S5): 105 C active[0]: 78 C: devices=0xdf415a40 active[1]: 70 C: devices=0xdf4159dc active[2]: 60 C: devices=0xdf41598c active[3]: 50 C: devices=0xdf41593c When run openssl speed: rutek:/home/maciek# cat /proc/acpi/thermal_zone/TZ0/* <setting not supported> cooling mode: active polling frequency: 10 seconds state: active[3] temperature: 50 C critical (S5): 256 C active[0]: 78 C: devices=0xdf415a40 active[1]: 70 C: devices=0xdf4159dc active[2]: 60 C: devices=0xdf41598c active[3]: 45 C: devices=0xdf41593c critical (S5) change from user 105*c to system default 256*C
Thanks for testing. The results confirm that the ACPI BIOS will change the trip-points to implement hysteresis when it crosses the ACPI trip points. Yes, this will wipe out any modifications that the user has made to the OS copy of the trip points. Further, as the user no longer sees the ACPI trip-points, the user may not know when this is going to happen, and would thus have to continuously over-ride the OS trip points on every temperature change or trip-point event to make the over-ride effective. Finally, if the user does not enabling polling, the modified OS trip points have no effect at all except to deceive the user into thinking that they've implemented a change in policy - since the BIOS continues to work with the real ACPI trip points. For these reasons, the ability for the user to over-ride the OS copy of the read-only ACPI trip-points was a bug, and removing that ability was a bug-fix. You have confirmed that you can over-ride the state of the fan until the next ACPI trip point is reached -- and that is what you should do if you disagree with the policy implemented by the system vendor. If too loud, turn off/down the fan. If too warm, turn on/up the fan. Also, if the vendor (had) implemented _SCP (cooling_mode) that would give you a choice in cooling policies.