Old tech meets modern software.
Playstick turns an ASUS VivoStick TS10 into a compact, dedicated media player that plugs directly into a projector's HDMI port.
It provisions and measures a minimal Ubuntu Server installation with video rendered directly through the Intel integrated graphics stack without an X server or desktop environment.
- No desktop, no X server. Video goes straight to the Intel GPU over KMS/DRM via
cage/seatdontty1. - Fully provisioned by Ansible over SSH. The device holds no state you can't rebuild; every tunable lives in
group_vars, and the control node ships as a Docker image. - AirPlay mirroring receiver built on
UxPlaymirror any Apple device straight to the projector. - Child-friendly web movie library. Plays films off a read-only CIFS NAS automount from a browser UI simple enough for a kid.
- It controls the projector itself. RS-232 switches the projector on and off, and an idle framebuffer clock shows when nothing is playing.
Every viewer opens the library on their own device, picks a language, and listens on their own headphones. Each device pins its audio to the film's master clock, so the whole room stays in sync (a skip re-syncs everyone automatically). Two people watching the same film can hear it in different languages at once.
Great for multi-language households, friends, and parties.
Open the stick's address on any phone or tablet on the home network. There is nothing to install.
- Tap a poster to play it. The projector switches itself on, and the page says so while the lamp warms up.
- A series is one tile. Tapping it opens the seasons and their episodes.
- Sort and filter by title, year, or genre.
- Big, simple controls while a film plays: skip ten seconds, pause, stop, and volume.
The heavy lifting happens on your own computer, not the stick. The Playstick app (PySide6, make admin)
scans your folders of films, lets you choose what goes on the stick, and prepares each film in the background:
probing, re-encoding where the stick needs it, extracting per-language audio, and matching it on TMDb.
- Prepare. Every film on every source, the share included, in one sortable table. Select what you want and add it to the library; the queue works through them one at a time, survives the app being closed, and can be paused, reordered or retried from each row's menu.
- Library. What the stick is actually holding, with posters. Double-click a film to fix its title, genre or rating, or correct a bad TMDb match, and the change goes straight to the stick.
- Device. Whether the stick is reachable, playback and volume controls, recovery for films that didn't get through, and Update device when this machine has something newer to deploy.
- Config. The share, the stick and how to log in to it; the folders films come from; how the appliance behaves; and the deploy console.
All screenshots use a demo library of public-domain films.













