slint/docs/torizon.md
Tasuku Suzuki fc2c13c4a2
Some checks are pending
autofix.ci / lint_typecheck (push) Waiting to run
autofix.ci / format_fix (push) Waiting to run
CI / node_test (macos-14) (push) Blocked by required conditions
CI / files-changed (push) Waiting to run
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, macos-14, stable) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, 1.88) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, beta) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, stable) (push) Blocked by required conditions
CI / build_and_test (ubuntu-22.04, 1.88) (push) Blocked by required conditions
CI / build_and_test (ubuntu-22.04, nightly) (push) Blocked by required conditions
CI / node_test (ubuntu-22.04) (push) Blocked by required conditions
CI / node_test (windows-2022) (push) Blocked by required conditions
CI / python_test (macos-14) (push) Blocked by required conditions
CI / python_test (ubuntu-22.04) (push) Blocked by required conditions
CI / python_test (windows-2022) (push) Blocked by required conditions
CI / cpp_cmake (ubuntu-22.04, stable) (push) Blocked by required conditions
CI / cpp_test_driver (macos-14) (push) Blocked by required conditions
CI / cpp_test_driver (ubuntu-22.04) (push) Blocked by required conditions
CI / cpp_test_driver (windows-2022) (push) Blocked by required conditions
CI / cpp_cmake (macos-14, 1.88) (push) Blocked by required conditions
CI / cpp_cmake (windows-2022, nightly) (push) Blocked by required conditions
CI / cpp_package_test (push) Blocked by required conditions
CI / vsce_build_test (push) Blocked by required conditions
CI / mcu (pico-st7789, thumbv6m-none-eabi) (push) Blocked by required conditions
CI / mcu (pico2-st7789, thumbv8m.main-none-eabihf) (push) Blocked by required conditions
CI / mcu (stm32h735g, thumbv7em-none-eabihf) (push) Blocked by required conditions
CI / mcu-embassy (push) Blocked by required conditions
CI / docs (push) Blocked by required conditions
CI / wasm (push) Blocked by required conditions
CI / tree-sitter (push) Blocked by required conditions
CI / updater_test (0.3.0) (push) Blocked by required conditions
CI / fmt_test (push) Blocked by required conditions
CI / esp-idf-quick (push) Blocked by required conditions
CI / ffi_32bit_build (push) Blocked by required conditions
CI / wasm_demo (push) Blocked by required conditions
CI / android (push) Blocked by required conditions
CI / miri (push) Blocked by required conditions
CI / test-figma-inspector (push) Blocked by required conditions
CI / material-components (push) Blocked by required conditions
torizon: Remove Vivante support as Torizon 4 is no longer supported
2025-10-15 13:34:49 +02:00

5.9 KiB

Running Slint Demos on Torizon OS

Toradex provides Torizon OS a Linux based platform for its embedded devices that packages applications in docker containers.

We provide our demos compiled for Toradex as docker containers with GPU acceleration support.

Prerequisites

  • A device running Torizon OS 6.0 or later
  • SSH access to the Torizon device
  • Docker installed on the device

Note: The Slint demos run directly on the linux/kms and do not require a Weston container.

Running

Our pre-compiled demos are available in multiple variants optimized for different hardware platforms:

  1. Standard ARM64 without GPU build (torizon-demos-arm64) - Uses software rendering
  2. i.MX8 GPU build (torizon-demos-arm64-imx8) - Optimized for i.MX8 series with GPU acceleration
  3. AM62 GPU build (torizon-demos-arm64-am62) - Optimized for AM62 series with GPU acceleration
  4. i.MX95 GPU build (torizon-demos-arm64-imx95) - Optimized for i.MX95 series with GPU acceleration

A complete list of all containers can be found at

https://github.com/orgs/slint-ui/packages?q=torizon&tab=packages&q=torizon

Running with Docker

For i.MX8 series boards:

sudo docker run --rm --privileged \
  --user=torizon \
  -v /dev:/dev \
  -v /tmp:/tmp \
  -v /run/udev:/run/udev \
  --device-cgroup-rule='c 199:* rmw' \
  --device-cgroup-rule='c 226:* rmw' \
  --device-cgroup-rule='c 13:* rmw' \
  --device-cgroup-rule='c 4:* rmw' \
  ghcr.io/slint-ui/slint/torizon-demos-arm64-imx8

For AM62 series boards with GPU:

sudo docker run --rm --privileged \
  --user=torizon \
  -v /dev:/dev \
  -v /tmp:/tmp \
  -v /run/udev:/run/udev \
  --device-cgroup-rule='c 199:* rmw' \
  --device-cgroup-rule='c 226:* rmw' \
  --device-cgroup-rule='c 13:* rmw' \
  --device-cgroup-rule='c 4:* rmw' \
  ghcr.io/slint-ui/slint/torizon-demos-arm64-am62

