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

A quieter, cheaper server: Every 10 W around the clock is about £25 a year.

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

ChangeTypical 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 work2–5 W
BIOS: enable C-states, ASPM, disable unused controllers2–10 W
Remove the discrete GPU if nothing uses it10–30 W
Fewer, bigger drives; SSD for the systemvaries

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:

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.

Call us