Skip to content

codewizdevs/autoundervolt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoUndervolt — Automatic CPU Undervolt Finder for Linux

Automatically find the maximum stable CPU undervolt for Intel processors on Linux. No guesswork, no manual tuning — just run the script and get a verified, stress-tested undervolt offset for your specific chip.

Works with any Intel CPU that supports the FIVR OC Mailbox (HX, K, KF, X series). Tested and developed on Ubuntu 24.04 with an Intel Core i7-13650HX, but compatible with other Intel CPUs and Linux distributions.

You don't need Linux installed. You can live boot Ubuntu from a USB stick, run the scan, find your stable undervolt, and apply the result to Windows using Intel XTU or ThrottleStop. No installation required.


What It Does

AutoUndervolt scans a range of voltage offsets you define, stress-tests each one with verified computations, and identifies the deepest stable undervolt your specific CPU silicon can handle.

  • Baseline comparison — runs a stress test at stock voltage first so you can see the real improvement
  • Independent core/cache offsets — test different voltages for CPU core and cache planes
  • Crash recovery — if your system crashes during a test, the script detects it on next run and continues from the next step
  • Auto config change detection — edit your test steps and checkpoints are automatically cleared
  • Final validation — the best passing offset gets an extended stress test for confidence
  • Reports — generates a detailed HTML report saved to the project directory with full baseline comparison, per-step results, peak temperatures, throughput (bogo ops) for every offset tested, and copy-paste systemd service for permanent application. A plain text version is also saved alongside it.

What You Get

  • The deepest stable undervolt for your specific chip (silicon lottery varies)
  • Typically 5–10% more sustained performance under heavy load (less thermal throttling)
  • Lower temperatures (1–5°C under load, more at idle)
  • Quieter fans — especially noticeable at idle and medium loads
  • Better battery life — power scales with voltage squared, so even small reductions help
  • Less VRM stress — lower current through power delivery extends hardware lifespan
  • A detailed HTML report with every offset tested, showing exact throughput numbers, peak temperatures, and performance gains vs your stock baseline — so you can see exactly what each step gained

Why Undervolting Beats Overclocking on Laptops

On a desktop, you can overclock to get more performance — push the clocks higher, add more voltage, and rely on a tower cooler to handle the extra heat. Laptops don't have that luxury. The cooling system is compact and shared between the CPU, GPU, and VRMs. Laptop CPUs already boost as high as thermals allow, so adding voltage and frequency just hits the thermal wall faster and causes more throttling, not less.

Undervolting works in the opposite direction and is far more effective on laptops:

  • Same clocks, less heat. The CPU maintains its boost frequencies but generates less waste heat per cycle. Less heat means less throttling, which means the CPU sustains higher clocks for longer under sustained load.
  • More thermal headroom for the GPU. On a laptop the CPU and GPU share the same heatpipe system. A cooler CPU means the GPU gets more thermal budget, so both perform better.
  • No stability risk from pushing clocks beyond spec. Overclocking pushes the silicon past its rated frequency and can cause degradation over time. Undervolting stays within the rated frequency — you're just using less power to get there.
  • Better battery life as a bonus. Overclocking drains the battery faster. Undervolting does the opposite — you get more performance and longer battery life at the same time.

In our testing, a -100mV undervolt on an i7-13650HX produced ~8% more sustained throughput than stock — without changing a single clock speed setting. The CPU simply stopped throttling as aggressively because it was running cooler. That's free performance that overclocking can't match on a thermally limited laptop.


Requirements

BIOS Settings

Before running AutoUndervolt, you must configure your BIOS:

  1. Disable Secure Boot

    • Security → Secure Boot → Disabled
    • This is required because Linux kernel lockdown blocks MSR writes when Secure Boot is enabled
  2. Enable Overclocking / Undervolting (if your BIOS has this option)

    • Some laptops (Lenovo Legion, ASUS ROG, etc.) have an "Overclocking" or "OC" toggle in the BIOS
    • This unlocks the Intel FIVR OC Mailbox that the script uses to adjust voltage

Performance Mode (Important for Accurate Results)

Set your system to Performance mode before running the scan. The stress test needs to push the CPU to maximum boost clocks — power-saving modes limit clocks and can make an unstable undervolt appear stable.

  • Linux: Set the CPU governor to performance:
    echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
  • Lenovo Legion: Press Fn+Q and cycle to Performance mode (red LED on the power button). This unlocks the full power limit and fan curve, giving the most accurate stress test results.
  • Other laptops: Use your manufacturer's software or keyboard shortcut to select the highest performance profile.

