diff --git a/README.md b/README.md index f5fc96c..4d5a718 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,13 @@ sudo systemctl enable --now lenovo_fix.service ``` Thanks to *felixonmars* for creating and maintaining this package. +### Artix Linux +``` +makepkg -si +sudo rc-update add lenovo_fix default +sudo rc-service lenovo_fix start +``` + ### Debian/Ubuntu ``` sudo apt install git build-essential python3-dev libdbus-glib-1-dev libgirepository1.0-dev libcairo2-dev python3-venv python3-wheel @@ -130,6 +137,12 @@ sv down lenovo_fix rm /var/service/lenovo_fix ``` +If you're using OpenRC instead of systemd: +``` +rc-service lenovo_fix stop +rc-update del lenovo_fix default +``` + If you also need to remove the tool from the system: ``` rm -rf /opt/lenovo_fix /etc/systemd/system/lenovo_fix.service @@ -145,6 +158,7 @@ cd lenovo-throttling-fix git pull sudo ./install.sh sudo systemctl restart lenovo_fix.service +OpenRC: sudo rc-service lenovo_fix restart ``` ## Configuration diff --git a/etc/lenovo_fix.conf b/etc/lenovo_fix.conf index da5a39b..9082579 100644 --- a/etc/lenovo_fix.conf +++ b/etc/lenovo_fix.conf @@ -44,6 +44,7 @@ cTDP: 0 # Disable BDPROCHOT (EXPERIMENTAL) Disable_BDPROCHOT: False +# All voltage values are expressed in mV and *MUST* be negative (i.e. undervolt)! [UNDERVOLT.BATTERY] # CPU core voltage offset (mV) CORE: 0 @@ -56,6 +57,7 @@ UNCORE: 0 # Analog I/O voltage offset (mV) ANALOGIO: 0 +# All voltage values are expressed in mV and *MUST* be negative (i.e. undervolt)! [UNDERVOLT.AC] # CPU core voltage offset (mV) CORE: 0 diff --git a/install.sh b/install.sh index 2ff623d..871d903 100755 --- a/install.sh +++ b/install.sh @@ -6,6 +6,8 @@ if pidof systemd 2>&1 1>/dev/null; then systemctl stop lenovo_fix.service >/dev/null 2>&1 elif pidof runit 2>&1 1>/dev/null; then sv down lenovo_fix >/dev/null 2>&1 +elif pidof openrc 2>&1 1>/dev/null; then + rc-service lenovo_fix stop >/dev/null 2>&1 fi mkdir -p "$INSTALL_DIR" >/dev/null 2>&1 @@ -26,6 +28,10 @@ if pidof systemd 2>&1 1>/dev/null; then elif pidof runit 2>&1 1>/dev/null; then echo "Copying runit service file" cp -R runit/lenovo_fix /etc/sv/ +elif pidof openrc-init 2>&1 1>/dev/null; then + echo "Copying OpenRC service file" + cp -R openrc/lenovo_fix /etc/init.d/lenovo_fix + chmod 755 /etc/init.d/lenovo_fix fi echo "Building virtualenv..." @@ -44,6 +50,10 @@ elif pidof runit 2>&1 1>/dev/null; then echo "Enabling and starting runit service..." ln -sv /etc/sv/lenovo_fix /var/service/ sv up lenovo_fix +elif pidof openrc-init 2>&1 1>/dev/null; then + echo "Enabling and starting OpenRC service..." + rc-update add lenovo_fix default + rc-service lenovo_fix start fi echo "All done." diff --git a/lenovo_fix.py b/lenovo_fix.py index 9967246..6b2a896 100755 --- a/lenovo_fix.py +++ b/lenovo_fix.py @@ -77,6 +77,7 @@ supported_cpus = { 'Kaby Lake (R)': (0x8E, 0x9E), 'Coffee Lake': (0x9E,), 'Cannon Lake': (0x66,), + 'Comet Lake': (0xA6,), } @@ -530,8 +531,8 @@ def set_hwp(): def set_disable_bdprochot(): # Disable BDPROCHOT - cur_val = readmsr(0x1FC,flatten=True) - new_val = (cur_val & 0xFFFFFFFFFFFFFFFE) + cur_val = readmsr(0x1FC, flatten=True) + new_val = cur_val & 0xFFFFFFFFFFFFFFFE writemsr(0x1FC, new_val) if args.debug: @@ -787,6 +788,7 @@ def main(): regs = calc_reg_values(platform_info, config) if not config.getboolean('GENERAL', 'Enabled'): + log('[I] Throttled is disabled in config file... Quitting. :(') return exit_event = Event() diff --git a/openrc/lenovo_fix b/openrc/lenovo_fix new file mode 100644 index 0000000..7bbbe2a --- /dev/null +++ b/openrc/lenovo_fix @@ -0,0 +1,5 @@ +#!/usr/bin/openrc-run +command="env python3 /usr/lib/throttled/lenovo_fix.py" +pidfile=${pidfile-/var/run/lenovo_fix.pid} +description="Stop Intel throttling" +command_background="yes" diff --git a/package/PKGBUILD b/package/PKGBUILD new file mode 100644 index 0000000..90f21f4 --- /dev/null +++ b/package/PKGBUILD @@ -0,0 +1,31 @@ + +pkgname=throttled +pkgver=0.6 +pkgrel=4 +pkgdesc="Workaround for Intel throttling issues in Linux." +arch=('any') +url="https://github.com/erpalma/throttled" +license=('MIT') +depends=('python-dbus' 'python-psutil' 'python-gobject') +conflicts=('lenovo-throttling-fix-git' 'lenovo-throttling-fix') +replaces=('lenovo-throttling-fix') +backup=('etc/lenovo_fix.conf') +source=("git+https://github.com/Hyper-KVM/throttled.git#branch=openrc") +sha256sums=('SKIP') + + +build() { + cd "${srcdir}/throttled/" + python -m compileall *.py +} + +package() { + cd "${srcdir}/throttled/" + install -Dm644 etc/lenovo_fix.conf "$pkgdir"/etc/lenovo_fix.conf + install -Dm644 systemd/lenovo_fix.service "$pkgdir"/usr/lib/systemd/system/lenovo_fix.service + install -Dm755 lenovo_fix.py "$pkgdir"/usr/lib/$pkgname/lenovo_fix.py + install -Dm755 openrc/lenovo_fix "$pkgdir/etc/init.d/lenovo_fix" + install -Dm755 mmio.py "$pkgdir"/usr/lib/$pkgname/mmio.py + cp -a __pycache__ "$pkgdir"/usr/lib/$pkgname/ + install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE +}