From 6fec0f2e5df0d6aee0d5c5be52f8f6455324fe1a Mon Sep 17 00:00:00 2001 From: 28allday Date: Thu, 26 Mar 2026 21:11:26 +0000 Subject: [PATCH] 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) --- README.md | 88 +++++++++++++++++++++++++++++++++++++++++++++ setup-acer-turbo.sh | 79 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 README.md create mode 100755 setup-acer-turbo.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..a99d4a1 --- /dev/null +++ b/README.md @@ -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. diff --git a/setup-acer-turbo.sh b/setup-acer-turbo.sh new file mode 100755 index 0000000..83a468b --- /dev/null +++ b/setup-acer-turbo.sh @@ -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 ""