Skip to content

Releases: HorizonUnix/ZenTune

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 06:53

Installation

curl -fsSL https://raw.githubusercontent.com/HorizonUnix/ZenTune/main/install.sh | bash

UXTU4Linux is now ZenTune. This release drops the dmidecode system dependency, adds a way to override detected CPU info, adds macOS support

Hardware detection

  • No more dmidecode. CPU identity and board info are now read from /proc/cpuinfo, /sys, and zenmaster, which every distro already exposes.
  • Hardware tab shows Device and Processor only. Memory Information (RAM manufacturer/part number/speed, which only ever came from dmidecode's SMBIOS read), Battery Information (health/cycle detail), and Processor's cores/threads/clock/cache rows have all been dropped. The Processor card now shows exactly what's detected (name, codename, architecture, signature).
  • Edit CPU info. A new "Edit CPU info" button in Settings lets you override the detected CPU name, useful for demoing a different model's premade preset. It doesn't change your real detected architecture/family, so it can't affect how the daemon talks to your actual hardware.

macOS support

  • ZenTune now runs on macOS (Hackintosh, AMD Ryzen CPU). Tuning, presets and automations all work the same as on Linux.
  • Two SMU access paths. The daemon reaches the CPU through the DirectHW kernel extension, or a kext-free fallback through IOKit's IOPCIBridge service (needs the debug=0x144 boot-arg, tuning only, no live sensor graphs). See the macOS Installation guide.
  • launchd instead of systemd. The background daemon installs as a launchd job (com.horizonunix.zentune) and gets the same in-app management (install/restart/view logs/uninstall) as the systemd service on Linux.
  • Startup backend check. If neither DirectHW nor the kext-free fallback is usable, the app now shows a clear message pointing at the install guide, instead of silently failing to apply presets, matching the existing Secure Boot/ryzen_smu check on Linux.
  • Adaptive Mode stays Linux-only for now. The tab and its Settings toggle are hidden automatically on macOS.

Updates and repair

  • Dependencies always stay current. Both the in-app updater and the daemon's "Install / repair" action now always upgrade to the latest versions pinned in requirements.txt, instead of only installing what's missing. This closes a gap where the daemon's venv bootstrap didn't even check for zenmaster.
  • Manual runs fail cleanly. Running UXTU4Linux.py directly without pip install -r requirements.txt first now shows a clear message telling you what to install, instead of a raw traceback.

Renamed to ZenTune

  • UXTU4Linux is now ZenTune. Install paths, the systemd service, the socket, and the zentune command have all moved to match. Config and custom presets carry over automatically.
  • v1.1.0 users migrate automatically. If you're still on v1.1.0, using "Check for updates" one more time will walk you through a one-time automatic migration to ZenTune.

Full changelog: 1.1.0...2.0.0

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Jun 03:54

Installation

curl -fsSL https://raw.githubusercontent.com/HorizonUnix/UXTU4Linux/main/install.sh | bash

The headline addition is PCI direct access: the daemon now talks to the CPU without ryzen_smu on most systems. ryzen_smu is only needed when Secure Boot is on, because kernel lockdown blocks raw PCI config writes in that case. The Status tab was reworked to show adaptive state alongside daemon state in one panel, the Home tab picked up iGPU graphs, and the installer now handles non-systemd setups and distros with no supported package manager.

New PCI direct access backend

  • No kernel module on most systems. When Secure Boot is off, the daemon accesses the SMU through the northbridge PCI config space directly. ryzen_smu is still required when Secure Boot is on.

Status tab

  • Merged into one panel. Adaptive state, automations and SMU output are now all in the main status panel instead of a separate card. The panel refreshes every second while the tab is open.

Home tab

  • iGPU graphs. iGPU clock and usage graphs are now shown on APUs when the hardware supports it.

Version mismatch detection

  • Notify on version mismatch. If the running daemon is a different version than the TUI, the app shows a warning at startup. Usually happens after a partial update — restart the daemon to fix it.

Updater

  • Deps reinstalled on update. The updater now reinstalls requirements.txt into the venv as part of the update, so a new dependency added in a release is picked up automatically. (Fixed #98)

Under the hood

  • Code cleanup and performance. Dead code removed across the daemon, TUI and engine. The status refresh loop was simplified and the async thread count reduced. Several hot paths were tightened to lower CPU overhead during idle polling.
  • Bug fixes. Various minor bugs fixed across the TUI, daemon and update flow.

Full changelog: https://github.com/HorizonUnix/UXTU4Linux/compare/1.0.0...1.1.0

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 07:12

Installation

curl -fsSL https://raw.githubusercontent.com/HorizonUnix/UXTU4Linux/main/install.sh | bash

After two years of development, UXTU4Linux finally reaches 1.0.0 with all the core features in place. The headline addition is Adaptive Mode: instead of holding one fixed preset, the app now tunes your CPU live from temperature and load. The Home tab gained live graphs, Automations were rebuilt to be simpler, and the whole codebase was reorganized underneath.

Updating from v0.9.x and v0.8.x? v1.0.0 adds one new dependency (textual-plotext, used for the Home graphs). Re-run the installer above to pick it up while keeping your settings and custom presets.

Prefer not to reinstall? Add it to the existing environment by hand, then restart the daemon:

/opt/uxtu4linux/venv/bin/pip install textual textual-plotext
sudo systemctl restart uxtu4linux.service

Adaptive Mode

  • Live tuning. A new Adaptive Mode tab raises and lowers your power limit from temperature and load, keeping the chip as fast as it can run within the temperature you set.
  • More than power. It can also tune the all-core Curve Optimiser, push and pull the iGPU clocks, hold an ASUS power profile and tune an NVIDIA dGPU, all on the same loop.
  • Your own adaptive presets. Save, duplicate and delete adaptive presets just like custom ones, and have the daemon start your chosen one automatically on boot.

Live Home dashboard

  • Real-time graphs. The Home tab now plots CPU temperature, power, clock and usage as they happen, alongside the quick links to every other tab.

Automations

  • Override switch removed. Automations are active whenever you set a Battery Charge or Battery Discharge preset. Leave a slot empty to keep whatever is already applied for that power state.
  • Apply any time. Applying a preset by hand is no longer blocked while automations are set; the automation simply re-applies the right preset on the next AC/battery change.

Settings

  • Choose your starting tab. Pick which tab the app opens on from Settings.

Under the hood

  • A large reorganization of the daemon and the interface into smaller, focused modules, plus dead-code cleanup, for a cleaner and more maintainable foundation.

Note

  • With official UXTU support for Linux on the way, this release marks the completion of the project: from now on there will only be bug fixes and improvements. If you want to add new features and have some development experience, take a look at https://github.com/HorizonUnix/UXTU4Linux/wiki/Developer-Documentation to learn more about UXTU4Linux and become a contributor!

Full changelog: https://github.com/HorizonUnix/UXTU4Linux/compare/0.9.1...1.0.0

v0.9.1

Choose a tag to compare

@github-actions github-actions released this 21 Jun 10:50

Installation

curl -fsSL https://raw.githubusercontent.com/HorizonUnix/UXTU4Linux/main/install.sh | bash

Updating from v0.8.x? v0.9.0 adds a new dependency (Textual), so the interface won't start until your virtual environment has it. The easiest path is to re-run the installer above
Prefer not to reinstall? Add the dependencies to the existing environment by hand, then restart the daemon:

/opt/uxtu4linux/venv/bin/pip install textual pyzmq
sudo systemctl restart uxtu4linux.service

NVIDIA Tuning

  • NVIDIA tuning has been fully migrated to NVML and no longer relies on the nvidia-smi command. GPU power limit and clock lock controls now call the NVIDIA driver directly through NVML alongside the core and memory offsets that already use it.

  • Desktop NVIDIA GPU power limit support. You can now set a power limit on desktop NVIDIA GPUs. The control reads your GPU's actual power limit range and current value from NVML, then adjusts the minimum, maximum, and current values to match your hardware. On laptop GPUs, where power limits are controlled by Dynamic Boost and cannot be adjusted (NVML reports NOT_SUPPORTED), the control is automatically hidden.

  • Wider GPU clock offset ranges. Core and memory clock offsets now support values from -1000 MHz to +4000 MHz.

New NVIDIA ROP Check

  • NVIDIA ROP check for RTX 4000 and 5000 series GPUs. On startup, UXTU4Linux now reads your GPU's actual ROP count and warns you if it is lower than the expected value for your model.

Premade Presets

  • See the command. Selecting a premade preset now displays the exact command being applied in a dedicated output box, so you can always see what is being sent to your CPU.

Full changelog: https://github.com/HorizonUnix/UXTU4Linux/compare/0.9.0...0.9.1

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 20 Jun 03:44

Installation

curl -fsSL https://raw.githubusercontent.com/HorizonUnix/UXTU4Linux/main/install.sh | bash

Starting from v0.9.0, we reimagine how you interact with UXTU4Linux. The entire interface is new, built from the ground up on Textual: a fast, modern terminal app you drive with the mouse or the keyboard. Tuning your Ryzen CPU has never felt this effortless on Linux.

Everything now lives in one window, organized into tabs you can reach in an instant. Apply a preset, craft your own, set up automations, and watch your CPU's live status, all without leaving the screen.

Updating from v0.8.x? v0.9.0 adds a new dependency (Textual), so the interface won't start until your virtual environment has it. The easiest path is to re-run the installer, which now installs the requirements for you and keeps your settings and custom presets:

curl -fsSL https://raw.githubusercontent.com/HorizonUnix/UXTU4Linux/main/install.sh | bash

Prefer not to reinstall? Add the dependencies to the existing environment by hand, then restart the daemon:

/opt/uxtu4linux/venv/bin/pip install textual pyzmq
sudo systemctl restart uxtu4linux.service

A brand-new interface

  • Tabs, not menus. Home, Premade Presets, Custom Presets, Automations, System Info, Status and Settings, each one a keystroke or a click away.
  • Mouse and keyboard. Point and click, or fly through with number keys. Whatever feels natural.
  • Themes. Choose a look that suits you. Your choice is remembered.
  • A guided first run. A three-step setup wizard installs the background service and detects your hardware on its own, then gets out of your way.

Presets, refined

  • Premade presets apply in a single tap, each with a clear description of what it does.
  • The Custom Preset Editor, rebuilt as a live form: flip a switch, type a value, apply or save. Sections appear only for what your chip actually supports.

Automations that just work

  • Switch presets automatically between AC and battery, and re-apply on resume from sleep, suspend or hibernation.
  • Plain-language explanations throughout, so it's clear what every option does before you turn it on.

Live status, at a glance

  • A dedicated Status tab shows the active preset, your automations, the power source, and the exact result of the last apply. It refreshes as things change, and follows your reapply interval.

Rock-solid by design

  • The app and the background daemon now stay perfectly in step. Every change you make is reflected instantly and accurately.
  • Updating never touches your settings. Re-running the installer keeps your configuration and your custom presets exactly as they were.

Under the hood

  • A ground-up reorganization of the codebase for a cleaner, faster and more maintainable foundation.

Full changelog: https://github.com/HorizonUnix/UXTU4Linux/compare/0.8.1...0.9.0

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 14 Jun 14:11

Installation

curl -fsSL https://raw.githubusercontent.com/HorizonUnix/UXTU4Linux/main/install.sh | bash

A small follow-up to v0.8.0 with quality-of-life polish and fixes.

Improved

  • The ApplyOnStart setting now defaults to 0 (disabled).
  • Live Daemon Status screen: it now refreshes on its own while auto-reapply is running, so the power source, active preset and last-apply result stay up to date.
  • Clearer NVIDIA feedback: capping the GPU clock and setting core/VRAM offsets now report failures (including the driver's error).
  • More reliable cache-size detection in Hardware Information.

Internal

  • Removed unused code across the SMU, IPC and daemon modules.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 03:39

Installation

curl -fsSL https://raw.githubusercontent.com/HorizonUnix/UXTU4Linux/main/install.sh | bash

Starting from v0.8.0 we rebuilt UXTU4Linux from the ground up. The old version relied on a bundled ryzenadj binary to do the actual work; this one talks to your CPU directly, the same way the original Universal x86 Tuning Utility does on Windows. Along the way almost every part of the app got reworked: the preset engine, the Custom Preset Editor, the background daemon, the installer, the logs and the documentation. It is the biggest release UXTU4Linux has ever had, and the closest it has ever been to the real UXTU experience on Linux.

Talks to your CPU directly

UXTU4Linux now sends commands straight to the CPU through the ryzen_smu kernel module, and every command was checked one-to-one against the original UXTU, so presets behave exactly like they do on Windows. You also get honest feedback: the app shows you which commands your CPU accepted and which it rejected, instead of just hoping for the best.

Heads up before you update: this release needs the ryzen_smu kernel module (version 0.1.7 or newer). It takes a few minutes to set up and the installation guide walks you through it step by step for your distro, Secure Boot included.

Your presets can now control the whole machine

The Custom Preset Editor has a new System section, so one preset can set up everything at once:

  • Power Profile: Power Saver, Balanced or Performance.
  • ASUS Performance Mode: Silent, Balanced or Turbo fan modes on ASUS laptops.
  • ASUS GPU Eco: turn the discrete GPU off to save battery.
  • ASUS GPU MUX: switch between dGPU (Ultimate) and Optimus (Hybrid) mode. Applies after a reboot.
  • CCD Affinity: on dual-CCD CPUs like the X3D chips, keep your games on the V-Cache die.

And if you have an NVIDIA card, the editor can now cap its max clock and set core/VRAM offsets too.

More to tune

New fields in the editor: AMD Boost Profile, PBO Scalar, soft clock limits (CPU, Infinity Fabric, SoC, video engine and data clocks), and static overclocking with CPU clock and voltage. Every field has the same description as the original UXTU, so guides written for the Windows version apply directly.

Easier to live with

  • Logs you can actually read: the daemon now tells you what happened and why, like Applied preset 'Eco' (power source changed from AC to battery). or Applied preset 'Performance' (woke from suspend after ~32m).
  • Clearer errors: if something is missing at startup, the app tells you exactly what and links you to the exact wiki section that fixes it, instead of dumping a wall of commands.
  • A proper status screen: daemon version, power source, active preset, auto-reapply, automations and whether your last preset was accepted, all in one place.
  • A friendlier setup: the first-run wizard is three clear steps, and there's a guided path for systems without systemd.
  • A smarter installer: installs what it needs through your package manager and updates existing installations safely.

Documentation

There's now a full wiki: step-by-step installation for every major distro, a troubleshooting page, a guide to the Custom Preset Editor, a reference explaining every single parameter, and developer documentation for contributors.

Removed

  • The bundled ryzenadj binary (replaced by the native backend)

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 06 Jun 06:49

What's new?

  • Added support for the Curve Optimiser Per-Core (AMD CCD1/CCD2) in the Custom Preset Editor.

v0.7.02

Choose a tag to compare

@github-actions github-actions released this 01 Jun 15:01
21528ef

Hotfixes

  • The daemon should never exit when detecting that Secure Boot is enabled and the kernel module is unsigned.

Notes

  • Support for Curve Optimizer Per-Core is postponed due to development branch conflicts and a lack of testing hardware.

v0.7.01

Choose a tag to compare

@github-actions github-actions released this 31 May 03:43

What's new?

  • Added support for the Curve Optimiser (All Core and iGPU) in the Custom Preset Editor.

Note

  • The Curve Optimiser may not work on your CPU, even if its generation is supported, as it is currently limited to Ryzen 9 SKUs.
  • Support for Curve Optimiser Per-Core is planned for v0.7.02 due to development branch conflicts and a lack of testing hardware.