Jump to content

Is there any way to monitor/control Ideapad fans? Some ideas on how it could be done


kitestramuort
 Share

1 post in this topic

Recommended Posts

Some Ideapads make great Hackitoshes with greately compatible hardware and, like my U310, even similar looks to a Macbook. One thing that, oddly, is lacking any support is reading and managing fan speeds (at least I couldn't find anything). Most Ideapads have very limited (or none at all) bios configuration entries to manage power saving and fan behaviour, and the default behaviour is most of the times far from optimal. In my case, I have a pure ssd system that runs very cool and still the cpu fan is spinning most of the time, even when the package temperature is in the lower 30C. 

I had a look at how the Ideapad fan is managed in linux. They use a sysfs entry to set the "fan mode" in the EC. There are four available modes, the same the can be set in the Windows power management tool: 0 = Super Silent Mode, 1 = Standard Mode, 2 = Dust Cleaning, 4 = Efficient Thermal Dissipation Mode. The sysfs file is created by this module: https://github.com/torvalds/linux/bl...eapad-laptop.c. From what I understand, it uses the the VPCR and VPCW methods of the device VPC0 to read and write the fan mode. I have these methods in my DSDT (https://dl.dropboxusercontent.com/u/501682/dsdt.dsl), where I can also see one CFAN and one VFAN entries in the EC device. I don't know how to go about them, as I am not a developer, but I think that a simple script to shift between the modes shouldn't be too difficult to write for someone who knows what they're doing. The interesting thing here is that *all* Ideapads implement the same methods, so one single script/kext/dsdt patch will likely work on all models.

Another way to manipulate the fan speed could be to replicate what RehabMan does in his DSDT ProBook patches: trick the system into thinking that the laptop is arbitrarly cool. From what I have read the fan control depends on \_SB.PCI0.LPCB.EC0.RTMP which holds the temperature of the CPU package. The default behaviour is to start the fan if the temperature reaches 35°C and stop after the temperature is lower than 31°C :/

 

My main question is whether somebody has already done some work on this or is willing to pick it up :-D

Link to comment
Share on other sites

 Share

×
×
  • Create New...