Skip to content

Repository files navigation

asus-screenpad-brightness-sync

Keep the ASUS ScreenPad (the secondary screen on ZenBook Duo / Pro Duo and other ScreenPad Plus laptops) at the same brightness as your main display on Linux.

On Linux, your desktop's brightness slider and brightness keys only control the primary backlight. The ScreenPad is exposed as a separate backlight device (asus_screenpad) that nothing keeps in sync, so it stays at a fixed level — usually much dimmer than the main panel. This is a tiny systemd service that watches the primary backlight and mirrors its brightness percentage onto the ScreenPad, so one control drives both screens.

Demo: the ScreenPad brightness tracking the main display

Discovered while fixing this on a Fedora 43 / GNOME 49 ASUS ZenBook Duo (UX482EA), but it should work on any distro and any ASUS laptop that exposes an asus_screenpad backlight.

How it works

  • Blocks on poll(POLLPRI) of the primary backlight's actual_brightness. The kernel backlight core calls sysfs_notify on every change, so the daemon reacts instantly with near-zero CPU (no busy polling).
  • A 2-second timeout fallback re-syncs even if some path changes brightness without notifying.
  • Mirrors percentage, mapping the main range (e.g. 0–19200) proportionally onto the ScreenPad range (e.g. 0–255).
  • Primary and ScreenPad backlights are auto-detected (intel_backlight, amdgpu_bl0, etc.), with environment overrides if needed.

Requirements

  • Linux with the asus_screenpad backlight under /sys/class/backlight/ (provided by the in-kernel asus-wmi / asus-nb-wmi driver on recent kernels).
  • python3 (standard library only).
  • systemd.
  • Optional: termcolor for colored logs.

Check your device exists:

ls /sys/class/backlight/
# you should see asus_screenpad alongside e.g. intel_backlight

Install

git clone https://github.com/Ryxwaer/asus-screenpad-brightness-sync.git
cd asus-screenpad-brightness-sync
sudo ./install.sh

Then move your brightness slider / press the brightness keys — the ScreenPad follows the main screen. Watch it live:

journalctl -u screenpad-sync.service -f
# e.g. [screenpad-sync] main 60% -> screenpad 153/255

Uninstall

sudo ./uninstall.sh

Configuration

Edit the top of screenpad-sync.py (then re-run sudo ./install.sh and sudo systemctl restart screenpad-sync.service):

  • MIN_SCREENPAD_LEVEL — set >0 to never let the ScreenPad go fully dark when you dim all the way down.
  • POLL_TIMEOUT_MS — fallback resync interval.

Overriding device detection

If auto-detection picks the wrong devices, set environment variables in the unit (sudo systemctl edit screenpad-sync.service):

[Service]
Environment=MAIN_BACKLIGHT=amdgpu_bl1
Environment=SCREENPAD_BACKLIGHT=asus_screenpad

Troubleshooting

  • no ScreenPad backlight found — your kernel/driver doesn't expose asus_screenpad. Make sure you're on a recent kernel with asus-wmi. List what you have with ls /sys/class/backlight/ and override with SCREENPAD_BACKLIGHT if it's named differently.
  • ScreenPad doesn't react — confirm the service is running (systemctl status screenpad-sync.service) and check the journal.
  • Permission denied in logs — the service must run as root (the installer sets this up); the sysfs brightness files are root-owned.

Contributing

Different ASUS models name things differently. If your laptop needs a tweak to auto-detection (a different ScreenPad or panel device name), please open an issue or PR with the output of:

for b in /sys/class/backlight/*; do
  echo "$(basename "$b"): type=$(cat "$b/type") max=$(cat "$b/max_brightness")"
done

and your laptop model. Contributions to widen hardware support are very welcome.

License

MIT — see LICENSE.

About

Sync the ASUS ScreenPad brightness with the main display on Linux (systemd service). For ZenBook Duo / Pro Duo and other ScreenPad Plus laptops.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages