Skip to content

Quick Start

These examples assume you have installed z13ctl-plus and run sudo z13ctl-plus setup. Most direct hardware commands work without the daemon. Named presets, automatic power-source switching, display intents, and persisted state operations require it.

Prefer not to use the command line? Use Z13GUI+

Z13GUI+ provides touch-friendly controls for power automation, CPU policy, expanded telemetry, refresh rate, and tuning through the daemon. Display posture/rotation and scripting remain CLI/API workflows.


Power automation

Create or update the recommended source-specific presets, assign them, and apply the configuration for the current power source:

z13ctl-plus preset restore-recommended
z13ctl-plus preset policy --enable --ac "Plugged In" --battery "On Battery"
z13ctl-plus preset list

Apply any saved configuration manually without changing the assignments:

z13ctl-plus preset apply "On Battery"

The daemon preserves a manual selection until the next real AC/battery transition.


Display coordination

Publish internal-panel posture and, when needed, an explicit rotation override to the daemon's KDE display coordinator:

z13ctl-plus display posture tablet
z13ctl-plus display rotation right

The coordinator combines scale and preset refresh-rate changes without modifying external displays. Desktop and laptop use 150% scale; tablet uses 175% and preserves Plasma's current rotation unless an explicit rotation intent was sent.


Lighting

# Solid cyan at full brightness (keyboard + lightbar)
z13ctl-plus apply --color cyan --brightness high

# Breathing red, slow pulse
z13ctl-plus apply --mode breathe --color red --speed slow

# Breathing between two colors
z13ctl-plus apply --mode breathe --color hotpink --color2 blue

# Rainbow wave across both zones
z13ctl-plus apply --mode rainbow --speed normal

# Spectrum cycle, fast
z13ctl-plus apply --mode cycle --speed fast

# Strobe white
z13ctl-plus apply --mode strobe --color white

# Turn off all lighting
z13ctl-plus off

Brightness

# Adjust brightness without changing mode or color
z13ctl-plus brightness high
z13ctl-plus brightness medium
z13ctl-plus brightness low
z13ctl-plus brightness off

Performance profile

# Check current profile
z13ctl-plus profile --get

# Switch profiles
z13ctl-plus profile --set performance
z13ctl-plus profile --set balanced
z13ctl-plus profile --set quiet

Battery charge limit

# Check current limit
z13ctl-plus batterylimit --get

# Cap charging at 80% (recommended for mostly-plugged-in use)
z13ctl-plus batterylimit --set 80

# Remove the limit (charge to 100%)
z13ctl-plus batterylimit --set 100

Fan curves

Both physical fans cool the same APU, so the same curve is always applied to both fans simultaneously.

# Check current fan curves
z13ctl-plus fancurve --get

# Set a custom fan curve using PWM values (8 temp:speed pairs, both fans)
z13ctl-plus fancurve --set "48:2,53:22,57:30,60:43,63:56,65:68,70:89,76:102"

# Or use percentages (0–100%)
z13ctl-plus fancurve --set "48:1%,53:9%,57:12%,60:17%,63:22%,65:27%,70:35%,76:40%"

# Reset both fans to firmware auto mode
z13ctl-plus fancurve --reset

TDP control

TDP (Thermal Design Power) controls how much power the APU can draw. There are three limits that form a hierarchy: PL1 is the sustained (continuous) limit, PL2 allows short-term bursts above PL1 for several seconds, and PL3 allows instantaneous spikes for milliseconds. Setting all three to the same value gives a flat power cap; setting PL2 and PL3 higher allows bursty workloads to temporarily exceed PL1.

Stock profiles (quiet/balanced/performance) manage TDP automatically. A custom TDP value is an independent override and does not change the physical profile.

# Check current TDP/PPT values
z13ctl-plus tdp --get

# Set all PPT limits to 50W
z13ctl-plus tdp --set 50

# Set with individual PL overrides
z13ctl-plus tdp --set 45 --pl2 55 --pl3 60

# Force high TDP (above 75W, fans set to 80% minimum)
z13ctl-plus tdp --set 85 --force

# Reset TDP to the current profile's firmware defaults
z13ctl-plus tdp --reset

Undervolting (Curve Optimizer)

Undervolting reduces CPU voltage via AMD Curve Optimizer (CO), lowering temperatures and power draw without reducing performance. Requires the ryzen_smu kernel module (optional — see Installation).

CO values are volatile — they reset on reboot and sleep. The daemon reapplies it automatically on startup and resume while the override is active.

# Check current CO value
z13ctl-plus undervolt --get

# Set CPU CO to -20
z13ctl-plus undervolt --set -20

# Reset to stock voltage
z13ctl-plus undervolt --reset

Safety limit (matching G-Helper defaults): CPU 0 to -40.


Independent tuning overrides

Fan curve, TDP, and undervolt controls are independently active. Changing the physical profile preserves and reapplies them; resetting one does not reset the others.

# Set up independent overrides
z13ctl-plus fancurve --set "48:2,53:22,57:30,60:43,63:56,65:68,70:89,76:102"
z13ctl-plus tdp --set 50

# Change the physical profile without dropping overrides
z13ctl-plus profile --set balanced

# Reset only TDP
z13ctl-plus tdp --reset

Per-device control

Use --device to target only the keyboard or lightbar:

# Keyboard to red, lightbar to blue
z13ctl-plus apply --color red --device keyboard
z13ctl-plus apply --color blue --device lightbar

# Turn off just the lightbar
z13ctl-plus off --device lightbar

Preview without applying changes

--dry-run shows exactly what packets or writes would be sent, without touching any hardware:

z13ctl-plus --dry-run apply --mode rainbow --speed fast
z13ctl-plus --dry-run setup

See all named colors

z13ctl-plus apply --list-colors

This prints a live swatch table in your terminal. Any 6-digit hex value (RRGGBB, without #) is also accepted wherever a color name is.


Next steps

  • Commands — every flag and option for every command
  • Daemon — set up the daemon for state persistence, boot restore, and sleep/resume recovery
  • Z13GUI+ — graphical interface for all z13ctl-plus features (touch-friendly GTK4 overlay)