Repository navigation
Releases: mglourido/PYREN
Release list
V0.2.0
0.2.0
Frontend
UI-exposed checks have been reorganized, more general checks added, and a fan RPM min/max calibration check added (the same calibration performed when installing the driver; this lets you know when the driver needs recalibrating)
Minor translation fixes
Minor UI/UX changes
Vital data refresh (CPU, GPU, RAM, disks, network, processes) now fully pauses when you're not looking at a screen that displays it (Home, Vital Data, Performance, Advanced, Network). Previously it kept polling the daemon every 2s regardless of screen (Settings, Lighting, Cleanup...), which on laptops with a dedicated GPU kept the Nvidia driver needlessly awake in the background. Refresh resumes instantly when returning to one of those screens.
Installer
Improved installer; the gtk4-layer-shell package is now handled by the installer in case the user doesn't have it
Fixed a possible bug at the end of installation where the generated .desktop file could fail to link correctly to the app's bin
GitHub
Improved the push GitHub workflow: more checks, code formatting, fixed outdated tests
Hardware safety
Added guards on fans, performance profiles, and lighting so nothing can run that could damage the hardware.
Fans: thermal safety checker (enabled by default): if it's hot and RPM isn't rising, switches to automatic mode; if that still doesn't raise it, switches to maximum until it cools down, then restores your previous mode. Maximum forced above 90°C. If the temperature sensor fails, fans switch to maximum or automatic depending on a new setting (maximum by default). When the daemon closes (or crashes), fans return to automatic control. Calibration and speed checks abort above 60°C. Curve validation (can't decrease speed as temperature rises). Stalled fan detection.
Performance profiles: power and turbo limits are not written unless the user has changed them. Power limits are validated for consistency before being applied. Detects if the firmware locks the limits (RAPL) and if another power manager is active (TLP, tuned...) to avoid conflicting with it. OS mode switching is disabled by default.
Lighting: in four-zone mode, writes only happen if the firmware's response matches the expected shape (option to allow truncated responses, enabled by default for compatibility). Only one process can write to the lighting hardware at a time.
Bugs
Fixed a thermal safety bug that caused the fan's automatic controller to trigger unexpectedly at high temperatures (3 simultaneous bugs fixed)
Debugging
Added a complete logging system for PYREN (tauri, daemons...). Logs are split between .cache/pyren and /var/cache/pyren/
Tests
Added tests for the pyren/app Tauri app
Full testing of function behavior (setting-by-setting testing still pending, not all are tested)
V0.1.3: fix(rgb): stop fabricating fourZone's fourth zone
V 0.1.3
This version introduces major improvements and adjustments for manual control of performance profiles.
Better support for performance profile controllers (Profiles daemon, tlp, auto-cpufreq, etc.).
Improved lighting section: configuration saving, effects mode (adds wave animations, etc.), new default palettes, new settings, and
lighting controller (daemon) improvements.
Reorganization of settings due to the number of new options.
RPMs for all fans can now be viewed, not just the main one (CPU).
UI/UX and responsiveness improvements.
Additional UI themes added.
Developer tool improvements.
The RGB daemon no longer shuts down if the user disables the automatic profile control daemon.
The RGB daemon now saves and restores the last RGB state; previously, a bug would leave the keyboard without RGB lighting until
it was reconfigured in Pyren.
The daemon now corrects RGB control bytes.
V 0.1.2
V 0.1.1
V0.1.0
First public release. Everything below is built, wired end to end
(daemon ↔ app ↔ pyren-ctl) and confirmed against the development
laptop; TEST.md is the feature-by-feature record of what has actually
been exercised on hardware and what has not.
Added
- Daemon (
pyren-daemon): a privileged Rust host process that loads
the hardware modules and serves them over a0660,pyren-group Unix
socket — a local user outside the group cannot reach a root daemon.
Installs its own systemd unit withpyren-daemon --install-service. - Desktop app (
pyren): the full OMEN Gaming Hub-style surface —
dashboard, system vitals (basic + advanced), performance control, GPU
overclocking, fan cleaning, lighting, graphics switcher, network
booster, key mapping, settings, drivers and help. Bilingual (en/es),
settings persisted to disk, live progress overlay for driver actions,
simulated readings when no daemon is reachable. - On-screen display (
pyren-osd): a GTK4 layer-shell widget the
performance key puts on screen; started by the app, or as a user
service. pyren-ctl: shell client for a running daemon —status,
power set|tune|auto|os-profile,fan set|curve|diagnose|calibrate,
rgb,gpu,network,keymap,oc,--jsonon anything.pyren-check: standalone compatibility probe (no daemon, socket or
GUI), with a dependency-free shell twin intools/pyren-check.sh.- Monitoring: CPU per core, memory, hwmon temperatures and fans,
disks, network, GPU (NVIDIA vianvidia-smi, DRM sysfs), top
processes. Generic Linux — works on any machine. - Machine identification and a compatibility verdict derived from
what the hardware modules actually accept, never from a board list. - Power profiles: Eco / Balanced / Performance / Unlimited as the
firmware profile and the OS profile (via power-profiles-daemon) as
separate switches, plus a package power envelope that ships untouched
until someone measures their machine. Auto-switch supervisor for
battery / load / heat. - Fan control:
auto/max/manual/curve, a curve followed
on the daemon's thread with hysteresis, calibration, and a self-test
with three front ends kept in step by a parity test. The reverse-spin
fan cleaner is ported (never yet run against firmware that has it). - Driver installer: vendors the patched
hp-wmitree, works out what
an install needs (board id, driver table, measured fan ceiling), and
drives DKMS or the distribution's kernel hook — inspect → plan → apply. - Lighting: the 4-zone ACPI lightbar, both dialects (
fourZone,
kernelZones), auto-picked or pinned. - GPU switching:
gpu_mux_mode(hybrid↔discrete), written and
read back. - GPU overclocking: core and memory offsets and a clock lock through
NVML (no X, noCoolbits), behind a consent gate and a
revert-on-lapse timer; reverts on a reported GPU fault. - Network booster: system-wide
cake/fq_codelon the default
route. - Key mapping: an evdev-level remapper over
/dev/uinput(built and
wired, not yet run against real hardware). - Packaging:
tools/release.shbuilds an optimized, self-contained
pyren-<version>-x86_64-linux.tar.gz;install/install.shinstalls it
system-wide, sets up both systemd units and thepyrengroup. See
install/INSTALL.md.
Known limitations
See dev/TODO.md and TEST.md. In brief: key mapping and the GPU MUX
reboot swap have not been watched on hardware; the fan cleaner and the
per-key USB RGB path are unproven / unported; no power profile raises a
limit above what the firmware shipped.