- Resolved issue #101
UXTU4Linux is now ZenTune. This release drops the dmidecode system dependency, adds a way to override detected CPU info, adds macOS support
- No more dmidecode. CPU identity and board info are now read from
/proc/cpuinfo,/sys, andzenmaster, 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.
- 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
IOPCIBridgeservice (needs thedebug=0x144boot-arg, tuning only, no live sensor graphs). See the macOS Installation guide. - launchd instead of systemd. The background daemon installs as a
launchdjob (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.
- 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 forzenmaster. - Manual runs fail cleanly. Running
UXTU4Linux.pydirectly withoutpip install -r requirements.txtfirst now shows a clear message telling you what to install, instead of a raw traceback.
- UXTU4Linux is now ZenTune. Install paths, the systemd service, the socket, and the
zentunecommand 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: https://github.com/HorizonUnix/ZenTune/compare/1.1.0...2.0.0
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.
- 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.
- 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.
- iGPU graphs. iGPU clock and usage graphs are now shown on APUs when the hardware supports it.
- 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.
- Deps reinstalled on update. The updater now reinstalls
requirements.txtinto the venv as part of the update, so a new dependency added in a release is picked up automatically. (Fixed #98)
- 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
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- 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.
- 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.
- 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.
- Choose your starting tab. Pick which tab the app opens on from Settings.
- A large reorganization of the daemon and the interface into smaller, focused modules, plus dead-code cleanup, for a cleaner and more maintainable foundation.
- 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
-
NVIDIA tuning has been fully migrated to NVML and no longer relies on the
nvidia-smicommand. 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.
- 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.
- 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
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 | bashPrefer 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- 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.
- 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.
- 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.
- 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.
- 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.
- 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
A small follow-up to v0.8.0 with quality-of-life polish and fixes.
- The
ApplyOnStartsetting 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.
- Removed unused code across the SMU, IPC and daemon modules.
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.
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_smukernel 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.
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.
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.
- 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).orApplied 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.
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.
- The bundled
ryzenadjbinary (replaced by the native backend)
- Added support for the Curve Optimiser Per-Core (AMD CCD1/CCD2) in the Custom Preset Editor.
- The daemon should never exit when detecting that Secure Boot is enabled and the kernel module is unsigned.
- Support for Curve Optimizer Per-Core is postponed due to development branch conflicts and a lack of testing hardware.
- Added support for the Curve Optimiser (All Core and iGPU) in the Custom Preset Editor.
- 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.02due to development branch conflicts and a lack of testing hardware.
- On Resume: Configure a preset to apply automatically each time the system wakes from sleep or suspend
OnResumeconfig key for resume preset selectionVariantconfig key to support Framework Laptop hardware detection and dedicated premade presets
- Switched to the official musl static ryzenadj binary, replacing the manylinux build
- Consolidated 25 individual preset files from the
Presets/folder into a singlepresets.pymodule for easier maintenance - Added descriptions for AC and DC presets
- Renamed
custom_presets.jsontocustom.json - Various bug fixes
- Minor UI refinements
- General codebase cleanup
Build your own power preset from scratch using a keyboard-driven editor. Tune temperature limits, power limits, VRM current limits, and iGPU clock speeds. All with real-time hints explaining what each setting does. Presets are saved by name and show up alongside the built-in presets everywhere in the app.
Set a different preset for AC and battery automatically. When you plug in, the AC preset kicks in. When you unplug, the battery preset takes over. The daemon watches for power state changes in the background. Each slot is optional; leaving one as (None) just uses whatever preset you picked in Power Management for that state.
- Preset descriptions: hovering over Eco, Balance, Performance, or Extreme now shows a short description of what that preset does.
- Hardware Information now has a proper title and cleaner section layout.
- Daemon logs are cleaner and more readable in
journalctl. - Version updates now correctly rank
0.6.1as newer than0.6.01. - Updates preserve your settings: both
config.iniand your custom presets are backed up and restored automatically during an update.
- Dynamic Mode has been replaced by Automations. It was limited to Extreme on AC and Eco on battery with no flexibility.
- Hardware Information now includes a Battery section
- Reads directly from kernel sysfs (/sys/class/power_supply/)
- Shows status, charge level, health, cycle count, full charge, design capacity, and charge rate
- Supports energy-based (µWh), charge × voltage, and raw mAh reporting depending on driver
- Capacity reported in mWh where voltage data is available, mAh otherwise
- Correctly identifies system battery over peripheral batteries (e.g. Logitech HID devices)
- TUI and Daemon now prevent duplicate instances
- Redundant startup log lines removed
- Debug setting changes in Settings now reload instantly in the running daemon without a restart
- Daemon logging level now follows the Debug setting at startup (DEBUG vs INFO)
- Debug mode in the daemon now logs the ryzenadj command and per-loop tick state
- Secure Boot and ryzen_smu check moved to daemon startup
- Adjusted presets for AMDCPU
- Minor UI refinements
Introduce a background daemon-based architecture for applying Ryzen power presets, modernize the terminal UI.
New Features:
- Add a systemd-managed background daemon with IPC for applying, looping, and dynamically switching RyzenAdj presets.
- Introduce a richer terminal menu UI with keyboard navigation, status-aware menus, and an About screen with update integration.
- Add system checks for Secure Boot blocking ryzen_smu and for dmidecode availability, guiding users with troubleshooting output.
Bug Fixes:
- Ensure preset and dynamic mode state is sourced from the daemon where possible, reducing drift between UI and applied settings.
- Harden handling of missing or invalid saved presets by falling back to the setup wizard or reporting clear errors.
- Validate RyzenAdj arguments in the daemon to avoid applying malformed or unsafe command payloads.
Enhancements:
- Refactor power management flow to use the daemon for all SMU operations, simplifying apply/reapply logic and centralizing dynamic mode handling.
- Improve hardware info parsing and presentation, including better dmidecode access via the daemon and clearer, styled output.
- Streamline settings into a single menu with toggleable options and an interval editor that immediately re-applies saved presets when changed.
- Update startup logic to verify and repair the systemd service path, auto-apply presets only when no mode is active, and enforce Linux-only support.
- Simplify and modernize config handling, version metadata, and menu structures across modules.
Updating from v0.5.x may cause issues. Please refer to Linux Installation Guide
v0.5.22will be the last version to support the macOS branch.
- Resolve issue #23 by implementing a robust search path for the
dmidecodebinary (_find_dmidecode) and storing its absolute path to preventPATHresolution errors withinsudosubshells (thx @kstutz01). - Minor tweaks to
about.pyandpower.py. - Always
chmod +xbinaries when starting. - Default sleep time is now
3s instead of30s.
- Cleaned up and refined most of the codebase after the huge refactor from
v0.5.0
- Removed unused
SoftwareUpdate.pystandalone updater from theAssetsfolder - Removed unused fields from
config.toml:Assets,voltage,max speed,current speed,core count,core enabled, andthread count - Implemented a new method for handling sudo and non-sudo command execution
- Implemented binary validation for
ryzenadjanddmidecodeat startup - Implemented a new method to retrieve and display detailed hardware information
- Added run-on-startup support via XDG Autostart with automatic config path registration
- Fixed an issue where
updater.pycould fail to relaunch the script after an update
- Implemented a new method to re-register Login Items on startup
The entire codebase has been rewritten from a single monolithic script into a proper Python package. UXTU4Unix.py is now a thin entry point; all logic lives in focused modules under Assets/Modules/.
UXTU4Unix/
├── UXTU4Unix.py
└── Assets/
├── SoftwareUpdate.py
├── Darwin/ ryzenadj, dmidecode
├── Linux/ ryzenadj
├── Presets/
└── Modules/
├── config.py central constants, paths, config singleton
├── hardware.py CPU detection, codename, NVRAM check
├── power.py preset loading, ryzenadj, dynamic mode
├── settings.py all settings sub-menus
├── setup.py first-run wizard, integrity check
├── ui.py banner, clear, prompts
├── updater.py version check, self-update
├── installer.py macOS EFI/plist dependency installer
├── about.py about screen
└── secure_password.py keyring wrapper
- Dynamic Mode AC detection (Linux) now correctly reads all AC adapter types (
Mains,USB,USB_C,USB_PD,USB_PD_DRP,USB_C_DRP) and falls back gracefully on desktops with no battery - previously always returnedExtremeon Linux. - Login Item path validation (macOS) - stale Login Item entries (wrong path, moved app, leftover from Trash) are detected and removed automatically before re-registering the correct path.
- Dynamic Mode preset args - in reapply loop, Dynamic Mode now correctly fetches the actual preset arguments for
Extreme/Ecofrom the preset table instead of passing the mode name string as ryzenadj args.
- Replaced long
if/elifchains in codename detection withmatch/case(Python 3.10+). _toggle_menu()helper insettings.pyeliminates six copy-pasted enable/disable sub-menus.- Config access centralized,
config.pyowns all paths, constants, and theConfigParsersingleton; no module holds its owncfgobject. SoftwareUpdate.pyis now standalone (callable directly) and also used internally byupdater.py, eliminating duplicated zip/swap logic.
- Rework how dynamic mode works on Linux
- Update detection for new CPU models and presets from UXTU
- Resize the window to 80x35
- Update
UXTU4Unix.commandfor macOS
- Merged
LinuxandmacOSbranches into a single main branch that supports both operating systems in the same file. - Removed
logging.
- Added support for RyzenAdj version
0.17.0.
- The
v0.4.xseries will be the last version to support macOS. - Future development will focus on extending Linux support.
- Existed config file from
v0.3.xwill be reset due to incompatibility. - Don't use Updater from
v0.3.xbecause it may cause incompatibility issues betweenv0.3.xandv0.4.xso please access download the latest version from GitHub.
- Updated CPU stepping code detection (based on https://github.com/JamesCJ60/Universal-x86-Tuning-Utility/blob/master/Universal%20x86%20Tuning%20Utility/Scripts/Family.cs)
- Updated CPU Presets (based on https://github.com/JamesCJ60/Universal-x86-Tuning-Utility/commit/3a4a5d5e9f16eb3d9f0db2c2ec1e77f37a1bb91a and https://github.com/JamesCJ60/Universal-x86-Tuning-Utility/commit/f58c6371954f6ff1945be4d3bcc84b4efd3641be)
- Updated RyzenAdj to latest commit https://github.com/FlyGoat/RyzenAdj/commit/8b0b7b915bf39a68d9f6be59c35a5ccd26b525cb
UXTU4Unix has entered the slow-development stage as UXTU is now planning to support the Linux platform. Since Hackintosh is also approaching end-of-life, this project will be deprecated once UXTU officially supports Linux.
- Support ryzenAdj v0.16.0
- Support macOS Sequoia
- Refactor code
- Fix DIR logic
- Fix
Custommode - Fix some bugs
- Extend Terminal window when called by
python3command instead of.commandfile
- Fix
ReApplysettings logic
- Moved from
AppleOSXto @HorizonUnix
- Fix the detection order of
GandGEAPU. - Remove the Intel check; RyzenAdj checks itself.
- Fix the issue with unsupported hardware
- Support CPU (Desktop CPU)
- Use UXTU codename instead of RyzenAdj for future support
- Improve logic to get presets
- Fix DIR
- Optimize code
- Get Family, Model to translate CPU/APU codename
- Use dmidecode to get CPU information
- Only get information for the first time, after that, read info from the config file
- Add a check for Intel chipset
- Fix logging file
- Support Hardware Information
- Extend Terminal or Shell Window to 100x30
- Use dmidecode from Acidanthera
- Fixed Phoenix support
- Removed Mendocino support because it is not supported by RyzenAdj
- Removed some old APU codenames and used RyzenAdj codenames instead
- Fixed some annoying issues with Settings, Apply preset, Dynamic mode, Auto reapply
- Forced to use Py3 instead of Py2
- Removed SSL check due to some issues
- Fixed and synced DIR logic with Linux
- Removed
SIPsettings because it is only for macOS
- Rename from
UXTU4MactoUXTU4Unix - Support Linux (tested on Debian-based distro)
- Rework project structure
- Removed GPU/APU info
- Fixed a bug with the Updater
- Fixed a bug with CFU
- Reformatted CLI
- Improved support for Mendocino APU
This is the first official commercial version for everyone, after numerous bug fixes and improvements
- Extended APU support based on RyzenAdj
- Supported RyzenAdj v0.15.0
- Removed some information in Hardware information
- Added a logic to preset
- Fixed a bug related to CFU
- Fixed various bugs related to the get_presets function
- Fixed the logic in the welcome_tutorial
- Added an SSL certificate check before running CFU to avoid hangs (thanks to @nlqanh524)
- Fix various bug related to Welcome tutorial and get presets
- Fix filename
- Extended presets based on UXTU's preset.
- Added support for each APU Generation Preset, similar to UXTU.
- Quick fix to Updater and CFU.
- Fix line error in
Hardware Information - New
9. DebugunderSettingsto enable/disable some debug processes
Currently, UXTU4Mac lacks CPU support because some commands in the original UXTU are incompatible with ryzenAdj.
- Quick fix to Updater and CFU
- Fix line error in
Hardware Information - New
9. DebugunderSettingsto enable/disable some debug processes
- No longer keep Logs folder
- Fixed a stupid bug about sudo password
- Restored debug function
- Removed/dropped support for FIP
- Removed FIP check in CFU
- Fixed various bugs related to
1. Presetsettings - Fixed various bugs related to Dynamic Mode
- Reworked some logic
- Default config file is now located in
UXTU4Mac/Assets - New config file structure
- Improved some processes
- Removed
Device Information - Removed
UXTU4Mac dependencies
- Now, if the script fails to fetch the latest version, it will retry 10 times. Afterward, it will ask whether to skip CFU or not.
- Completely reworked the entire code structure
- Improve user input handle
- Default Terminal window when open now 100x30 instead of 80x20
- Reorder code structure
- Reworked dynamic mode logic
- Now, instead of tracking processes, it will track the battery to switch suit modes
- Added a new logical check: if it's still the same mode, it will not reapply
- Added a new
4. Auto reapplyoption underSettingsto enable/disable auto reapply preset function - Default setting will disable auto reapply
- Properly ported preset from UXTU
- Added new presets
ACandDCwhich are for some APU/CPU
- Using a new banner
- Displaying CPU name under the banner
- Remove OcSnapShot
- Remove
DirectHW.kextsince ryzenAdj already do that with pciutils - Fix a bug about Dynamic Mode
- New
SIP Flagsunder Settings which change the required SIP flags
- Proper support for Dynamic mode
- Fix various bug about Dynamic mode and preset
- Fix a bug with Dynamic mode
- Support Dynamic mode aka Adaptive mode on UXTU, still in beta process
- Small changes to main menu, install menu and processes
- Rework CLI
- Remove some function in About UXTU4Mac
- Improve logic
- Small changes for code structure
- Fix a serious bug about
apply_smu - Rework some code structure
- Rebrand with new logo for CLI
- New command file thanks to @corpnewt source code
- Better experience
- Optimize code
- Fix a bug with built-in Updater
- Remove
syslibrary
- Fix a bug with CFU
- Fix a bug with
apply_smu - Change default SIP flags from
03080000to0B080000which higher than03080000
- Rework
Settingsmenu - Proper support for Login Items
- Change SIP flags from
7F080000to03080000
- Reworked the entire code structure
- Script now runs faster with better optimization
- Fix various bugs related to loops and other function
- Use While loop instead
threadingforapply_smua.k.arun_cmd
- Fix a bug with
Welcomesection - Proper config file check before start script
- Fix a bug when disable login items does not actually delete it
- Fix a bug with
run_cmdand related - Fix a bug with
Welcomesection - Fix a bug with
About UXTU4Macsection - Now will check both FIP and CFU status before disable one of them due to some issues
- Fix a lot of bug related to
Settingsand other sections - Default sleep time now
10s instead of3s - New Time Sleep settings under
Settingsto set sleep time - Improve handling about user option
- Enhance FIP, more secure and safe
- Rework
SettingsandWelcomesection - Add a build number
- Add a new update name
- Now
Settingshave these section:
P. Preset setting
F. FIP setting
C. CFU setting
L. Login Items setting
S. Sudo Password setting
- Support for Custom preset for config file
- Introduce FIP ( File Integrity Protection ) which protect main script file ( Beta ), disabled by default
- Now check SIP flags before running ryzenAdj
- Fix a bug when Updater doesn't delete zip file after update
- Now script will restart itself after update
- Now script will check DirectHW.kext and debug=0x144 before running ryzenAdj
- New section name
UXTU4Mac dependenciesunder About UXTU4Mac to check DirectHW.kext and debug=0x144
- Add a tester list
- Make CLI look better with a little rework
- Fix a bug with Install kext and dependencies
- Fix a bug with About UXTU4Mac
- Support backup
Logsfolder andconfig.iniwhen update UXTU4Mac - Support show changelog on updater
- Fix a bug with CFU
- Now users have another option to specify config.plist path for install kext and dependencies
- Add a note after install kext and dependencies
- Include a B. Back button when applying the preset
- Add
I. Install kexts and dependencies (Beta)to install kexts inOC/Kexts/and set SIP andboot-argsautomatically - Now, when running the script, it will always apply the preset; users can press B to go back to the main menu
- Remove
SkipWelcomein the config file - Use OCSnapShot from @corpnewt for snapshot config files
- When running the script for the first time, it will install kexts automatically
- Improved welcome setup
- Cleaned up
- Fixed a bug with CFU
- Support Updater
- Add
LoginItemsto the config file - Support force updating to the latest version under About UXTU4Mac
- Support applying presets from available presets beside loading from the config file
Please delete your old config.ini since it's from the 0.0.x series and incompatible with series 0.1.x
- Optimize code
- Add a logic to check sudo password
- Add a welcome tutorial (beta)
- Supported for CPU codename and SMU version properly ( replace for the long dict in
0.0.96) - Add some warning and note
- Fix and add some hardware information
- Make output look cleaner
- Support for more hardware information
- Fix a issue when no internet connection result a config override
- Support Hardware Information reader
- Switched to logging method
- Support logging to file ( Stored in
Logsfolder )
- Bring back some UXTU preset
- Add a
SkipCFUin config file to skip CFU when start (user customized) - Adjust some guide
- Support for Login Items in macOS ( aka Startup App )
- Refactored code
- Supported for custom preset
- Fix image not being shown on CFU
- Rework structure
- Optimize code
- Fix an issue when tool cannot instanly update config file
- Moved to @AppleOSX
- Removed useless Preset
- Add new
Autopreset
- Fix args for
Performancepreset - Add 3
forceoption forEco,Balance, andExtreme
- New CLI
- New About menu
- New
skipwelcomein config to skip welcome menu - Adjust args for
BalanceandExtremePreset
- Simplified and optimized code
- Now save password for the next run without require sudo password again
- Show current preset every loop
- Support CFU
- Support R&W config file
- Dropped supported for custom arg ( tempo )
- Turn verbose on for debugging
- Add a clear screen function
- Fix GitHub file type
- Fix env ( 1 and 255 status code )
- Intial commit
- Support RyzenAdj v0.14.0

