A downloadable tool for Linux

ExtremeCooling4Linux is a Gtk3 program to enable extreme cooling fan mode on Linux.

Extreme cooling is a special fan mode supported in Lenovo Legion laptops. This mode can increase the cooling performance of your laptop and reduces its temperature. However, this feature is only supported by Lenovo through its Windows program Lenovo Sense Nerve.

ExtremeCooling4Linux has been created to enable and support this special feature on Linux. Currently is only tested in Lenovo Legion Y520, but it should be work in other models like Lenovo Legion Y720. 

This program does not have warranty and only use at your own risk. Enable extreme cooling only in short periods of time as it can reduce the lifespan of your fans and do not use in laptops without extreme cooling support from Lenovo.

ExtremeCooling4Linux is published under GPLv3. You can download its source code from gitlab


StatusReleased
CategoryTool
PlatformsLinux
Rating
Rated 5.0 out of 5 stars
(3 total ratings)
Authorodintdh
Tagsappimage, DRM Free, fan, lenovo, Open Source
Code licenseGNU General Public License v3.0 (GPL)
Average sessionA few seconds
LanguagesEnglish, Spanish; Castilian

Download

Download
ExtremeCooling4Linux-v0.3-x86_64.AppImage 46 MB
Download
extremecooling4linux_0.3-1_all.deb 195 kB
Download
indicator-extremecooling4linux-0.1.deb 12 kB
Download
ExtremeCooling4Linux-v0.2-x86_64.AppImage 46 MB
Download
ExtremeCooling4Linux-v0.1.3-x86_64.AppImage 41 MB

Install instructions

Before running the AppImage, it is necessary to make it executable. You can make it executable using your file manager or from the command line with chmod u+x ExtremeCooling4Linux-v0.3-x86_64.AppImage. ExtremeCooling4Linux AppImage needs root privileges, so you have to execute the AppImage with sudo ExtremeCooling4Linux-v0.3-x86_64.AppImage

If you use an Ubuntu or Debian based distribution you can install ExtremeCooling4Linux with the extremecooling4linux_0.3-1_all.deb package using dpkg or GDebi. This package adds an entry in your desktop menu and the ec4Linux command for your command line. On the other hand if you want to execute ExtremeCooling4Linux from  a desktop panel you can install indicator-extremecooling4linux-0.1.deb package.

Comments

Log in with itch.io to leave a comment.

(1 edit)

Running the v0.03 AppImage gave me this problem in Nobara. Cannot toggle the fan switch but everything else seems to work as intended, as I can click the different tabs and close the program as normal. Is there a way to fix this?

Work as intended. Thks and nice job! Lenovo Y720 

this dosen't work on debian 11, any alternatives or suggestions to make it work?

Works really well, I'm curious where you got the documentation for the embedded controller. I'd like to get the LED's working on my keyboard again.

NOT WORKING!! HELP

ExtremeCooling4Linux as gui program

INFO:extremecooling4linux:running ExtremeCooling4Linux as PyInstaller bundle

INFO:extremecooling4linux:base_folder /tmp/.mount_ExtremWMCgTB/usr/bin

INFO:extremecooling4linux:/tmp/.mount_ExtremWMCgTB/usr/bin/usr/share/locale/

INFO:extremecooling4linux:running ExtremeCooling4Linux as gui program

INFO:extremecooling4linux:/root/.config/extremecooling4linux

INFO:extremecooling4linux:/home/wellington/Downloads

INFO:extremecooling4linux:starting program

INFO:extremecooling4linux:Root user detected

INFO:extremecooling4linux:base_folder /tmp/.mount_ExtremWMCgTB/usr/bin

Gtk-Message: 00:49:49.991: Failed to load module "canberra-gtk-module"

--- Logging error ---

Traceback (most recent call last):

  File "ec4Linux.py", line 505, in <module>

IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "logging/__init__.py", line 994, in emit

  File "logging/__init__.py", line 840, in format

  File "logging/__init__.py", line 577, in format

  File "logging/__init__.py", line 338, in getMessage

TypeError: not all arguments converted during string formatting

Call stack:

  File "ec4Linux.py", line 531, in <module>

  File "ec4Linux.py", line 487, in execute

  File "ec4Linux.py", line 478, in run_main_ui

  File "ec4Linux.py", line 440, in load_window

  File "ec4Linux.py", line 329, in load_window

  File "ec4Linux.py", line 210, in inicializate

  File "logging/__init__.py", line 1337, in error

  File "logging/__init__.py", line 1444, in _log

  File "logging/__init__.py", line 1454, in handle

  File "logging/__init__.py", line 1516, in callHandlers

  File "logging/__init__.py", line 865, in handle

  File "logging/__init__.py", line 1072, in emit

  File "logging/__init__.py", line 1000, in emit