System Requirements

  • Intel CPU with unlocked FIVR OC Mailbox — most HX, K, KF, X series processors
    • 12th Gen (Alder Lake): i5-12600K, i7-12700H/HX, i9-12900K/HX, etc.
    • 13th Gen (Raptor Lake): i5-13600K, i7-13650HX, i7-13700K/HX, i9-13900K/HX, etc.
    • 14th Gen (Raptor Lake Refresh): i5-14600K, i7-14700K/HX, i9-14900K/HX, etc.
  • Linux — Ubuntu, Fedora, Arch, or any distro with kernel MSR support
  • Root access (sudo)
  • Packages are auto-installed from official repos: msr-tools, stress-ng, lm-sensors

Quick Start

Option 1: Live Boot (No Linux Installation Needed)

You can find your stable undervolt without installing Linux:

  1. Download Ubuntu Desktop ISO
  2. Flash it to a USB stick using Balena Etcher or Rufus
  3. Boot from the USB stick (select "Try Ubuntu" — don't install)
  4. Open a terminal and run:
sudo apt install -y git
git clone https://github.com/codewizdevs/autoundervolt.git
cd autoundervolt
nano undervolt-finder.conf    # edit test steps if needed
sudo ./undervolt-finder.sh
  1. Once the scan completes, note your stable offset from the report
  2. Reboot into Windows and apply the same offset using Intel XTU or ThrottleStop

Option 2: On an Existing Linux Installation

git clone https://github.com/codewizdevs/autoundervolt.git
cd autoundervolt

Edit the config file to set your test steps:

nano undervolt-finder.conf

Run the scanner:

sudo ./undervolt-finder.sh

After finding your stable offset, apply it permanently:

sudo ./setup-undervolt.sh     # installs the 'power' command
power -set -100                # apply -100mV to both planes
power -set -120 -100           # or split: -120mV core, -100mV cache

Recommended: Apply with a Safety Margin

If your scan finds -120mV stable, apply -100mV for daily use.

A stress test can't cover every possible workload, temperature, and power state your CPU will encounter over months of use. Keeping a ~20mV safety margin ensures rock-solid stability in all conditions — different ambient temperatures, dust buildup, sleep/wake transitions, specific application workloads the stress test didn't hit. You still get the vast majority of the performance benefit (the gains have diminishing returns at deeper offsets anyway).


Configuration

Edit undervolt-finder.conf to define your test steps. The file includes 5 preset configurations — uncomment the one that fits your needs:

# ── Timing ──────────────────────────────────────────
stress_minutes    10        # stress duration per step
final_minutes     30        # final validation duration

# ── Steps ───────────────────────────────────────────
#              core    cache
step           -80     -80
step           -100    -100
step           -120    -120

Presets Included

Preset Range Best For
Safe / First Timer -50 to -100 mV First time undervolting, minimal risk
Standard Range -80 to -120 mV Most users, good balance of speed and coverage
Full Sweep -50 to -160 mV Finding your chip's absolute limit
Split Core/Cache Varied Advanced users tuning each plane independently
Aggressive -120 to -180 mV Users who already know their chip is good

Tips

  • Cache is often less tolerant than core — if stability testing fails, try keeping cache higher (less negative) than core
  • Start conservative — you can always run again with deeper offsets
  • Steps are tested in order — testing stops at the first failure, so put aggressive values last

The power Command

After running setup-undervolt.sh, you get the power command in your terminal:

$ power

══════════════════════════════════════
  POWER STATUS
══════════════════════════════════════

  Undervolt
  Offset:  -100mV (Core + Cache)
  Service: active, enabled at boot

  CPU
  Avg freq:  1420 MHz
  Range:     800–1906 MHz
  Pkg temp:  54°C
  Governor:  powersave

  GPU
  Model:     NVIDIA GeForce RTX 5070 Laptop GPU
  Temp:      41°C
  Power:     3.54W
  Clock:     180 MHz
  Usage:     0%

  Battery
  Level:     100%
  Status:    Full
  Health:    98.8%
  Cycles:    16

══════════════════════════════════════
  power -set <mV> | -reset | -h

Commands

Command Description
power Show undervolt status, CPU, GPU, battery, memory stats
power -set -100 Apply -100mV to both core and cache
power -set -120 -100 Apply -120mV core, -100mV cache
power -reset Remove undervolt and disable boot service
power -h Show help

The -set command computes the correct MSR values, applies the undervolt immediately, writes a systemd service for boot persistence, and enables it — all in one step.


Files

File Purpose
undervolt-finder.sh Main scanner script — runs stress tests and generates reports
undervolt-finder.conf Test configuration — edit steps, timing, presets here
setup-undervolt.sh Installer — adds the power command to your shell
report.txt Plain text report (generated after scan)
report.html HTML report with styling (generated after scan)
checkpoint Crash recovery state (auto-managed)
results.log Detailed run log (auto-managed)

How It Works

  1. Loads your config — reads test steps from undervolt-finder.conf
  2. Installs dependenciesmsr-tools, stress-ng, lm-sensors from official Ubuntu repos
  3. Captures baseline — measures idle temperature, power, and runs a full stress test at stock voltage (0mV) for comparison
  4. Scans each step — applies the core/cache undervolt via the Intel FIVR OC Mailbox (MSR 0x150), then runs stress-ng with FFT workload and --verify flag to catch any compute errors
  5. Final validation — the deepest passing step gets an extended stress test (default 30 minutes)
  6. Generates reports — plain text and HTML with all data, comparison vs baseline, and copy-paste systemd service for permanent application
  7. Resets to stock — voltage is always reset to 0mV on exit, even on Ctrl+C

Safety

  • Undervolting cannot damage your CPU. It reduces voltage — the opposite of what causes silicon degradation. The worst case is an instant crash/freeze, after which you reboot at stock voltage with zero hardware impact.
  • No persistent changes — the scanner resets voltage to 0mV on exit. Nothing is modified permanently unless you explicitly run power -set.
  • Crash recovery — if your system hard-crashes during a test, the script detects it on next run via checkpoint files and marks that step as failed.

Applying to Windows

If you used the live boot method to find your stable offset, apply it on Windows using:

  • Intel XTU — Intel's official overclocking tool. Set the Core Voltage Offset and Cache Voltage Offset to your stable values.
  • ThrottleStop — lightweight alternative. Go to FIVR → CPU Core and CPU Cache → set Offset Voltage.

Both tools work with Secure Boot enabled on Windows.


Tested On

  • OS: Ubuntu 24.04 LTS (kernel 6.17)
  • CPU: Intel Core i7-13650HX (6P + 8E cores, 20 threads)
  • Laptop: Lenovo Legion with RTX 5070 Laptop GPU
  • Result: -120mV stable on both core and cache, ~9% sustained throughput improvement

Should work on any Intel system with an unlocked FIVR OC Mailbox. Community reports of success on:

  • Lenovo Legion, LOQ series
  • ASUS ROG Strix, Zephyrus
  • HP Omen
  • MSI Raider, Stealth
  • Desktop K/KF/X processors

FAQ

Q: Can this damage my CPU? No. Undervolting reduces voltage — the opposite of what harms silicon. An unstable undervolt causes an instant crash, not degradation. Reboot and you're back to normal.

Q: Do I need to install Linux? No. You can live boot Ubuntu from a USB stick, run the scan, and apply the result to Windows.

Q: Does the undervolt persist across reboots? Only if you set it up with power -set. The scanner itself always resets to stock on exit.

Q: My BIOS doesn't have an overclocking option. Some laptops lock the FIVR OC Mailbox at the firmware level. If wrmsr fails even with Secure Boot disabled, your system may not support voltage adjustment.

Q: Should I apply the exact offset the scanner found? No — apply ~20mV less than your maximum stable offset. If the scan finds -120mV stable, use -100mV daily. Stress tests can't cover every edge case (ambient temperature swings, specific game workloads, sleep/wake transitions). The safety margin costs almost nothing in performance — the gains have diminishing returns at deeper offsets — but prevents rare crashes months down the line.

Q: Will this work on AMD CPUs? No. This tool uses the Intel FIVR OC Mailbox (MSR 0x150) which is Intel-specific. AMD uses Curve Optimizer through a different interface.


License

MIT — use it, modify it, share it.


Keywords: intel undervolt linux, automatic undervolt finder, cpu undervolt tool, stress test undervolt, intel 13th gen undervolt, 13650HX undervolt, raptor lake undervolt, linux msr undervolt, undervolt without linux install, live boot undervolt, throttlestop linux alternative, intel xtu linux, laptop undervolt linux, reduce cpu temperature linux, improve laptop battery life linux

About

Automatically find the maximum stable CPU undervolt for Intel processors on Linux. No guesswork, no manual tuning — just run the script and get a verified, stress-tested undervolt offset for your specific chip.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages