Add comprehensive README with installation and usage instructions
This commit is contained in:
302
README.md
Normal file
302
README.md
Normal file
@@ -0,0 +1,302 @@
|
||||
# T14 System Settings Manager
|
||||
|
||||
A comprehensive GUI and system tray application for managing Lenovo ThinkPad T14 Gen 6 system settings on Linux (Kubuntu/Ubuntu).
|
||||
|
||||
## Features
|
||||
|
||||
### CPU Governor Control
|
||||
- **Performance Mode**: Maximum CPU performance when plugged into AC power
|
||||
- **Powersave Mode**: Battery-optimized CPU frequency scaling
|
||||
- Automatic switching based on AC power status (via udev rules)
|
||||
|
||||
### Fan Control
|
||||
- **7 Fan Levels**: Manual control from L1 (silent) to L7 (maximum cooling)
|
||||
- **Automatic Mode (L2)**: Temperature-based fan management via thinkfan
|
||||
- **Office-Friendly**: Default configuration keeps fan at constant level 2 (~2600 RPM) up to 100°C
|
||||
- Real-time fan speed monitoring
|
||||
|
||||
### Battery Management
|
||||
- **Conservative Mode (75-80%)**: Extends battery lifespan for daily use
|
||||
- **Moderate Mode (80-90%)**: Balanced charging for regular usage
|
||||
- **Full Charge (0-100%)**: Maximum capacity when needed
|
||||
- **Quick Charge**: One-click charge to 100% immediately
|
||||
- **Automated Management**:
|
||||
- Time-based: Automatically charge to full before end of workday
|
||||
- Network-based: Smart charging based on WiFi location (office vs. home)
|
||||
|
||||
### System Integration
|
||||
- **GUI Application**: Full-featured window with all controls
|
||||
- **System Tray**: Quick access menu with status updates
|
||||
- **Auto-start**: Tray icon launches automatically on login
|
||||
- **Real-time Status**: CPU temperature, governor, fan speed, battery level
|
||||
|
||||
## Requirements
|
||||
|
||||
### Hardware
|
||||
- Lenovo ThinkPad T14 Gen 6 (Intel)
|
||||
- Battery with charge threshold support (BAT0)
|
||||
|
||||
### Software
|
||||
- Ubuntu 24.04 / Kubuntu (or compatible)
|
||||
- Python 3.12+
|
||||
- Thinkfan 1.3.1+
|
||||
- Required Python packages: `tkinter`, `pystray`, `pillow`
|
||||
|
||||
## Installation
|
||||
|
||||
### 1. Install Dependencies
|
||||
|
||||
```bash
|
||||
# Install thinkfan
|
||||
sudo apt install thinkfan
|
||||
|
||||
# Install Python packages
|
||||
pip3 install --user --break-system-packages pystray pillow
|
||||
```
|
||||
|
||||
### 2. Enable ThinkPad Fan Control
|
||||
|
||||
```bash
|
||||
# Enable fan control parameter
|
||||
echo "options thinkpad_acpi fan_control=1" | sudo tee /etc/modprobe.d/thinkpad_acpi.conf
|
||||
|
||||
# Apply immediately
|
||||
sudo modprobe -r thinkpad_acpi
|
||||
sudo modprobe thinkpad_acpi
|
||||
```
|
||||
|
||||
### 3. Configure Thinkfan
|
||||
|
||||
Create `/etc/thinkfan.yaml`:
|
||||
|
||||
```yaml
|
||||
sensors:
|
||||
- hwmon: /sys/class/hwmon/hwmon5/temp1_input # CPU core temp
|
||||
indices: [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
- hwmon: /sys/class/hwmon/hwmon7/temp1_input # ThinkPad sensor
|
||||
indices: [1]
|
||||
- hwmon: /sys/class/hwmon/hwmon3/temp1_input # NVMe temp
|
||||
indices: [1]
|
||||
|
||||
fans:
|
||||
- tpacpi: /proc/acpi/ibm/fan
|
||||
|
||||
levels:
|
||||
- ["level 2", 0, 100] # Constant level 2 up to 100°C (ultra-silent)
|
||||
- ["level 3", 98, 255] # Level 3 only above 98°C (safety)
|
||||
```
|
||||
|
||||
Enable and start thinkfan:
|
||||
|
||||
```bash
|
||||
sudo systemctl enable thinkfan
|
||||
sudo systemctl start thinkfan
|
||||
```
|
||||
|
||||
### 4. Create Privilege Elevation Helper
|
||||
|
||||
Create `/usr/local/bin/system-settings-helper.sh`:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
case "$1" in
|
||||
cpu-governor)
|
||||
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
|
||||
echo "$2" > "$cpu"
|
||||
done
|
||||
;;
|
||||
fan-level)
|
||||
echo "level $2" > /proc/acpi/ibm/fan
|
||||
;;
|
||||
fan-stop-thinkfan)
|
||||
systemctl stop thinkfan
|
||||
;;
|
||||
fan-start-thinkfan)
|
||||
systemctl start thinkfan
|
||||
;;
|
||||
battery-start)
|
||||
echo "$2" > /sys/class/power_supply/BAT0/charge_control_start_threshold
|
||||
;;
|
||||
battery-end)
|
||||
echo "$2" > /sys/class/power_supply/BAT0/charge_control_end_threshold
|
||||
;;
|
||||
esac
|
||||
```
|
||||
|
||||
Make it executable:
|
||||
|
||||
```bash
|
||||
sudo chmod +x /usr/local/bin/system-settings-helper.sh
|
||||
```
|
||||
|
||||
### 5. Setup CPU Governor Auto-Switching
|
||||
|
||||
Create `/usr/local/bin/cpu-governor-switch.sh`:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
if [ "$(cat /sys/class/power_supply/AC/online)" = "1" ]; then
|
||||
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
|
||||
echo "performance" > "$cpu"
|
||||
done
|
||||
else
|
||||
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
|
||||
echo "powersave" > "$cpu"
|
||||
done
|
||||
fi
|
||||
```
|
||||
|
||||
Create udev rule `/etc/udev/rules.d/99-cpu-governor.rules`:
|
||||
|
||||
```
|
||||
ACTION=="change", SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="*", RUN+="/usr/local/bin/cpu-governor-switch.sh"
|
||||
```
|
||||
|
||||
Make executable and reload:
|
||||
|
||||
```bash
|
||||
sudo chmod +x /usr/local/bin/cpu-governor-switch.sh
|
||||
sudo udevadm control --reload-rules
|
||||
```
|
||||
|
||||
### 6. Install the Applications
|
||||
|
||||
```bash
|
||||
# Clone this repository
|
||||
git clone ssh://git@gitea.egonetix.de:222/root/battery_management.git
|
||||
cd battery_management
|
||||
|
||||
# Make scripts executable
|
||||
chmod +x system-settings-gui.py system-settings-tray.py
|
||||
|
||||
# Create desktop entry for GUI
|
||||
cat > ~/.local/share/applications/system-settings-gui.desktop << EOF
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=T14 System Settings
|
||||
Comment=Manage T14 CPU, Fan, and Battery Settings
|
||||
Exec=python3 $(pwd)/system-settings-gui.py
|
||||
Icon=preferences-system
|
||||
Terminal=false
|
||||
Categories=System;Settings;
|
||||
EOF
|
||||
|
||||
# Create autostart entry for tray
|
||||
mkdir -p ~/.config/autostart
|
||||
cat > ~/.config/autostart/system-settings-tray.desktop << EOF
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=T14 System Tray
|
||||
Comment=T14 System Settings in System Tray
|
||||
Exec=python3 $(pwd)/system-settings-tray.py
|
||||
Icon=preferences-system
|
||||
Terminal=false
|
||||
Categories=System;Settings;
|
||||
StartupNotify=false
|
||||
X-GNOME-Autostart-enabled=true
|
||||
EOF
|
||||
|
||||
# Update desktop database
|
||||
update-desktop-database ~/.local/share/applications
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### GUI Application
|
||||
Launch from application menu: **System → T14 System Settings**
|
||||
|
||||
Or run directly:
|
||||
```bash
|
||||
python3 system-settings-gui.py
|
||||
```
|
||||
|
||||
### System Tray
|
||||
The tray icon starts automatically on login. Right-click the icon for quick access to:
|
||||
- CPU governor switching
|
||||
- Fan level control (L1-L7)
|
||||
- Battery management presets
|
||||
- Quick charge to 100%
|
||||
|
||||
### Command Line
|
||||
|
||||
Check current status:
|
||||
```bash
|
||||
# CPU temperature
|
||||
cat /sys/class/hwmon/hwmon5/temp1_input | awk '{print int($1/1000)}'
|
||||
|
||||
# CPU governor
|
||||
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
||||
|
||||
# Fan speed
|
||||
grep "^speed" /proc/acpi/ibm/fan
|
||||
|
||||
# Battery status
|
||||
cat /sys/class/power_supply/BAT0/capacity
|
||||
cat /sys/class/power_supply/BAT0/status
|
||||
cat /sys/class/power_supply/BAT0/charge_control_start_threshold
|
||||
cat /sys/class/power_supply/BAT0/charge_control_end_threshold
|
||||
```
|
||||
|
||||
## Fan Levels
|
||||
|
||||
| Level | Speed (RPM) | Use Case |
|
||||
|-------|-------------|----------|
|
||||
| L1 | ~2400 | Ultra-silent (very low load) |
|
||||
| L2 | ~2600 | Silent office mode (default auto) |
|
||||
| L3 | ~3100 | Light work |
|
||||
| L4 | ~3600 | Moderate load |
|
||||
| L5 | ~3900 | Higher performance |
|
||||
| L6 | ~4400 | Heavy workload |
|
||||
| L7 | ~5100+ | Maximum cooling |
|
||||
|
||||
**Note**: L2 is the default automatic mode managed by thinkfan. Selecting L2 re-enables automatic temperature-based fan management. All other levels disable thinkfan and use manual fan control.
|
||||
|
||||
## Battery Health Tips
|
||||
|
||||
- **Daily Use**: Keep at 75-80% for maximum battery lifespan
|
||||
- **Before Travel**: Charge to 100% (0-100% mode)
|
||||
- **Long-term Storage**: Store at 50-60% charge
|
||||
- **Avoid**: Constant 100% charging when plugged in all day
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Fan control not working
|
||||
```bash
|
||||
# Verify fan control is enabled
|
||||
cat /sys/module/thinkpad_acpi/parameters/fan_control
|
||||
# Should output: Y
|
||||
|
||||
# Check if thinkfan is running
|
||||
systemctl status thinkfan
|
||||
```
|
||||
|
||||
### Permission denied errors
|
||||
```bash
|
||||
# Verify helper script exists and is executable
|
||||
ls -l /usr/local/bin/system-settings-helper.sh
|
||||
|
||||
# Test pkexec manually
|
||||
pkexec /usr/local/bin/system-settings-helper.sh cpu-governor performance
|
||||
```
|
||||
|
||||
### Tray icon not appearing
|
||||
```bash
|
||||
# Check if process is running
|
||||
ps aux | grep system-settings-tray
|
||||
|
||||
# Restart manually
|
||||
pkill -f system-settings-tray
|
||||
python3 system-settings-tray.py &
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT License - Feel free to modify and distribute.
|
||||
|
||||
## Author
|
||||
|
||||
Created for Lenovo ThinkPad T14 Gen 6 on Kubuntu 24.04.
|
||||
|
||||
## Contributing
|
||||
|
||||
Issues and pull requests welcome at: https://gitea.egonetix.de/root/battery_management
|
||||
Reference in New Issue
Block a user