On Wed, Dec 19, 2007 at 10:22:35AM -0800, Juerg Haefliger wrote: > For the future, please keep the lm-sensors list in the loop so that > others can profit from the information. Oops, sorry about that. > Mode 2) This mode is like mode 1) except that the fan will turn off if > the associated temp goes below the auto_point1_temp_hyst value. I > believe this is what you want and this is what I couldn't get to work > :-) Anyways, please give it a try. To set the chip up in this mode, do > this: > echo <MIN_TEMP> > XXX_auto_point1_temp_hyst > echo <LOW_TEMP> > XXX_auto_point1_temp > echo <MAX_TEMP> > XXX_auto_point2_temp > echo <MIN_PWM> > XXX_auto_point1_pwm > echo 0 > XXX_auto_pwm_min > > After you set the chip up, please run 'grep "" > /sys/class/hwmon/hwmon*/device/*' and post the output to the list. Sure, here are my results: # echo 47000 > zone3_auto_point1_temp_hyst # echo 51000 > zone3_auto_point1_temp # echo 77666 > zone3_auto_point2_temp # echo 85 > pwm1_auto_point1_pwm # echo 0 > pwm1_auto_pwm_min # grep '' * cpu0_vid:1550 fan1_alarm:0 fan1_input:0 fan1_min:0 fan1_type:2 fan2_alarm:0 fan2_input:0 fan2_min:0 fan2_type:2 fan4_alarm:0 fan4_input:0 fan4_min:0 fan4_type:2 in0_alarm:1 in0_input:0 in0_max:6641 in0_min:0 in1_alarm:0 in1_input:1099 in1_max:1277 in1_min:1043 in2_alarm:0 in2_input:3274 in2_max:3472 in2_min:3128 in3_alarm:0 in3_input:4980 in3_max:5260 in3_min:4740 in4_alarm:0 in4_input:11801 in4_max:12625 in4_min:11375 in5_alarm:0 in5_input:3266 in5_max:3472 in5_min:3128 in6_alarm:0 in6_input:2959 in6_max:3145 in6_min:2853 name:dme1737 pwm1:85 pwm1_auto_channels_zone:4 pwm1_auto_point1_pwm:85 pwm1_auto_point2_pwm:255 pwm1_auto_pwm_min:85 pwm1_enable:2 pwm1_freq:25000 pwm1_ramp_rate:0 pwm2:255 pwm2_auto_channels_zone:2 pwm2_auto_point1_pwm:128 pwm2_auto_point2_pwm:255 pwm2_auto_pwm_min:128 pwm2_enable:0 pwm2_freq:25000 pwm2_ramp_rate:0 pwm3:255 pwm3_auto_channels_zone:4 pwm3_auto_point1_pwm:128 pwm3_auto_point2_pwm:255 pwm3_auto_pwm_min:128 pwm3_enable:0 pwm3_freq:25000 pwm3_ramp_rate:0 temp1_alarm:1 temp1_fault:0 temp1_input:-128000 temp1_max:127000 temp1_min:-127000 temp1_offset:0 temp2_alarm:0 temp2_fault:0 temp2_input:33875 temp2_max:50000 temp2_min:-127000 temp2_offset:0 temp3_alarm:0 temp3_fault:0 temp3_input:26187 temp3_max:60000 temp3_min:-127000 temp3_offset:0 grep: uevent: Permission denied vrm:24 zone1_auto_channels_temp:1 zone1_auto_point1_temp:90000 zone1_auto_point1_temp_hyst:86000 zone1_auto_point2_temp:122000 zone1_auto_point3_temp:100000 zone2_auto_channels_temp:2 zone2_auto_point1_temp:90000 zone2_auto_point1_temp_hyst:90000 zone2_auto_point2_temp:122000 zone2_auto_point3_temp:100000 zone3_auto_channels_temp:4 zone3_auto_point1_temp:51000 zone3_auto_point1_temp_hyst:47000 zone3_auto_point2_temp:77666 zone3_auto_point3_temp:69000 pwm1_auto_pwm_min just refuses to go to zero... After a quick look at the code, my guess would be that the asus chip ignores writes to the OFF1-OFF3 bits in the PWM ramp rate register and always returns 1 when we read them. I have not instrumented anything to confirm that, though. I did check that writing a large value into pwm1_ramp_rate does force it to get set to 206 (largest supported value), so at least the lower bits of that register appear to work as expected... Oh, and I just found another small issue. This one is in the driver. # echo 0 > fan1_min saloon kernel: divide error: 0000 [1] I guess the divide error is in the FAN_TO_REG macro... Cheers, -- Michel Lespinasse