This is a daemon that runs on the Zenbook Duo laptop to handle the keyboard and secondary display under linux.
- ✅ Zenbook Duo 2025 (UX8406CA)
- ✅ Zenbook Duo 2024 (UX8406MA)
- ✅ Ubuntu 25.10 6.17.0-8-generic
- ✅ Fedora 42 6.17.13-200.fc42.x86_64
⚠️ NixOS: see this fork⚠️ Other distributions may work, but are not tested
- ✅ Enable secondary display when keyboard is detached
- ✅ Disable keyboard backlight when idle
- ✅ Brightness sync between primary and secondary display
- ✅ Remap keys to run custom commands or key combinations
| Keyboard Function | Wired Mode | Bluetooth Mode | Default Mapping | Remappable via config file? |
|---|---|---|---|---|
| Mute Key | ✅ | ✅ | KEY_MUTE |
❌ |
| Volume Down Key | ✅ | ✅ | KEY_VOLUMEDOWN |
❌ |
| Volume Up Key | ✅ | ✅ | KEY_VOLUMEUP |
❌ |
| Keyboard Backlight Key | ✅ | ✅ | KEY_BACKLIGHT |
✅ |
| Keyboard Backlight Control | ✅ | ❌ (1) | N/A | ✅ |
| Brightness Down Key | ✅ | ✅ | KEY_BRIGHTNESSDOWN |
✅ |
| Brightness Up Key | ✅ | ✅ | KEY_BRIGHTNESSUP |
✅ |
| Extended Display Mode Key | ✅ | ✅ | KEY_LEFT_META + KEY_P |
❌ |
| Swap Up Down Display Key | ✅ | ✅ | None | ✅ |
| Microphone Mute Key | ✅ | ✅ | KEY_MICMUTE |
✅ |
| Microphone Mute Key LED Control | ✅ | ❌ (2) | N/A | ✅ |
| Emoji Picker Key | ✅ | ✅ | KEY_LEFTCTRL + KEY_DOT (3) |
✅ |
| MyASUS Key | ✅ | ✅ | None | ✅ |
| Toggle Secondary Display Key | ✅ | ✅ | Toggle Secondary Display | ✅ |
| Fn + Function Keys | ✅ | ✅ | F1 - F12 | ❌ |
- Should be possible, the packet capture file under windows is at
pcap/bt_change_backlight.pcapng - Should be possible, the packet capture file under windows is at
pcap/bt_micmute_led.pcapng - This key combination only works for GTK apps in GNOME.
# Upgrade or install the latest release from GitHub
curl -fsSL https://raw.githubusercontent.com/PegasisForever/zenbook-duo-daemon/refs/heads/master/install.sh | sudo bash -s install
# Uninstall
curl -fsSL https://raw.githubusercontent.com/PegasisForever/zenbook-duo-daemon/refs/heads/master/install.sh | sudo bash -s uninstall
# Check logs
systemctl status zenbook-duo-daemonThe install script will:
- Download the latest release from GitHub and install it to
/opt/zenbook-duo-daemon. - Create a systemd service file in
/etc/systemd/system/zenbook-duo-daemon.service - Create a backup of the old config file if it is not compatible with the new config file.
- Enable and start the service
By default, the config file is located at /etc/zenbook-duo-daemon/config.toml. You can edit the fn lock, idle timeout, key mappings and keyboard VID:PID in the config file. The instructions are provided in the config file.
The daemon creates a named pipe for receiving commands at /tmp/zenbook-duo-daemon.pipe by default (configurable via pipe_path in the config file). The pipe is accessible by all users.
Send commands using echo example:
echo mic_mute_led_toggle > /tmp/zenbook-duo-daemon.pipeAvailable commands:
| Command | Description |
|---|---|
mic_mute_led_toggle |
Toggle microphone mute LED |
mic_mute_led_on |
Turn on microphone mute LED |
mic_mute_led_off |
Turn off microphone mute LED |
backlight_toggle |
Cycle keyboard backlight |
backlight_off |
Turn off keyboard backlight |
backlight_low |
Set keyboard backlight to low |
backlight_medium |
Set keyboard backlight to medium |
backlight_high |
Set keyboard backlight to high |
secondary_display_toggle |
Toggle secondary display |
secondary_display_on |
Turn on secondary display |
secondary_display_off |
Turn off secondary display |
suspend_start |
Signal suspend start (disables backlight) |
suspend_end |
Signal suspend end (restores backlight) |
Notes:
- The
suspend_startandsuspend_endcommands are sent automatically by the systemd serviceszenbook-duo-daemon-pre-sleepandzenbook-duo-daemon-post-sleepto disable keyboard backlight during suspend. - The secondary display commands are no-op when the keyboard is attached.
sudo apt install build-essential libevdev-dev libdbus-1-dev pkg-config autoconfThis is a standard Rust project, you can run the project with:
# Stop the systemctl service to prevent two instances running
sudo systemctl stop zenbook-duo-daemon
cargo runOr you can build and install the binary to your system with:
cargo build --release
sudo ./install.sh local-install target/release/zenbook-duo-daemon