Note
- These scripts require the
acpi_callkernel module. - Since the scripts cannot function without root privileges, I've included
sudoin the shebang line to save having to type it every time. If you don't like this, you can simply remove it.
The remove-dust.sh script turns on the laptop embedded controller's built-in dust removal functionality, which basically involves running the fan at max speed for a few seconds followed by a brief pause. This process is repeated for about two minutes. It is useful for lowering the laptop's temperature as well as removing dust.
To cancel the process before the two minute mark, simply run remove-dust-cancel.sh.
The official Lenovo Power Management Driver also sometimes calls VPCW with arguments 0x1 0x2b. I haven't figured out what this does yet, but it doesn't seem to affect the fan control functionality.
This has been tested Lenovo ThinkBook 16 G7+ IAH 21TL. Whether it works on other machines is currently unknown, but given the similarity of ACPI implementations on Lenovo laptops (non-ThinkPad ones?), I wouldn't be surprised if it worked on at least a few more models (with or without tweaking).
- https://github.com/BartoszCichecki/LenovoLegionToolkit (Re-implementation of Lenovo Vantage on Windows)
- https://gist.github.com/w568w/b2fc5f9d1f4dff13efe751abec27b396 (ACPI reverse engineering)
- https://vorpal.se/posts/2022/aug/21/reverse-engineering-acpi-functionality-on-a-toshiba-z830-ultrabook/ (ACPI reverse engineering)
- https://wiki.archlinux.org/title/DSDT (Disassembling ACPI tables)
- https://github.com/jiarandiana0307/Lenovo-Fan-Control (Re-implementation of the functionality on Windows)
- https://www.cnblogs.com/kiradiana/p/18518728 (Blog post about 5)