Small tools to control an Arturia ROG Ryuo IV device from Python: a daemon, a CLI, a Textual TUI, a PyQt6 GUI and an HTTP API that wrap the device driver logic.
- FastAPI HTTP API for remote control (list/upload/delete/set brightness/media/download)
ryuoctlCLI to script uploads, downloads and device control- Textual TUI with media browser and double-click actions
- Systemd-friendly install/uninstall scripts that install a venv and a wrapper executable
- Linux with Python 3.10+ (or system Python3)
- hidapi and adb available on the system (or installed via
requirements.txt)
- Clone this repository.
- Create a virtual environment and install dependencies:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtRun the FastAPI server for local testing:
python src/main.py --port 55667
# or from the repo root to start the daemon (development)The repository includes install.sh and uninstall.sh to install a minimal runtime in /opt/ryuoctl and create a systemd unit.
To install and start the service (requires root):
sudo ./install.sh -p 55667
# the installer will attempt to enable and start the service
sudo journalctl -u ryuoctld.service -fIf you prefer to manage the service manually:
sudo systemctl daemon-reload
sudo systemctl enable --now ryuoctld.service
sudo journalctl -u ryuoctld.service -fCLI examples (from project root or system wrapper):
# list media
python src/main.py --list
# or
ryuoctl --list
# upload a file
python src/main.py --upload path/to/file.mp4
# or
ryuoctl --upload path/to/file.mp4
# set currently playing media (optional brightness)
python src/main.py --set media.mp4 80
# or
ryuoctl --set media.mp4 80
# download media from device
python src/main.py --download media.mp4 path/media.mp4
# or
ryuoctl --download meida.mp4 path/media.mp4
# set brightness
python src/main.py --brightness 200
# or
ryuoctl --brightness 200
# run TUI
python src/main.py --tui
# or
ryuoctl --tui
# run GUI
python src/main.py --gui
# or
ryuoctl --gui
# delete media
python src/main.py --delete media.mp4
# or
ryuoctl --delete media.mp4- GET /list -> list media files
- GET /info -> get device config
- POST /upload -> upload multipart/form-data file
- DELETE /delete/{media} -> delete a media file
- POST /set/{media}/{b} -> set media and brightness
- POST /brightness/{b} -> set brightness only
- GET /download/{media} -> stream a download
install.shwill copy the repo into/opt/ryuoctl, create a venv, write a wrapper to/usr/local/bin/ryuoctland a systemd unit in/etc/systemd/system/ryuoctld.service.- The installer also writes a udev rule to set permissions on the
hidrawnode for the Ryuo device. - The service runs the wrapper which executes
src/main.pyin the venv.
- This tool interacts with USB and ADB; use with care. The installer modifies system rules and installs a daemon.
- Open issues or PRs for bug fixes and feature requests.
- Tests and CI are welcomed; keep the API contract stable.
MIT License. See LICENSE file for details.
For questions or help, open an issue in the repository or message the maintainer.
The use of this software is the sole responsibility of the person running it. The project is provided "as-is" without any explicit or implied warranties. Rights to the protocol, the name, the trademark, and the product belong to Asus (or their respective owners); this repository does not grant any license to those rights.
This project is developed for personal and experimental use: official Linux support for this device is absent and not planned in the near future. Use it knowingly and at your own risk.

