How to Make a Linux Server Quieter and Use Less Power (Fans, Drives, CPU and powertop)

A server runs 8,760 hours a year. At UK prices, every 10 W it draws around the clock is roughly £25 a year — so an old desktop idling at 70 W costs £175 while a mini PC at 12 W costs £30. Some of that gap is hardware; a surprising amount is settings. And most of what saves power also makes the machine quieter.
Quick reference
| Change | Typical saving at idle |
|---|---|
| Spin down idle hard drives (hdparm -S) | 5–8 W per drive |
| powertop --auto-tune (USB, SATA, PCIe power states) | 3–10 W |
| CPU governor powersave / let C-states work | 2–5 W |
| BIOS: enable C-states, ASPM, disable unused controllers | 2–10 W |
| Remove the discrete GPU if nothing uses it | 10–30 W |
| Fewer, bigger drives; SSD for the system | varies |
1. Measure first
Plug the server into a power meter (a £10 plug-in meter, or a smart plug with energy monitoring that reports to Home Assistant). Note idle and busy wattage. Without this you're guessing; with it, every change below has a number.
On the software side:
sudo apt install powertop -y
sudo powertop
The Overview tab shows what's waking the CPU; Idle stats shows how deep the C-states go (C6–C10 is good; stuck in C0–C2 means something's keeping it awake); Tunables lists settings marked Bad.
2. powertop's tunables
sudo powertop --auto-tune
Sets every tunable to Good: USB autosuspend, SATA link power management, PCIe ASPM, audio power save. Watch the meter. To make it permanent, a oneshot service:
sudo nano /etc/systemd/system/powertop.service
[Unit]
Description=powertop auto-tune
[Service]
Type=oneshot
ExecStart=/usr/sbin/powertop --auto-tune
[Install]
WantedBy=multi-user.target
sudo systemctl enable powertop. If a USB device (a Zigbee stick, a UPS) misbehaves afterwards, exclude it: find its ID with lsusb and add a udev rule setting power/control to on for that device.
3. Spin the drives down
Hard drives at 5–8 W each are the biggest single item in most home servers, and they're loud. Let them sleep when nothing's reading:
sudo apt install hdparm -y
sudo hdparm -S 241 /dev/sda # 30 minutes idle → standby
Permanent, in /etc/hdparm.conf:
/dev/disk/by-id/ata-WDC_WD40EFRX-xxxx {
spindown_time = 241
}
(-S values: 120 = 10 min, 241 = 30 min, 242 = 1 hour.) A media library with mergerfs (tutorial 99) wakes one drive for a film; ZFS pools keep all drives awake, so put the always-busy things (Docker, databases, Immich) on the SSD and only bulk data on spinners. Check what's keeping them awake with sudo iotop -o — SMART monitoring, Plex scans and updatedb are common culprits (-n standby in smartd.conf skips sleeping drives).
4. CPU
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
sudo apt install linux-tools-common linux-tools-$(uname -r) -y
sudo cpupower frequency-set -g powersave
On modern Intel/AMD with intel_pstate/amd-pstate, powersave still boosts under load — it just idles lower. Make it stick with GOVERNOR="powersave" in /etc/default/cpufrequtils (sudo apt install cpufrequtils). Check powertop's idle stats afterwards: deep C-states are where the savings live, and a device with ASPM disabled can block them all.
5. BIOS
Reboot into the BIOS once:
- C-states / Package C-state limit: enabled / auto.
- ASPM: enabled (L1 or L0sL1).
- Disable what you don't use: onboard audio, serial/parallel ports, Wi-Fi/Bluetooth, the second NIC, RGB lighting.
- Fan profile: Silent / Quiet.
- ErP/EuP: off only if you need Wake-on-LAN (tutorial 79); otherwise on.
6. Fans
Noise is fans and drives. For fans the BIOS curve is usually enough; for finer control:
sudo apt install fancontrol -y
sudo sensors-detect
sudo pwmconfig # interactive: maps each fan, builds /etc/fancontrol
sudo systemctl enable --now fancontrol
Set the minimum PWM so fans idle slow and ramp with temperature. Replace a whining 40 mm fan with a quiet 120 mm one and a cheap adapter — the single most effective noise fix on an old case.
7. The hardware truth
Settings get an old desktop from 70 W to perhaps 45 W. A modern mini PC (Intel N100 class) idles at 7–12 W with two drives attached, silently, and runs everything in this series. If the electricity bill is the motivation, do the maths on the meter reading: the mini PC often pays for itself in two years, and tutorial 74 is the migration.
Troubleshooting
Drives never spin down. Something touches them: sudo iotop -o, smartd without -n standby, a Samba share with a client's open window, locate's updatedb.
USB device stopped working after auto-tune. Autosuspend on that device; udev rule to keep it on.
Lower power but worse performance. Governor powersave on an older acpi-cpufreq system caps frequency; use schedutil or ondemand there instead.
Spin-ups wear drives. Dozens a day is bad; one or two is fine. If smartctl shows Start_Stop_Count climbing fast, lengthen the timeout.
Wrapping up
A power meter, powertop --auto-tune made permanent, drives spun down, powersave governor, five minutes in the BIOS, a quiet fan curve. Measure before and after — the number on the meter is the whole point — and if it's still high, the next tutorial to read is the one about new hardware.
