/coolero

This is a mirror of the official repo on gitlab. Please go there for reporting issues and feature requests. The Project has undergone a name and implementation change. Please check out CoolerControl for new developments.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

GPLv3 License Gitlab pipeline status GitLab Release (latest by SemVer) Discord Linux Python Contributor Covenant

Coolero

is a program to monitor and control your cooling devices.
It offers an easy-to-use user interface with various control features and also provides live thermal performance details.

It is a frontend and enhancement of liquidctl and hwmon with a focus on cooling device control under Linux.
Written in Python it uses PySide for the UI and Poetry for dependency management.

This project is currently in active development and slowly working it's way towards it's first major release.

Contents

[[TOC]]

Features

  • System Overview Graph - choose what to focus on and see the effects of your configuration changes live and over time.
  • Supports multiple devices and multiple versions of the same device.
  • Internal profile scheduling - create speed profiles based on CPU, GPU or other device temperature sensors that aren't natively supported by the devices themselves.
  • Last set profiles are saved and applied at startup.
  • Settings are re-applied after waking from sleep/hibernate.
  • A modern custom UI.
  • Supports most liquidctl supported devcies.
  • Supports usable hwmon (lm-sensors) supported devices.

Demo

Demo

Current Supported Devices

Note: Some devices are only partially supported or considered experimental

Name Notes
HWMon (lm-sensors) devices see doc
NZXT Kraken Z (Z53, Z63 or Z73) experimental LCD support see liquidctl
NZXT Kraken X (X53, X63 or X73)
NZXT Kraken X (X42, X52, X62 and X72)
NZXT Kraken X31, X41, X61
NZXT Kraken X40, X60 experimental see liquidctl
NZXT Kraken M22 lighting only device
NZXT HUE 2, HUE 2 Ambient lighting only device
NZXT Smart Device V2
NZXT H1 V2 experimental see liquidctl
NZXT RGB & Fan Controller
NZXT Smart Device
NZXT Grid+ V3
NZXT E500, E650, E850 partial see liquidctl
Aquacomputer D5 Next experimental see liquidctl
Aquacomputer Octo experimental see liquidctl
Aquacomputer Quadro experimental see liquidctl
Aquacomputer Farbwerk 360 experimental see liquidctl
Corsair Hydro GT/GTX H80i, H100i, H110i experimental see liquidctl
Corsair Hydro v2 H80i, H100i, H115i
Corsair Hydro Pro H100i, H115i, H150i pump speed is limited to 3 speeds and is set using duty % ranges
Corsair Hydro Platinum H100i, H100i SE, H115i pump speed is limited to 3 speeds and is set using duty % ranges
Corsair Hydro Pro XT H60i, H100i, H115i, H150i pump speed is limited to 3 speeds and is set using duty % ranges
Corsair iCUE Elite Capellix H100i, H115i, H150i experimental see liquidctl
Corsair Commander Pro
Corsair Commander Core experimental see liquidctl
Corsair Commander Core XT experimental see liquidctl
Corsair Obsidian 1000D
Corsair Lighting Node Core, Pro lighting only device
Corsair HX750i, HX850i, HX1000i, HX1200i
Corsair RM650i, RM750i, RM850i, RM1000i
EVGA CLC 120 (CL12), 240, 280, 360
Gigabyte RGB Fusion 2.0 lighting only device
ASUS Aura LED motherboards lighting only device, experimental see liquidctl

Your device isn't listed? See Adding Device Support

Installation

Installation is currently supported by AppImage, Flatpak, the AUR and from Source

AppImage

AppImageDownload
Use the above link or goto the Releases page and download a specific version.
The AppImage contains all the needed dependencies. Just make it executable and run it:

chmod +x Coolero-x86_64.AppImage
./Coolero-x86_64.AppImage

Note: on some systems you'll have to install 'fuse' to make appimages work
It's recommended to turn on Check for updates in Settings, which is disabled by default. Coolero will then ask if you want to update it automatically if a newer version is available.

Click for more info about AppImages

AppImage Website

For improved desktop integration:

Flatpak

You can checkout the Coolero page on Flathub

or install from the command line:

flatpak install org.coolero.Coolero

AUR

Use your installed AUR Helper, i.e.:

yay -S coolero

Source

Click to view

