GitHub - tarpediem/zenvision-linux: Linux userspace driver for the ASUS ZenVision lid OLED (Zenbook 14X OLED Space Edition, UX5401ZAS) — 256x64 monochrome panel over USB · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
tarpediem
zenvision-linux
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>6 Commits<br>6 Commits
docs
docs
examples
examples
packaging/aur/zenvision-linux-git
packaging/aur/zenvision-linux-git
udev
udev
.gitignore
.gitignore
CLAUDE.md
CLAUDE.md
LICENSE
LICENSE
PROTOCOL.md
PROTOCOL.md
README.md
README.md
requirements.txt
requirements.txt
zenvision.py
zenvision.py
View all files
Repository files navigation
zenvision-linux
🟢 The first open-source Linux driver for the ASUS ZenVision lid OLED — the<br>protocol was reverse-engineered from scratch (Ghidra on MyASUS). Want live<br>applets and audio-reactive visualisers on top? See the companion app<br>zenvision-studio .
Userspace Linux driver for the ASUS ZenVision lid OLED — the 3.5", 256×64<br>monochrome screen embedded in the lid of the ASUS Zenbook 14X OLED Space<br>Edition (UX5401ZAS) .
ASUS only ships software for this screen on Windows (inside MyASUS). This project<br>reverse-engineers the USB protocol and lets you drive the panel from Linux:<br>show images, play animations, or display whatever you like.
Status: working on UX5401ZAS. Other ASUS lid-OLED models may use a similar<br>protocol — reports and PRs welcome.
How it works
The lid screen is a Nuvoton M480 USB device (0b05:8835). It is not a DRM<br>display — you don't get a /dev/fb; instead you push a 256×64, 4-bit-grayscale<br>framebuffer to a bulk endpoint after a small command handshake. Full details in<br>PROTOCOL.md.
Requirements
Python 3.9+
pyusb and Pillow
libusb-1.0
Raw USB access (root, or the provided udev rule)
python -m venv .venv && . .venv/bin/activate<br>pip install pyusb pillow
Arch Linux (AUR)
yay -S zenvision-linux-git # installs the `zenvision` CLI + the udev rule
Usage
# Static image (auto-resized to 256x64, converted to grayscale)<br>sudo ./zenvision.py image picture.png
# White test pattern / clear<br>sudo ./zenvision.py image --white<br>sudo ./zenvision.py off
# Play a folder of frames as a smooth animation<br>sudo ./zenvision.py anim frames/ --fps 20
Brightness: --bright 0xff (scale is approximate; tune by eye).
Generate the demo animation
examples/spark_demo.py renders a generic rotating-starburst animation into a<br>frames/ folder you can feed to anim:
pip install pillow<br>python examples/spark_demo.py --out frames --w 256 --h 64<br>sudo ./zenvision.py anim frames/ --fps 20
Want a logo? Render any monochrome 256×64 frames into a folder and point anim at<br>it. (Tip: rsvg-convert an SVG, or ffmpeg -i clip.gif frames/%03d.png.)
Running without root (udev)
Copy the rule so your user can access the device:
sudo cp udev/70-zenvision.rules /etc/udev/rules.d/<br>sudo udevadm control --reload-rules && sudo udevadm trigger
The 70- prefix matters: the rule must sort before 73-seat-late.rules so the<br>uaccess tag is applied — otherwise the ACL is never granted. uaccess gives the<br>logged-in user access (the right mechanism on systemd; no plugdev group needed).<br>Then run without sudo.
Notes & safety
The panel is firmware-powered and survives a re-plug; experiments are recoverable<br>with a reboot. Sending malformed control reports on the HID interface can soft-reset<br>the MCU (it re-enumerates cleanly) — this driver only uses the vendor interface.
This is an independent, unofficial project. Not affiliated with or endorsed by ASUS.
No ASUS firmware, binaries, or decompiled code are included or required.
Contributing
If you have another ASUS model with a lid OLED, please open an issue with:<br>lsusb, your model number, and whether the framing here works. The protocol doc<br>is written to make porting straightforward.
License
MIT.
About
Linux userspace driver for the ASUS ZenVision lid OLED (Zenbook 14X OLED Space Edition, UX5401ZAS) — 256x64 monochrome panel over...