Initial commit: Acer Nitro GPU power and turbo mode setup

Script to enable predator_v4 mode, set platform profile to performance,
and enable nvidia-powerd for Dynamic Boost on Acer Nitro/Predator laptops.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
28allday 2026-03-26 21:11:26 +00:00
commit 6fec0f2e5d
2 changed files with 167 additions and 0 deletions

88
README.md Normal file
View file

@ -0,0 +1,88 @@
# Acer Power Control - Omarchy
GPU power and turbo mode setup for Acer Nitro/Predator laptops running [Omarchy](https://omarchy.com).
Unlocks the full GPU power range (up to 60W) by enabling the `acer_wmi` predator mode kernel module option, setting the platform profile to performance, and enabling NVIDIA Dynamic Boost via `nvidia-powerd`.
## Requirements
- **OS**: [Omarchy](https://omarchy.com) (Arch Linux)
- **Hardware**: Acer Nitro or Predator laptop with NVIDIA dGPU
- **Kernel**: Must have `CONFIG_ACER_WMI` enabled (default on Arch)
## Quick Start
```bash
git clone https://github.com/28allday/Acer-Power-Control-Omarchy.git
cd Acer-Power-Control-Omarchy
chmod +x setup-acer-turbo.sh
./setup-acer-turbo.sh
```
The script will re-run with `sudo` automatically if not run as root.
**First run requires a reboot** - the `predator_v4` module option only takes effect after reboot. Run the script again after rebooting to complete setup.
## What It Does
The script performs four steps:
### 1. Configure acer_wmi Module
Writes `/etc/modprobe.d/acer-wmi.conf` with `predator_v4=1` to enable turbo power mode support in the Acer WMI kernel module.
### 2. Activate Predator Mode
Checks `/sys/module/acer_wmi/parameters/predator_v4` to verify the module option is active. If not, prompts for a reboot.
### 3. Set Platform Profile to Performance
Writes `performance` to `/sys/firmware/acpi/platform_profile`, unlocking higher GPU power states controlled by the laptop's Embedded Controller (EC).
### 4. Enable nvidia-powerd
Enables and starts `nvidia-powerd.service` for NVIDIA Dynamic Boost, which allows the GPU to dynamically allocate power between the CPU and GPU based on workload.
## Usage After Setup
After each reboot, press the **Turbo Key** (NitroSense button) on your keyboard to cycle through GPU power levels:
```
35W -> 40W -> 50W -> 60W (max)
```
Press it 3-4 times until you reach the desired power level.
### Quick Check
```bash
nvidia-smi -q -d POWER | grep 'Current Power Limit'
```
## Files Modified
| Path | Purpose |
|------|---------|
| `/etc/modprobe.d/acer-wmi.conf` | Enables `predator_v4=1` module option |
| `/sys/firmware/acpi/platform_profile` | Set to `performance` (runtime, not persistent) |
## Uninstalling
```bash
# Remove module config
sudo rm -f /etc/modprobe.d/acer-wmi.conf
# Disable nvidia-powerd if desired
sudo systemctl disable nvidia-powerd
# Reboot to restore defaults
```
## Credits
- [Omarchy](https://omarchy.com) - The Arch Linux distribution this was built for
- [Acer WMI kernel module](https://www.kernel.org/) - Provides predator/turbo mode support
## License
This project is provided as-is for the Omarchy community.

79
setup-acer-turbo.sh Executable file
View file

@ -0,0 +1,79 @@
#!/bin/bash
set -e
echo "=== Acer Nitro GPU Power Setup ==="
echo ""
# Check if running as root
if [[ $EUID -ne 0 ]]; then
echo "This script needs root. Re-running with sudo..."
exec sudo "$0" "$@"
fi
CONF="/etc/modprobe.d/acer-wmi.conf"
# Step 1: Ensure predator_v4 module option is configured
if ! grep -qs "predator_v4=1" "$CONF" 2>/dev/null; then
echo "Configuring acer_wmi with predator_v4=1 ..."
echo "options acer_wmi predator_v4=1" > "$CONF"
echo "Written: $CONF"
fi
# Step 2: Check if predator_v4 is active (requires reboot after first run)
CURRENT=$(cat /sys/module/acer_wmi/parameters/predator_v4 2>/dev/null || echo "unknown")
if [[ "$CURRENT" != "Y" ]]; then
echo ""
echo "predator_v4 is not active yet."
echo "A reboot is required for the module option to take effect."
echo ""
read -p "Reboot now? [y/N] " answer
if [[ "$answer" =~ ^[Yy]$ ]]; then
echo "Rebooting..."
systemctl reboot
else
echo "Reboot when ready, then run this script again."
fi
exit 0
fi
echo "predator_v4: active"
# Step 3: Set platform profile to performance
echo "performance" > /sys/firmware/acpi/platform_profile 2>/dev/null && \
echo "Platform profile: performance" || \
echo "Warning: Could not set platform profile"
# Step 4: Enable nvidia-powerd for Dynamic Boost
if systemctl is-enabled nvidia-powerd &>/dev/null; then
echo "nvidia-powerd: enabled"
else
if systemctl enable --now nvidia-powerd &>/dev/null; then
echo "nvidia-powerd: enabled and started"
else
echo "nvidia-powerd: not available (optional)"
fi
fi
# Show current GPU power state
echo ""
CURRENT_PL=$(nvidia-smi -q -d POWER 2>/dev/null | grep "Current Power Limit" | head -1 | awk '{print $5, $6}')
MAX_PL=$(nvidia-smi -q -d POWER 2>/dev/null | grep "Max Power Limit" | head -1 | awk '{print $5, $6}')
echo "GPU power limit: ${CURRENT_PL:-unknown} (max: ${MAX_PL:-unknown})"
echo ""
echo "=== Setup complete ==="
echo ""
echo "The platform profile is set to 'performance' but GPU power is"
echo "controlled by the EC (Embedded Controller) via the Turbo key."
echo ""
echo "After each reboot, press the TURBO KEY (NitroSense button) on"
echo "your keyboard to cycle through GPU power levels:"
echo ""
echo " 35W -> 40W -> 50W -> 60W (max)"
echo ""
echo "Press it 3-4 times until nvidia-smi shows 60W."
echo ""
echo "Quick check command:"
echo " nvidia-smi -q -d POWER | grep 'Current Power Limit'"
echo ""