throttled dev version for copr build, forked from https://github.com/erpalma/throttled/

Francesco Palmarini 7d13bfda7e Update README.md 7 năm trước cách đây
.gitignore bd3b4fcc36 Initial commit 7 năm trước cách đây
LICENSE bd3b4fcc36 Initial commit 7 năm trước cách đây
Makefile 73e8ae4fbd initial push 7 năm trước cách đây
README.md 7d13bfda7e Update README.md 7 năm trước cách đây
lenovo_fix.py d9a459b12b typo 7 năm trước cách đây
lenovo_fix.service 73e8ae4fbd initial push 7 năm trước cách đây

README.md

Fix T480 / T480s / X1C6 Throttling on Linux

Workaround for Linux throttling issues on Lenovo T480 / T480s / X1C6 notebooks as described here.

This script forces the CPU package power limit (PL1/2) to 44 W (29 W on battery) and the temperature trip point to 97 'C (85 'C on battery) by overriding default values in MSR and MCHBAR every 5 seconds (30 on battery) to block the Embedded Controller from resetting these values to default.

Requirements

The python module python-periphery is used for accessing the MCHBAR register by memory mapped I/O.

Installation

git clone https://github.com/erpalma/lenovo-throttling-fix.git
sudo -H pip install python-periphery
sudo make install
sudo systemctl enable lenovo_fix.service
sudo systemctl start lenovo_fix.service

Configuration

The script can be configured by editing lenovo_fix.py directly. There exist two profiles AC and BATTERY:

config = {
    'AC': {
        'UPDATE_RATE_SEC': 5,  # Update the registers every this many seconds
        'PL1_TDP_W': 44,  # Max package power for time window #1
        'PL1_DURATION_S': 28,  # Time window #1 duration
        'PL2_TDP_W': 44,  # Max package power for time window #2
        'PL2_DURATION_S': 0.002,  # Time window #2 duration
        'TRIP_TEMP_C': 97  # Max allowed temperature before throttling
    },
    'BATTERY': {
        'UPDATE_RATE_SEC': 30,  # Update the registers every this many seconds
        'PL1_TDP_W': 29,  # Max package power for time window #1
        'PL1_DURATION_S': 28,  # Time window #1 duration
        'PL2_TDP_W': 44,  # Max package power for time window #2
        'PL2_DURATION_S': 0.002,  # Time window #2 duration
        'TRIP_TEMP_C': 85  # Max allowed temperature before throttling
    },
}

Disclaimer

This script overrides the default values set by Lenovo. I'm using it without any problem, but it is still experimental so use it at your own risk. This script can be probably adapter/used on other notebooks too.