Requirements

  • Linux
  • Python 3.10
    • including the python3.10-dev package (may already be installed)

System Packages

  • Ubuntu:
    sudo apt install libusb-1.0-0 curl python3-virtualenv python3.10-venv python3.10-dev build-essential libgl1-mesa-dev
  • Fedora:
    sudo dnf install libusbx curl python3-virtualenv python3-devel mesa-libGL-devel && sudo dnf groupinstall "C Development Tools and Libraries"
  • More specifically:
    • LibUSB 1.0 (libusb-1.0, libusb-1.0-0, or libusbx from your system package manager)
    • curl
    • python3-virtualenv (or python3.10-virtualenv)
    • python3-venv (or python3.10-venv)
    • Packages needed to build Qt applications:
      • build-essential
      • libgl1-mesa-dev

Poetry

  • install:
    curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python3 -
  • run: poetry --version to make sure poetry works
  • if needed, add $HOME/.local/bin to your PATH to execute poetry easily:
    export PATH=$HOME/.local/bin:$PATH
  • if Python 3.10 is not your default python installation, then run the following in the project directory to give poetry access:
    poetry env use python3.10

Coolero Files

  • Clone the Repo:
    git clone git@gitlab.com:coolero/coolero.git
  • Install the dependencies from the newly created repo directory:
    poetry install
  • run it:
    poetry run coolero

Post-Install Steps

  • Coolero generally will detect supported devices and available capabilities automatically. It will also prompt you for additional steps if necessary. There are few cases where that may not happen, see the following steps.
  • If you have a liquidctl supported device, and you don't see your device. You can apply the udev rules manually to grant device access to your current user by running Coolero with the --add-udev-rules option. Restart you computer and your devices should show up. This can often happen with newly supported devices where udev rules were previously applied.
  • To see all available hwmon supported devices & controls it's recommended to run sensors-detect. See the [Hwmon How To section](#How to).

Usage Hints

  • Scroll or right-click on the system overview to zoom the time frame.
  • Clicking anywhere in the control graphs will apply the current settings. Changing any setting will apply it immediately.
  • Check the info and settings pages for some Quality of Life options.

HWMon Support

Hwmon support comes with features that are similar to programs like fancontrol and thinkfan. For more info checkout the HWMon wiki. By default, all detected and usable fan/pump controls are displayed. Changing Hwmon values requires running a coolero daemon 'coolerod' as a privileged user. This enables features like custom speed profiles, etc.

How To

  • Enable the Setting: "Hwmon Write Access"
  • Optionally enable "Hwmon Temps" to see all available and usable temp sensors
  • Recommended:
    • Install lm-sensors (lm_sensors) if not already installed. This is usually done through your distribution's package manager, i.e. apt, dnf, pacman.
      • run sudo sensors-detect at least once to make sure all available modules have been loaded.
  • restart Coolero
  • (Arch Only) Systemd Service:
    • Info: This enables a systemd service so that you don't have to put in your password every time coolero starts up and is currently only supported for AUR and Source installations on Arch Linux. Other system packages like deb and rpm are a WIP. Portable/sandboxed installations like AppImage and Flatpak don't offer this functionality.
      Note: the daemon currently does not adjust any settings by itself. Implementing that functionality and decoupling from the gui are planned for a future release.
    • AUR
      • Install the AUR package normally.
      • Make sure the coolero group has been created: sudo systemd-sysusers
      • Add your user to the group: sudo usermod -aG coolero $USER
      • Log out and log back in so that your group membership is re-evaluated.
      • Enable the service on boot: sudo systemctl enable coolerod.service
      • Start the service: sudo systemctl start coolerod.service
    • Source
      • Install from Source as outlined above.
      • Install the python system dependencies
        • The easiest way is to install Coolero from the AUR yay -S coolero to get all required system dependencies, then uninstall just coolero yay -R coolero
      • Run make install-system. This will build and install Coolero from the virtual env to the system, install the systemd unit files, and enable the service.
      • Log out and log back in so that your group membership is re-evaluated.
      • To uninstall run make uninstall-system (system libraries will still be present)

