2025-08-02 21:48:49 +02:00
2025-07-25 17:31:37 +02:00
2025-07-25 17:31:37 +02:00
2025-07-25 17:31:37 +02:00
2025-07-25 17:31:37 +02:00
2025-07-25 17:31:37 +02:00
2025-07-25 17:31:37 +02:00
2025-08-02 18:55:17 +02:00
2025-07-25 17:31:37 +02:00
2025-08-02 21:48:49 +02:00
2025-07-25 17:31:37 +02:00
2025-07-25 17:31:37 +02:00
2025-07-25 17:31:37 +02:00
2025-08-02 21:48:49 +02:00

AOOSTAR WTR MAX Screen Control

Reverse engineering the AOOSTAR WTR MAX display protocol, with a proof-of-concept application written in Rust.
This project should also support the GEM12+ PRO device.

Disclaimer: ‼️ EXPERIMENTAL — use at your own risk ‼️

I take no responsibility for the use of this software.
There is no official documentation available; all display control commands have been reverse engineered from the original AOOSTAR-X software.

  • It may or may not work.
  • It could crash the display firmware, requiring a power cycle.
  • It could even brick the display firmware.
  • You have been warned!

The risk remains until the manufacturer provides official documentation, and the protocol can be reviewed. Note: Multiple attempts to contact the manufacturer for documentation have received no response.

With that out of the way, on to the fun stuff!

See Linux shell commands on how to switch off the display with standard Linux commands!

See releases for binary Linux x64 releases and Linux systemd Service on how to automatically switch off the LCD at boot up. A Debian package for easy installation is planned for the future!

Reverse Engineering

Reverse engineered LCD commands: doc/lcd_protocol.md

Motivation

Developing open client software to use the embedded second screen on various Linux distributions. It might also work on Windows, but I neither have that OS, nor plan to install it.

The official proprietary AOOSTAR-X display software is not suitable for NAS and security-minded users:

  • All-in-one solution that attempts to do everything, from sensor reading to running a web server for control and configuration (exposed on all interfaces!).
    I prefer using existing monitoring tools and combining them to my liking.
  • Resource hungry, written in Python. Archive of v1.3.4 is 178 MB.
  • Closed source, requires root access, distributed over filesharing sites, some without HTTPS.
  • Built-in expiration date. One must regularly update the software without being able to verify the source.
  • Many untranslated messages in Chinese and missing instructions for included features.

The display remains on continuously (24×7) if the official software is not running.

Goals

  • Reverse engineer the LCD serial protocol to provide open screen software.
    • Utilize the official AOOSTAR-X display software by sniffing USB communication, using strace, and decompiling the Python app.
  • Document known commands so clients in other programming languages can be written.
  • Eventually, create a Rust crate for easy integration into other Rust applications.

Out of scope:

  • Reverse engineering the microcontroller firmware on the display board.
    That would be an interesting task — potentially uncovering additional display commands — but is outside the project's current scope.
  • Reimplementing the full AOOSTAR-X display software, which is overly complex for most use cases.

Features

  • Control the AOOSTAR WTR MAX and GEM12+ PRO second screen from Linux.
  • Switch the display on or off.
  • Display images (with automatic scaling and partial update support).
  • Proof-of-concept demo for drawing shapes and text.
  • USB device/serial port selection.

Setup

Requirements

  1. A recent Rust toolchain is required, using rust-up is the easiest way to get everything set up.

  2. Install required build dependencies (shown for Ubuntu 25.04):

sudo apt install build-essential git pkg-config libudev-dev
  1. Checkout project:
git clone https://github.com/zehnm/aoostar-rs.git
cd aoostar-rs

Build

A release build is highly recommended, as it significantly improves graphics performance:

cargo build --release

Install

See Linux systemd Service on how to automatically switch off the LCD at boot up.

Demo App Usage

Currently, the project includes a proof-of-concept demo application that loads an image, draws rectangles, and writes text over the image.

By default, the original LCD USB UART device 416:90A1 is used. See optional parameters to specify a different device.

cargo run --release -- --demo --config Monitor3.json

The --config parameter is optional. It loads the official configuration file and displays the defined sensors in the first panel.

Parameters

  • --device /dev/ttyACM0 — Specify the serial device.
  • --usb 0403:6001 — Specify the USB UART device by USB VID:PID (hexadecimal, as shown by lsusb).
  • --help — Show all options.

Control Commands

Besides demo mode, the following control commands have been implemented.

The asterctl binary is built in ./target/release.
Alternatively, use cargo run --release -- to build and run automatically, for example: cargo run --release -- --off.

Aster: Greek for star and similar to AOOSTAR.

Switch display on:

asterctl --on

Switch display off:

asterctl --off

Load and display an image:

asterctl --image img/aybabtu.png

This expects a 960 × 376 image (other sizes are automatically scaled and the aspect ratio is ignored). See Rust image crate for supported image formats.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please note that this software is currently in its initial development and will have major changes until the mentioned goals above are reached!

License

Licensed under either of

at your option.

S
Description
Fork of aoostar-rs with experimental web UI for AOOSTAR screen control
Readme 7.6 MiB
Languages
Rust 96.7%
Shell 2.8%
Dockerfile 0.5%