Skip to content
forked from daringer/asus-fan

Kernel module to get/set (both) fan speed(s) on ASUS Zenbooks

License

Notifications You must be signed in to change notification settings

jamesan/asus-fan

 
 

Repository files navigation

asus-fan

ASUS (Zenbook) fan(s) control and monitor kernel module.

Compatibilty

The following Notebooks should be supported - be aware that it's still not in production state

Single Fan Two Fans (NVIDIA)
UX21E UX32VD
UX31E UX42VS
UX21A UX52VS
UX31A U500VZ
UX32A NX500
UX301LA UX32LN
UX302LA UX303LB
N551JK
N56JN

Quickstart

  • Build - just run make inside the directory
  • Install - run sudo make install inside the directory
  • Load - simply as usual:
modprobe asus_fan
  • Interface - the fan(s) is/are exposed as hwmon, thus available in:
/sys/class/hwmon/hwmonX
  • Monitor Fan speed -simply use xsensors for graphical, or sensors for console monitoring

- **Set Fan Speed** - write anything from 0 to 255 to ```pwmX```, like:
```bash
echo 123 > ${fpath}/pwmX   # set to 123
echo 0 > ${fpath}/pwmX     # switch fan off (DANGEROUS!)
echo 255 > ${fpath}/pwmX   # set to max speed
  • ATTENTION - the fan is now in manual mode - do not burn your machine!
  • Set Auto-Fan(s): to reactivate the automatic fan control write "0" to pwmX_enable:
echo 0 > ${fpath}/pwmX_enable   # reset to auto-mode (always for all fans)
  • Max fan speed There is an additional file for controling the maximum fan speed. It's r/w and controls both, automatic mode and manual mode maximum speed. Value range: 0-255 reset value:256

Short Comparison To Other Similar Projects

  • asus-fancontrol userland application, acpi_call based, limited number of (offical/tested) compatible zenbook models, no (standard) interface exposed, no support for second fan
  • zenbook userland appliaction, acpi_call based, only UX32VD supported, no (standard) interface exposed, no support for second fan
  • asusfan kernelspace driver, model support: A8J, A8JS, N50V[cn], no (standard) interface exposed, interface based on module parameters, replaces automatic control with own realization, no support for second fan
  • asusfan (original) kernelspace driver, Model support A8J and A8JS, no (standard) interface, automatic fan speed adjustment, no support for second fan
  • asusfanctrld userland (bash) application, acpi_call based, only UX32VD, second fan support?, no (standard) interface exposed
  • asus_ux32v_fan_control is actually a fork of this project undergone a renaming (hmm), very old state, no hwmon (interface) support, thermal_device interface, most likely as buggy as this project was one year ago
  • asus_wmi realization as a part of the exisiting asus_wmi module, which is maybe the only way to submit it for the upstream kernel, nevertheless support for the second fan is not available through wmi. Sister project, closely related to the one shown here.

So this project distinguishes itself from the others by providing a hwmon standard state-of-art interface with a wide variety of supported zenbook models realized as a kernelspace driver. Guess you found the right one ;)

Tools / Configs / Simple Fancontrol Script

  • fancontrol - There is a script called "fancontrol" that can be configured according to temperature source, fans to control, minimum and maximum temperature... thats done by "pwmconfig" Nevertheless that script did it worse for me than the original controller - thus you can tell it to stop the fan completely...

  • thermal_daemon config file(s) may be found in misc/thermald/ (experimental, not fully finished).

  • Workaround (Fix?) for changing hwmon IDs after reboot --- Create control and convenience symlinks using: misc/create_symlinks.sh

TODOs:

  • do a code review and clean it up
  • check with more models
  • add an included fan controller
  • setting 'fanX_max' to 256 in order to reset all values to default, seems not a standard behavior --- where to put this functionality?
  • submit an upstream patch - any howtos?? wtf, write acpi-devel kernel-mailinglist ??

THANKS TO:

  • To Felipe Contreras felipec for providing the initial version (https://gist.github.com/felipec/6169047)
  • To Markus Meissner daringer for the asus_fan version using the "thermal_device" interface
  • To Bernd Kast KastB for the port using the hwmon interface
  • To Tharre for the never ending stream of useful hints and information
  • Various testers and users providing valuable information and thus increasing the list of compatible devices

About

Kernel module to get/set (both) fan speed(s) on ASUS Zenbooks

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 52.2%
  • Shell 23.6%
  • Perl 17.3%
  • Python 6.5%
  • Makefile 0.4%