For generic ARM64 devices without GPU acceleration:

sudo docker run --rm --privileged \
  --user=torizon \
  -v /dev:/dev \
  -v /tmp:/tmp \
  -v /run/udev:/run/udev \
  --device-cgroup-rule='c 199:* rmw' \
  --device-cgroup-rule='c 226:* rmw' \
  --device-cgroup-rule='c 13:* rmw' \
  --device-cgroup-rule='c 4:* rmw' \
  ghcr.io/slint-ui/slint/torizon-demos-arm64

Available Demos

By default, the energy-monitor demo is run. The containers package multiple demo applications:

  • energy-monitor (default) - Energy monitoring dashboard
  • printerdemo - 3D printer control interface
  • gallery - Image gallery with touch navigation
  • slide_puzzle - Interactive sliding puzzle game
  • opengl_underlay - OpenGL rendering demonstration
  • carousel - 3D carousel interface
  • todo - Task management application
  • weather-demo - Weather information display (requires API key)
  • home-automation - Smart home control panel

Selecting Specific Demos

Run a specific demo by specifying it as a parameter:

# Printer demo on i.MX8 with GPU acceleration
sudo docker run --rm --privileged --user=torizon \
  -v /dev:/dev -v /tmp:/tmp -v /run/udev:/run/udev \
  --device-cgroup-rule='c 199:* rmw' --device-cgroup-rule='c 226:* rmw' \
  --device-cgroup-rule='c 13:* rmw' --device-cgroup-rule='c 4:* rmw' \
  ghcr.io/slint-ui/slint/torizon-demos-arm64-imx8 printerdemo

# Todo demo on AM62 without GPU acceleration
sudo docker run --rm --privileged --user=torizon \
  -v /dev:/dev -v /tmp:/tmp -v /run/udev:/run/udev \
  --device-cgroup-rule='c 199:* rmw' --device-cgroup-rule='c 226:* rmw' \
  --device-cgroup-rule='c 13:* rmw' --device-cgroup-rule='c 4:* rmw' \
  ghcr.io/slint-ui/slint/torizon-demos-arm64 todo

Auto-running on Boot

Torizon OS supports automatically starting containers on boot by placing a docker-compose.yml file in /var/sota/storage/docker-compose/ on the device.

How to Autorun an Application With Torizon OS

Step 1: Create docker-compose.yml

Create a file named docker-compose.yml with the following content (adjust the image variant for your platform):

services:
  slint-demo:
    image: ghcr.io/slint-ui/slint/torizon-demos-arm64-imx8:latest
    restart: unless-stopped
    environment:
      - ACCEPT_FSL_EULA=1
      - SLINT_FULLSCREEN=1
      - SLINT_BACKEND=linuxkms-skia-opengl
    user: torizon
    privileged: true
    volumes:
      - type: bind
        source: /tmp
        target: /tmp
      - type: bind
        source: /dev
        target: /dev
      - type: bind
        source: /run/udev
        target: /run/udev
    device_cgroup_rules:
      # ... for tty
      - "c 4:* rmw"
      # ... for /dev/input devices
      - "c 13:* rmw"
      - "c 199:* rmw"
      # ... for /dev/dri devices
      - "c 226:* rmw"
    command: home-automation

Step 2: Deploy to Device

Copy the file to your Torizon device:

# Create the directory if it doesn't exist
ssh torizon@<device-ip> "sudo mkdir -p /var/sota/storage/docker-compose"

# Copy the docker-compose.yml file
scp docker-compose.yml torizon@<device-ip>:/tmp/
ssh torizon@<device-ip> "sudo mv /tmp/docker-compose.yml /var/sota/storage/docker-compose/"

# Reboot to start the application automatically
ssh torizon@<device-ip> "sudo reboot"

Platform-specific variants:

  • For i.MX8: ghcr.io/slint-ui/slint/torizon-demos-arm64-imx8:latest
  • For AM62 with GPU: ghcr.io/slint-ui/slint/torizon-demos-arm64-am62:latest
  • For i.MX95: ghcr.io/slint-ui/slint/torizon-demos-arm64-imx95:latest
  • For Generic ARM64: ghcr.io/slint-ui/slint/torizon-demos-arm64:latest

The demo will automatically start on boot and restart if it crashes. To stop auto-running, remove the file:

ssh torizon@<device-ip> "sudo rm /var/sota/storage/docker-compose/docker-compose.yml && sudo reboot"