Giter Club home page Giter Club logo

i8kgui's Introduction

I8KGUI

GitHub Workflow Status GitHub release (latest by date)

Introduction

A Dell thermal management GUI to control fan speeds and monitor temperatures. Information is taken from dell-smm-hwmon, i8kutils, Sysfs and (SM)BIOS - created as a quick hack for my own needs (screenshots may be of an older version).

i8k bios cores turbo settings info

i8kgui uses dell-smm-hwmon, i8kutils and Sysfs to gather information such as CPU temperature and fan speeds. It also supports thermal management using (SM)BIOS modes.

Features

  • Displays CPU temperature, fan speed(s) and fan mode(s)
  • Displays the current CPU frequency
  • Displays CPU load
  • Displays individual CPU core frequencies and temperatures
  • Displays CPU Turbo information
  • Gathers metrics from the dell_smm_hwmon kernel module via Sysfs, instead of using /proc/i8k
  • Shows the currently active i8kutils configuration being used
  • Supports (SM)BIOS thermal management modes via libsmbios
  • Loads cpupower-gui (if installed) when CPU Governor is clicked
  • Option to display CPU frequency as either the highest (default) or the average value for all CPU cores
  • Adds polkit action configurations to allow users to change fan modes without a password

Installation

Automated Installation (Recommended)

This version has only been tested on Ubuntu 20.04/23.04 (it should also work on 22.04) and with a Dell laptop (XPS 7590). The installation script undertakes a system-wide installation with all optional components (i.e. cpupower-gui and undervolt). i8kgui itself is installed within a users $HOME directory. Please see below for other install options.

git clone https://github.com/razman786/i8kgui
cd i8kgui
./install_i8kgui_ubuntu.sh

Automated Installation Options

Install option i8kutils Dell BIOS fan control libsmbios cpupower-gui undervolt
-all ✔️ ✔️ ✔️ ✔️ ✔️
-norm ✔️ ✔️ ✔️
-min ✔️
-fix ✔️ ✔️
-smbios ✔️ ✔️
-power ✔️ ✔️ ✔️ ✔️

See ./install_i8kgui_ubuntu.sh -h for usage information.

Manual Installation

Prerequisites

This guide has only been tested on Ubuntu 20.04/23.04 and with a Dell XPS laptop.

The dell-smm-hwmon kernel module is required for basic functionality.

i8kutils

Please install and configure i8kutils from https://github.com/vitorafsr/i8kutils. On Ubuntu the following can be run:

sudo apt install i8kutils
Dell BIOS Fan Control (optional)

Some systems require this step, while others do not. For example, a Dell XPS 7590 needs the BIOS fan control installed, but a Dell Inspiron 5575 does not.

Please install Dell BIOS Fan Control from https://github.com/TomFreudenberg/dell-bios-fan-control and install it into /usr/bin/.

If you are not sure that you have GCC installed, please run this first sudo apt install build-essentials, then:

git clone https://github.com/TomFreudenberg/dell-bios-fan-control.git
cd dell-bios-fan-control
make
sudo cp dell-bios-fan-control /usr/bin

Please install this service file from https://github.com/gilbsgilbs/dell-bios-fan-control-git/blob/master/dell-bios-fan-control.service into /etc/systemd/system/

curl -O https://raw.githubusercontent.com/gilbsgilbs/dell-bios-fan-control-git/master/dell-bios-fan-control.service
sudo cp dell-bios-fan-control.service /etc/systemd/system/
sudo systemctl enable dell-bios-fan-control.service
libsmbios (optional)

If supported by your system, libsmbios will allow BIOS thermal modes to be changed, amongst other features. On Ubuntu, please install the following package to interface with (SM)BIOS information:

sudo apt install python3-libsmbios
cpupower-gui (optional)

On Ubuntu, install the following optional package to change the CPU Governor:

sudo apt install cpupower-gui
polkit actions (optional)

The polkit action files will allow thermal controls to be changed without requiring a user password. If your installation of i8kgui is frequently asking for a password, please do the following:

