If you are running a Linux-based home server on a laptop with hybrid graphics (like the HP Pavilion G6 with AMD Trinity/Thames), the discrete GPU often stays powered on even if it isn't being used. This wastes electricity and generates unnecessary heat. This guide explains how to identify the correct ACPI path and cut power to the discrete card.
First, verify that your system sees two graphics controllers.
lspci | grep -i vga
Example output:
00:01.0(Integrated/APU)01:00.0(Discrete/Dedicated) — This is the one we want to turn off.
You need the acpi_call kernel module to send power-off commands directly to the motherboard.
On Debian/Ubuntu/Proxmox:
sudo apt update
sudo apt install acpi-call-dkms
sudo modprobe acpi_call
Every laptop manufacturer uses a different internal ACPI path. Use the built-in search script to find which one works for your hardware.
sudo /usr/share/doc/acpi-call-dkms/examples/turn_off_gpu.sh
Look for the line that says "works!". For example:
Trying \_SB_.PCI0.VGA.PX02: works!
Take the path that worked and send the "OFF" signal (replace the path below with your specific result):
echo "\_SB_.PCI0.VGA.PX02" | sudo tee /proc/acpi/call
Check the power state of the PCI device (replace 01:00.0 if your ID was different):
cat /sys/bus/pci/devices/0000:01:00.0/power_state
If it shows D3cold (or returns an error because the device is literally gone), the power has been cut.
To ensure the GPU stays off after a reboot, create a simple script and trigger it with a cron job.
sudo nano /usr/local/bin/disable-gpu.sh
Paste this content:
#!/bin/bash
# Load the acpi_call module
modprobe acpi_call
# Cut power to the discrete GPU (using verified path)
echo "\_SB_.PCI0.VGA.PX02" > /proc/acpi/call
sudo chmod +x /usr/local/bin/disable-gpu.sh
Run sudo crontab -e and add this line to the bottom:
@reboot /usr/local/bin/disable-gpu.sh
- Lower Temps: CPU/APU temperatures usually drop by 5-10°C.
- Power Savings: Reduces idle power draw by 5W–15W.
- Silent Operation: Fans spin slower and less frequently.