Message: 'ioperm:'

Arguments: ('Operação não permitida',)

--- Logging error ---

Traceback (most recent call last):

  File "ec4Linux.py", line 505, in <module>

IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "logging/__init__.py", line 994, in emit

  File "logging/__init__.py", line 840, in format

  File "logging/__init__.py", line 577, in format

  File "logging/__init__.py", line 338, in getMessage

TypeError: not all arguments converted during string formatting

Call stack:

  File "ec4Linux.py", line 531, in <module>

  File "ec4Linux.py", line 487, in execute

  File "ec4Linux.py", line 478, in run_main_ui

  File "ec4Linux.py", line 440, in load_window

  File "ec4Linux.py", line 329, in load_window

  File "ec4Linux.py", line 210, in inicializate

  File "logging/__init__.py", line 1337, in error

  File "logging/__init__.py", line 1444, in _log

  File "logging/__init__.py", line 1454, in handle

  File "logging/__init__.py", line 1516, in callHandlers

  File "logging/__init__.py", line 865, in handle

  File "logging/__init__.py", line 1000, in emit

Message: 'ioperm:'

Arguments: ('Operação não permitida',)

--- Logging error ---

Traceback (most recent call last):

  File "ec4Linux.py", line 505, in <module>

IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "logging/__init__.py", line 994, in emit

  File "logging/__init__.py", line 840, in format

  File "logging/__init__.py", line 577, in format

  File "logging/__init__.py", line 338, in getMessage

TypeError: not all arguments converted during string formatting

Call stack:

  File "ec4Linux.py", line 531, in <module>

  File "ec4Linux.py", line 487, in execute

  File "ec4Linux.py", line 478, in run_main_ui

  File "ec4Linux.py", line 440, in load_window

  File "ec4Linux.py", line 329, in load_window

  File "ec4Linux.py", line 210, in inicializate

  File "logging/__init__.py", line 1337, in error

  File "logging/__init__.py", line 1444, in _log

  File "logging/__init__.py", line 1454, in handle

  File "logging/__init__.py", line 1516, in callHandlers

  File "logging/__init__.py", line 865, in handle

  File "logging/__init__.py", line 1072, in emit

  File "logging/__init__.py", line 1000, in emit

Message: 'ioperm:'

Arguments: ('Operação não permitida',)

--- Logging error ---

Traceback (most recent call last):

  File "ec4Linux.py", line 505, in <module>

IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "logging/__init__.py", line 994, in emit

  File "logging/__init__.py", line 840, in format

  File "logging/__init__.py", line 577, in format

  File "logging/__init__.py", line 338, in getMessage

TypeError: not all arguments converted during string formatting

Call stack:

  File "ec4Linux.py", line 531, in <module>

  File "ec4Linux.py", line 487, in execute

  File "ec4Linux.py", line 478, in run_main_ui

  File "ec4Linux.py", line 440, in load_window

  File "ec4Linux.py", line 329, in load_window

  File "ec4Linux.py", line 210, in inicializate

  File "logging/__init__.py", line 1337, in error

  File "logging/__init__.py", line 1444, in _log

  File "logging/__init__.py", line 1454, in handle

  File "logging/__init__.py", line 1516, in callHandlers

  File "logging/__init__.py", line 865, in handle

  File "logging/__init__.py", line 1000, in emit

Message: 'ioperm:'

Arguments: ('Operação não permitida',)

INFO:extremecooling4linux:trying to detect extreme cooling support

INFO:extremecooling4linux:system_manufacturer LENOVO

INFO:extremecooling4linux:product_name 81CQ

INFO:extremecooling4linux:product_version Lenovo Y720-15IKB

INFO:extremecooling4linux:chassis_type 10

INFO:extremecooling4linux:ec_wait

Segmentation fault (core dumped)

I have the same problem :c, any solution?

i had use appimage and ec4Linux.py    is't work ! but how to change fan speed? can i change some args in py file to change speed? 

Hi 

How do i add root privileges?

This sudo command won't work for me

(pop os 21.04)

please help

You do not need root with the deb package. Try the deb package instead of Appimage

(1 edit)

I've tried it

Theorerically works

Practically i can check extreme cooling option but my fan speed is the same

(Notebook lenovo y700 15isk 80NV on windows extreme cooling from lenovo nerve center works)

Open an issue in gitlab with the logs of the execution of the program.

Deleted 2 years ago

Wow!

I was searching for something like lenovo nerve center and found this.

Thank you!

Understood.  Thank you for your time and for creating this project!  I will use the appimage and await the day that my distro of choice is upgraded to the 20.04 line.

replied to your older comment below, see if it helps.

(1 edit)

Hello.

First of all "GOOD JOB"!!!

I have a Lenovo Y700, with Ubuntu 20.04.1 LTS.

I was able to install it, but enabling "Extreme Cooling", nothing happens.

I think that it should speed up the fan speed in a similar way than the Lenono Windows Nerve app. does, right?

I am also adding the log that appears when it is executed in cmd line.


INFO:extremecooling4linux:is_extreme_cooling_activate value register 0x40
INFO:extremecooling4linux:on_extreme_cooling_switch_activate
INFO:extremecooling4linux:activate
INFO:extremecooling4linux:activate_extreme_cooling
INFO:extremecooling4linux:trying to detect extreme cooling support
INFO:extremecooling4linux:system_manufacturer LENOVO
INFO:extremecooling4linux:product_name 80NV
INFO:extremecooling4linux:product_version Lenovo ideapad Y700-15ISK
INFO:extremecooling4linux:chassis_type 10
INFO:extremecooling4linux:ec_wait
INFO:extremecooling4linux:ec_wait correct
INFO:extremecooling4linux:ec_wait
INFO:extremecooling4linux:ec_wait correct
INFO:extremecooling4linux:ec_wait
INFO:extremecooling4linux:ec_wait correct
INFO:extremecooling4linux:is_extreme_cooling_activate value register 0x40 
INFO:extremecooling4linux:Extreme cooling could be supported, current value in extreme cooling register is 0x40 


Please let me know if I can add some extra info.

Hello

I can't find any thing wrong in your traces. On the other hand check if you have security boot disabled, and try to use the AppImage version with sudo or root.

I am running into an issue installing extremecooling4linux_0.3-1_all.deb.

gdebi throws a dependency error stating:  Error: Dependency is not satisfiable: python3-portio

I have installed portio via pip in both python 2 and 3 with no change.

I'm sure I'm missing something obvious...Any assistance would be appreciated.

Hello

to install a deb package it needs to have its dependencies in the repositories definid in the /etc/apt/sources.list file or inside /etc/apt/sources.list.d/ directory, so Gdebi can't search dependencies from pip.

Ubuntu 20.04 has python3-portio package in the universe repository. Debian Buster also has python3-portio in its repositories. If you don't have pytho3-portio I guess that you are using a distribution older than Ubuntu 20.04 or Debian Buster. If you can't update your distribution you always can use the ExtremeCooling4Linux AppImage version that is packaged with all its dependencies.

(1 edit)

ran into same dep error, do `pip install portio`. then simply extract the deb package with whatever (i use debtap) and run the executable with python3 (python2 doesn't work obviously). 

laptop : y520

system : arch

further contact on twitter (@kkYrusobad) if u encounter more hiccups.

edit : ran into problem while starting EC, `pip` installs the module for current $USER. so run `pip install portio` as root because EC is going to ask for superuser permissions once its running and portio must be installed for user `root`. finally, working as a charm.

(2 edits)

The .deb version does not work for me anymore, it worked fine a couple of days ago but now it does not want to start. I even reinstalled ubuntu 20.10 and it's still not working. Any way to solve this?

And this is the message that pops up:

(1 edit)

Hello

I use Ubuntu Mate 20.10 and I have reinstalled the deb version but it works properly, so I can't reproduce your problem.

Could you execute ExtremeCooling4Linux from the terminal with the command ec4Linux and show me the traces?

On the other hand if you have enabled Secure boot recently, disable it because it can interfere in the correct execution of the program.

Secure boot was the problem, thank you for your help!

Sorry but it seems that does not work properly in my machine. When I run the .appimage it appears that I have to run with sudo, but when I do it,  gives me a core dump. Do you have any idea how to solve this?

The following message is shown:

--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "/usr/bin/ec4Linux.py", line 508, in <module>
    app.ec.inicializate()
  File "/usr/bin/ec4Linux.py", line 210, in inicializate
    logger.error('ioperm:', os.strerror(status))
Message: 'ioperm:'
Arguments: ('Operation not permitted',)

I have a similar reported issue in gitlab. Check the issue because can be the same problem .

Thank you. Now it works fine :)

Your work is great! Can you creat a hotkey setup for cooling?

Thank you so much for this. This is absolutely a godsend for me.

Another really unique and beneficial utility for the Linux community!

It's great that it's GTK3 compliant off the bat so theming is native.

Also my love for the minimal and portable Appimage format.

Thanks for your comment and support!!!