Using a text editor, change the I8KGUI_THERMAL_PATH placeholder in the i8kgui/polkit_actions/ubuntu/com.ubuntu.pkexec.i8kgui_thermal_control.policy file to the correct location, i.e. /home/someuser

To manually install the polkit action files, do the following:

sudo cp i8kgui/polkit_actions/ubuntu/* /usr/share/polkit-1/actions

Please note that, the installation script by default will use the polkit action files for Ubuntu. Polkit action files for Manjaro Linux (tested with version 22.1.3) are located in i8kgui/polkit_actions/manjaro.

i8kgui Installation

Using PyPI

On Ubuntu 20.04 and 22.04 use the following:

pip3 install i8kgui --user

For Ubuntu 23.04 the command needs to be altered:

pip3 install i8kgui --user --break-system-packages
Using Git
git clone https://github.com/razman786/i8kgui

On Ubuntu 20.04 and 22.04 use the following:

pip3 install . --user

For Ubuntu 23.04 the command is as follows:

pip3 install . --user --break-system-packages
Development version
git clone https://github.com/razman786/i8kgui
git checkout development && git pull
pip3 install . --user

Uninstall i8kgui

For Ubuntu 20.04 and 22.04 use the following:

pip3 uninstall i8kgui

For Ubuntu 23.04 use the following:

pip3 uninstall i8kgui --break-system-packages

Usage

Please ensure that you have configured i8kutils before starting!

Once i8kutils is correctly configured using the /etc/i8kmon.conf file, please run the following to enable the services if they are not already running.

sudo systemctl enable dell-bios-fan-control.service; sudo systemctl enable i8kmon.service

i8kgui can be loaded by searching in Ubuntu's Show Applications icon in the application dock. Optionally, i8kgui can be loaded from a terminal by executing i8kgui.

By default, i8kgui displays i8kutils information, however it does facilitate thermal management using the (SM)BIOS. If you enable this feature typically four fan modes will be available. Please note that, using 'Quiet', or 'Cool Bottom' modes will reduce performance due to CPU power capping. Changing (SM)BIOS thermal modes may require entering a user password, if polkit actions have not been configured.

Disabling (SM)BIOS thermal management in the settings will re-enable i8kutils's management and configuration.

Personal configuration

The i8kmon_sample_conf directory contains my personal i8kmon.conf configuration file, used on a Dell XPS 7590 (Intel i7, BIOS version 1.14.1).

Undervolt is installed using the following settings to avoid thermal throttling:

undervolt -v --gpu -0 --core -121 --cache -121 --uncore -121 --analogio 0 --temp 100

Known Working Systems

Systems that have been reported to be working:

  • Dell XPS 7590, Intel i7
  • Dell Inspiron 5575, AMD Ryzen 5 - thank you @yochananmarqos

Disclaimer

Please note the author takes no responsibility for any damage that occurs from using this software and/or configurations.

Issues and requests

Please open an issue here.

Credits

Delapouite for the Computer Fan Icon (CC BY 3.0)

i8kgui's People

Contributors

razman786 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

hildembergol

i8kgui's Issues

boot error

if I start from i8kgui applications it will not boot.
if boot from terminal I get the following error
"Found: Intel CPU
Found: Sysfs AC power supply
Found: Sysfs scaling governor
Found: Sysfs RAPL TDP
Found: Sysfs SMT status
Found: Sysfs CPU siblings
Found Intel sensors:
Sensor: shwtemp(label='Package id 0', current=71.0, high=86.0, critical=100.0)
Sensor: shwtemp(label='Core 0', current=70.0, high=86.0, critical=100.0)
Sensor: shwtemp(label='Core 1', current=72.0, high=86.0, critical=100.0)
Sensor: shwtemp(label='Core 2', current=68.0, high=86.0, critical=100.0)
Sensor: shwtemp(label='Core 3', current=65.0, high=86.0, critical=100.0)
Found: 4 Sysfs Intel coretemps
Found: Sysfs CPU Turbo
Found: Sysfs CPU min perf
Found: Sysfs CPU max perf
Found: Sysfs CPU min scaling
Found: Sysfs CPU max scaling
Found: dell_smm_hwmon fan1
Found: dell_smm_hwmon fan1_target
Error: dell_smm_hwmon fan2 not found
Found: dell_smm_hwmon CPU temp
Found: i8kmon.service is active
Found: dell-bios-fan-control.service is active
Found: i8kctl /usr/bin/i8kctl
Found: i8kmon config file /etc/i8kmon.conf
Error: (SM)BIOS Thermal Control not found
Info: switching thermal mode to enable i8k
Found: CPU SMT active? True
Found: 4 CPU Cores
Found: 8 Logical CPU Cores
Found: 8 CPU siblings in list
Found: CPU siblings: {0: 4, 1: 5, 2: 6, 3: 7, 4: 0, 5: 1, 6: 2, 7: 3}
Found: CPU temp sensors [0, 1, 2, 3, 0, 1, 2, 3]
Warn: Sysfs IOError [Errno 2] File o directory non esistente: '/some/where/0'
Warn: Sysfs IOError [Errno 2] File o directory non esistente: '/some/where/0'
Traceback (most recent call last):
File "/home/danida/.local/bin/i8kgui", line 2087, in open_sysfs_file
f = open(f_name, mode)
FileNotFoundError: [Errno 2] File o directory non esistente: '/some/where/0'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/danida/.local/bin/i8kgui", line 2009, in monitor
self.read_proc()
File "/home/danida/.local/bin/i8kgui", line 1913, in read_proc
self.read_i8kmon_info()
File "/home/danida/.local/bin/i8kgui", line 1778, in read_i8kmon_info
self.update_i8k_thermal()
File "/home/danida/.local/bin/i8kgui", line 1976, in update_i8k_thermal
left_speed = f"{value[value.index(str(self.left_fan_mode))]}".rjust(
ValueError: '3321' is not in list

"

Dell Inspiron 5575, AMD Ryzen 5 2500U is not working

Describe the bug

I've installed i8kgui on my Dell Inspiron 5575 using my own PKGBUILD. It appears I have all the required dependencies, but running i8kgui returns:

qt.dbus.integration: Could not connect "org.freedesktop.IBus" to globalEngineChanged(QString)
Traceback (most recent call last):
  File "/usr/bin/i8kgui", line 1426, in <module>
    tray = I8kGui()
           ^^^^^^^^
  File "/usr/bin/i8kgui", line 54, in __init__
    self.check_prerequisites()
  File "/usr/bin/i8kgui", line 440, in check_prerequisites
    glob.glob(
IndexError: list index out of range

I'm not sure if it's because I don't have the /sys/devices/platform/coretemp.0/hwmon/ path on my system or not. I have /sys/devices/platform/dell_smm_hwmon/hwmon/ instead.

❯ ls /sys/devices/platform/
AMDI0010:01  dcdbas	  dell-laptop	 dell-smbios.1	 efivars.0  intel_rapl_msr.0  MSFT0101:00  PNP0C0C:00  PNP0C0E:00  power      regulatory.0  serial8250	uevent
AMDI0030:00  DELLABCE:00  dell-smbios.0  dell_smm_hwmon  i8042	    microcode	      pcspkr	   PNP0C0D:00  PNP0C14:00  reg-dummy  rtc-efi.0     sp5100-tco
❯ ls /sys/devices/platform/dell_smm_hwmon/hwmon/hwmon4
device	fan1_input  fan1_label	fan1_max  fan1_min  fan1_target  name  power  pwm1  subsystem  temp1_input  temp3_input  temp5_input  uevent

Replacing line 441 with the following did not change the error, however.

                        f"/sys/devices/platform/dell_smm_hwmon/hwmon/*/temp{cpu + 1}_input"

Desktop (please complete the following information):

  • OS: Manjaro Linux (unstable branch)
  • Version: GNOME 44.1

Additional context
I use i8kutils with no issues.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.