From 783f56877054561ed92f02517127d9d3d0e3788a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Trellu?= Date: Wed, 20 Mar 2024 16:28:16 -0400 Subject: [PATCH] [gui] Add information about EGLFS and Raspberry Pi 5 board --- docs/getting-started/docker/composition.md | 48 ++++++++++--------- .../docker/installation/gui.md | 15 ++++++ 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/docs/getting-started/docker/composition.md b/docs/getting-started/docker/composition.md index 7621697..5149046 100644 --- a/docs/getting-started/docker/composition.md +++ b/docs/getting-started/docker/composition.md @@ -28,29 +28,31 @@ A Docker or Podman environment file contains lines about environment variables t Some variables might need to be tuned to match your setup such as the `TZ`, `XDG_RUNTIME_DIR`, etc... -| Variable | Default | Platforms | Description | -| ----------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | -| `DISPLAY` | `:0` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | Display used by X or Wayland | -| `GPIO_GID` | `997` | :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `gpio` group ID on Raspberry Pi | -| `HIVEMIND_CONFIG_FOLDER` | `~/hivemind/config` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | HiveMind configuration directory | -| `HIVEMIND_CONFIG_PHAL_FOLDER` | `~/hivemind/config/phal` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | HiveMind PHAL configuration directory | -| `HIVEMIND_SHARE_FOLDER` | `~/hivemind/share` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | HiveMind shared directory | -| `HIVEMIND_USER` | `hivemind` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | User running in the container | -| `I2C_GID` | `994` | :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `i2c` group ID on Raspberry Pi | -| `INPUT_GID` | `102` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `input` group ID | -| `OVOS_CONFIG_FOLDER` | `~/ovos/config` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | OVOS configureation directory | -| `OVOS_CONFIG_PHAL_FOLDER` | `~/ovos/config/phal` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | OVOS PHAL configureation directory | -| `OVOS_SHARE_FOLDER` | `~/ovos/share` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | OVOS shared directory | -| `OVOS_USER` | `ovos` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | User running in the container | -| `PULL_POLICY` | `always` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | Policy to pull Docker images | -| `QT_QPA_PLATFORM` | `eglfs` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | QT platform plugin to use | -| `RENDER_GID` | `106` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `render` group ID | -| `SPI_GID` | `995` | :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `spi` group ID on Raspberry Pi | -| `TMP_FOLDER` | `~/ovos/tmp` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | OVOS temporary directory | -| `TZ` | `America/Montreal` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | Timezone to set in the container | -| `VERSION` | `alpha` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | Container image tag to pull | -| `VIDEO_GID` | `44` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `video` group ID | -| `XDG_RUNTIME_DIR` | `/run/user/1000` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | Path to XDG runtime directory | +| Variable | Default | Platforms | Description | +| ----------------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | +| `DISPLAY` | `:0` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | Display used by X or Wayland | +| `GPIO_GID` | `997` | :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `gpio` group ID on Raspberry Pi | +| `HIVEMIND_CONFIG_FOLDER` | `~/hivemind/config` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | HiveMind configuration directory | +| `HIVEMIND_CONFIG_PHAL_FOLDER` | `~/hivemind/config/phal` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | HiveMind PHAL configuration directory | +| `HIVEMIND_SHARE_FOLDER` | `~/hivemind/share` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | HiveMind shared directory | +| `HIVEMIND_USER` | `hivemind` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | User running in the container | +| `I2C_GID` | `994` | :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `i2c` group ID on Raspberry Pi | +| `INPUT_GID` | `102` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `input` group ID | +| `OVOS_CONFIG_FOLDER` | `~/ovos/config` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | OVOS configureation directory | +| `OVOS_CONFIG_PHAL_FOLDER` | `~/ovos/config/phal` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | OVOS PHAL configureation directory | +| `OVOS_SHARE_FOLDER` | `~/ovos/share` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | OVOS shared directory | +| `OVOS_USER` | `ovos` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | User running in the container | +| `PULL_POLICY` | `always` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | Policy to pull Docker images | +| `QT_QPA_EGLFS_INTEGRATION` | `eglfs` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | QT preferred backend to use for EGLFS | +| `QT_QPA_EGLFS_KMS_CONFIG` | `/home/$OVOS_USER/.config/mycroft/ovos-eglfs.json` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | QT KSM backend configuration for WGLFS | +| `QT_QPA_PLATFORM` | `eglfs` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | QT platform plugin to use | +| `RENDER_GID` | `106` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `render` group ID | +| `SPI_GID` | `995` | :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `spi` group ID on Raspberry Pi | +| `TMP_FOLDER` | `~/ovos/tmp` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | OVOS temporary directory | +| `TZ` | `America/Montreal` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | Timezone to set in the container | +| `VERSION` | `alpha` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-apple:{ .lg title="Mac OS" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | Container image tag to pull | +| `VIDEO_GID` | `44` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } | `video` group ID | +| `XDG_RUNTIME_DIR` | `/run/user/1000` | :fontawesome-brands-linux:{ .lg title="Linux" } :fontawesome-brands-raspberry-pi:{ .lg title="Raspberry Pi" } :fontawesome-brands-windows:{ .lg title="Windows WSL2" } | Path to XDG runtime directory | !!! bug "Do not change `OVOS_USER` or `HIVEMIND_USER`" diff --git a/docs/getting-started/docker/installation/gui.md b/docs/getting-started/docker/installation/gui.md index 0a2903d..bf9d117 100644 --- a/docs/getting-started/docker/installation/gui.md +++ b/docs/getting-started/docker/installation/gui.md @@ -17,6 +17,21 @@ When using EGLFS, the `DISPLAY` variable from the `.env` [composition environmen **If not running on a Raspberry Pi 4 or 5 then the CPU might be used to render the GUI which will result in a high CPU consumption and a poor user exprience.** +## EGLFS on Raspberry Pi 5 + +The Raspberry Pi 5 board doesn't use `/dev/dri/card0` by default anymore for the GPU rendering. The solution to this issue is to create an EGLFS configuration referencing the right card to use. + +```json title="~/ovos/config/ovos-eglfs.json" +{ + "device": "/dev/dri/card1", + "hwcursor": false +} +``` + +The `QT_QPA_EGLFS_INTEGRATION` variable must be set to `eglfs_ksm` and `QT_QPA_EGLFS_KMS_CONFIG` variable must be set to `/home/$OVOS_USER/.config/mycroft/ovos-eglfs.json` in the `.env` file. + +Please check the [composition environment file](../composition.md#environment-files) section for more details. + ## Configuration The `ovos-gui-messagebus` component must be configured in order to receive the QML files from the skill containers. Because of these file transfers, the `ovos-message-bus` component must be configured to allow bigger payload.