Additional Info

  • Coolero does not display all possible sensors and devices. It finds what is usable by the program and displays those.
    The criteria are basically:
    • fans that are controllable
    • temperatures with reasonable values
    • devices that have sensors that meet those requirements.
  • Setting the hwmon speed profile to 'Default', or simply exiting Coolero will re-enable automatic mode for those fans that are set to automatic by default.
  • Some fans work in steps, like with the thinkpad, so the reported fan duty % will be the closest step to what one has set.
  • Devices that are supported by Liquidctl will not be displayed as Hwmon devices. This is because liquidctl offers many more features, such as lighting control, than what hwmon alone currently does.

Known Issues

  • The system overview graph will freak out if the sensor list is longer than the current window size can display. Please make the window larger and the graph will fix itself.

CLI Arguments

  • -h, --help: show available commands
  • -v, --version: show program, system, and dependency version information
  • --debug: turn on debug output to console and logfile
  • --debug-liquidctl: same as above but explicitly for liquidctl output
  • --add-udev-rules: re-add recommended udev rules to the system
  • --export-profiles: export the last applied profiles for each device and channel

Debugging

To help diagnose issues enabling debug output is invaluable. It will produce quite a bit of output from the different internal systems to help determine what the cause might be. Output is sent to the command line (stdout) and to a rotating temporary log file under /tmp/coolero/coolero.log for convenience. Simply add the --debug option.

AppImage

./Coolero-x86_64.AppImage --debug

Flatpak

flatpak run org.coolero.Coolero --debug
log file location: $XDG_RUNTIME_DIR/app/org.coolero.Coolero/coolero/coolero.log

From Source

poetry run coolero --debug

Liquidctl Debugging

Liquidctl is an essential library for Coolero, so if you notice an issue related to liquidctl - reporting problems is an easy and very valuable way to contribute to the project. Please check the existing issues and, if none matches your problem, use the appropriate template to create a new issue. When submitting an issue it's best to use the liquidctl CLI, or as an alternative, use the coolero --debug-liquidctl option for liquidctl debug output.

Adding Device Support

Support for new devices requires help from the community. Coolero is essentially a frontend for various "backend" libraries. This means Coolero does not interact with the devices directly, but through the API of other systems or libraries. The two currently supported backends are liquidctl and hwmon. Adding support for more devices generally means being supported in one of these backends first. These are the steps to take to add support for your device in Coolero:

  1. Is your device supported by liquidctl?

    • Go here and see if your device is listed.
      • Yes -> make a feature request for Coolero to add support for that device.
      • No -> continue
  2. Is your device supported by hwmon?

    • Check here to see if you can find your device and/or follow the hwmon support guide to see if you see your device is listed in the sensor command output.
      • Yes -> you should see the supported controls once you've enabled HWMon support. If your device doesn't work as expected make a feature request to add or fix support for it.
      • No -> continue
  3. Not supported by the above? There are still some options:

    1. See if another library does support communicating with the device and make a feature request to have Coolero integrate support for it.
    2. Support development of a driver for the device by contributing: see liquidctl docs or the lm-sensors repo.
  4. Once support has been added:

    • please report any bugs you notice using the device, real world device testing and feedback is very helpful.

Acknowledgements

  • Major thanks is owed to the python API of liquidctl
  • Thanks to all the many contributors of HWMon
  • A big inspiration is GKraken written by Roberto Leinardi.
  • UI based on PyOneDark by Wanderson M.Pimenta

License

This program is licensed under GPLv3

FAQ

  • Should I use Liquid or CPU as a temperature source to control my pump/fans?
    • Quick answer: Liquid
    • The thermodynamics of liquid cooling are very different compared to the traditional method. Choose what works best for your situation.
  • Coolero says my device is supported but it doesn't show up in the UI?
    • run Coolero from the command line with the --add-udev-rules option to have the udev rules manually applied. Then restart your computer. This makes sure device access has been given to your user.
  • I have an issue with X, what do I do?
    • Please join the discord channel if it's something small, otherwise opening an Issue ticket in GitLab is the best way to get something fixed.
  • How do I get Coolero to start automatically when I start my computer?
    • Each distro has their own way to do this, from a simple menu option 'Startup Applications' to writing your own script
  • Why should I use this GUI when I could do what Coolero does with a shell script?
    • Oh, you definitely can, and I would encourage you to do so. Coolero started out as a dynamic replacement for some of my own scripts with the added advantage of being able to visualize the data I was collecting.