Can't connect to display from docker container

So I had a docker-compose file that worked in the early stages of my project that looked like this:

matt@matt-X62:~/luxer/luxer-kiosk$ cat docker-compose.yml 
version: "2.5"
services:

  weston:
    image: torizon/weston-vivante:2
    # Accept the EULA required to run imx8 vivante graphic drivers
    environment:
     - ACCEPT_FSL_EULA=1
    # Required to get udev events from host udevd via netlink
    network_mode: host
    volumes:
      - type: bind
        source: /tmp
        target: /tmp
      - type: bind
        source: /dev
        target: /dev
      - type: bind
        source: /run/udev
        target: /run/udev
    cap_add:
      - CAP_SYS_TTY_CONFIG
    # Add device access rights through cgroup...
    device_cgroup_rules:
      # ... for tty0
      - 'c 4:0 rmw'
      # ... for tty7
      - 'c 4:7 rmw'
      # ... for /dev/input devices
      - 'c 13:* rmw'
      - 'c 199:* rmw'
      # ... for /dev/dri devices
      - 'c 226:* rmw'
    command: --developer weston-launch --tty=/dev/tty7 --user=torizon
    healthcheck:
        test: ["CMD", "test", "-S", "/tmp/.X11-unix/X0"]
        interval: 5s
        timeout: 4s
        retries: 6
        start_period: 10s

  kiosk:
    image: munderwoods/kiosk:2
    security_opt:
      - seccomp:unconfined
    command: /usr/lib/luxer-kiosk/verdin-arm
    shm_size: '256mb'
    device_cgroup_rules:
      # ... for /dev/dri devices
      - 'c 226:* rmw'
      - 'c 199:* rmw'
    volumes:
      - type: bind
        source: /tmp
        target: /tmp
      - type: bind
        source: /var/run/dbus
        target: /var/run/dbus
      - type: bind
        source: /dev/dri
        target: /dev/dri
      - type: bind
        source: /dev/galcore
        target: /dev/galcore

    depends_on:
      weston:
        condition: service_healthy

With a dockerfile that looked like this:

matt@matt-X62:~/luxer/luxer-kiosk$ cat Dockerfile 
FROM --platform=linux/arm64/v8 torizon/qt5-wayland-examples-vivante:2
 
RUN apt update
RUN apt install -y qtmultimedia5-dev libqt5multimedia5-plugins libqt5serialbus5 libqt5serialbus5-dev libtesseract-dev tesseract-ocr make g++ libqt5serialport5 libqt5serialport5-dev qtbase5-dev libegl-dev libegl1 vim
COPY . /usr/lib/luxer-kiosk

The executable, verdin-arm, I just built manually on the verdin itself. Since then I started using the apollox vscode plugin. I pulled the new executable out of the /aarch64 directory where it was built while using the plugin and made this new docker-compose file for it:

matt@matt-X62:~/luxer/luxer-kiosk-qt-ui-proto$ cat docker-compose.yml 
version: "2.5"
services:

  weston:
    image: torizon/weston-vivante:2
    # Accept the EULA required to run imx8 vivante graphic drivers
    environment:
     - ACCEPT_FSL_EULA=1
    # Required to get udev events from host udevd via netlink
    network_mode: host
    volumes:
      - type: bind
        source: /tmp
        target: /tmp
      - type: bind
        source: /dev
        target: /dev
      - type: bind
        source: /run/udev
        target: /run/udev
    cap_add:
      - CAP_SYS_TTY_CONFIG
    # Add device access rights through cgroup...
    device_cgroup_rules:
      # ... for tty0
      - 'c 4:0 rmw'
      # ... for tty7
      - 'c 4:7 rmw'
      # ... for /dev/input devices
      - 'c 13:* rmw'
      - 'c 199:* rmw'
      # ... for /dev/dri devices
      - 'c 226:* rmw'
    command: --developer weston-launch --tty=/dev/tty7 --user=torizon
    healthcheck:
        test: ["CMD", "test", "-S", "/tmp/.X11-unix/X0"]
        interval: 5s
        timeout: 4s
        retries: 6
        start_period: 10s

  kiosk:
    image: munderwoods/kiosk-proto:latest
    security_opt:
      - seccomp:unconfined
    command: /usr/lib/luxer-kiosk-qt-ui-proto/verdin-arm
    shm_size: '256mb'
    device_cgroup_rules:
      # ... for /dev/dri devices
      - 'c 226:* rmw'
      - 'c 199:* rmw'
    volumes:
      - type: bind
        source: /tmp
        target: /tmp
      - type: bind
        source: /var/run/dbus
        target: /var/run/dbus
      - type: bind
        source: /dev/dri
        target: /dev/dri
      - type: bind
        source: /dev/galcore
        target: /dev/galcore

    depends_on:
      weston:
        condition: service_healthy

    devices:
       - "/dev/verdin-uart1:/dev/verdin-uart1"
       - "/dev/video0:/dev/video0"
       - "/dev/video1:/dev/video1"
       - "/dev/ttyUSB0:/dev/ttyUSB0"

    restart: on-failure

With this new Dockerfile:

matt@matt-X62:~/luxer/luxer-kiosk-qt-ui-proto$ cat Dockerfile 
FROM --platform=linux/arm64/v8 \
    torizon/wayland-base-vivante:3

RUN apt update

RUN apt-get -q -y update && \
    apt-get -q -y install \
    build-essential \
        qt5-qmake:arm64 \
        qtdeclarative5-dev:arm64 \
        qtmultimedia5-dev:arm64 \
        libqt5multimedia5-plugins:arm64 \
        libqt5serialbus5:arm64 \
        libqt5serialbus5-dev:arm64 \
        libtesseract-dev:arm64 \
        tesseract-ocr:arm64 \
        libdrm2:arm64 \
        libqt5gui5:arm64 \
        libqt5quick5:arm64 \
        libgl1:arm64 \
        qtbase5-dev:arm64 \
        libqt5serialport5:arm64 \
        libqt5serialport5-dev:arm64 \
        qtwayland5:arm64 \
        python3-pip:arm64 \
        gstreamer1.0-plugins-bad:arm64 \
        g++:arm64 \
        vim:arm64 \
        qtwebengine5-dev:arm64 \
        libqt5webkit5:arm64 \
        libqt5webkit5-dev:arm64 \
        libqt5webenginewidgets5:arm64 \
        libqt5webview5:arm64 \
        libqt5webview5-dev:arm64 \
        git:arm64 \
        gcc:arm64 \
        ocl-icd-libopencl1:arm64 \
        make:arm64 \
        cmake:arm64 \
    && \
    apt-get clean && apt-get autoremove && \
    rm -rf /var/lib/apt/lists/*

COPY . /usr/lib/luxer-kiosk-qt-ui-proto

When I try to run docker-compose up against this docker-compose file on my board I get this output:

matt@matt-X62:~/luxer/luxer-kiosk-qt-ui-proto$ ssh torizon@10.0.0.6
Last login: Mon Jun 12 00:02:04 2023 from 10.0.0.25

** WARNING **
THIS DEVICE IS IN ENGINEERING MODE

torizon@verdin-imx8mp-14762939:~$ docker-compose up
Starting torizon_weston_1 ... done
Starting torizon_kiosk_1  ... done
Attaching to torizon_weston_1, torizon_kiosk_1
weston_1  | NXP EULA has already been accepted.
weston_1  | SoC is: 'i.MX8MP'
weston_1  | SoC has GPU: true
weston_1  | SoC has DPU: false
weston_1  | g2d implementation: viv
weston_1  | Removing previously created '.X*-lock' entries under /tmp before starting Weston. Pass 'IGNORE_X_LOCKS=1' environment variable to Weston container to disable this behavior.
weston_1  | dos2unix: converting file /etc/xdg/weston/weston.ini to Unix format...
weston_1  | dos2unix: converting file /etc/xdg/weston-dev/weston.ini to Unix format...
weston_1  | Couldn't open /dev/tty1
weston_1  | /usr/bin/entry.sh: line 89: [: =: unary operator expected
weston_1  | NXP EULA has already been accepted.
weston_1  | touch: cannot touch '/tmp/nxp-eula-accepted': Permission denied
weston_1  | touch: cannot touch '/tmp/nxp-eula-accepted': Permission denied
weston_1  | Date: 2023-06-12 UTC
weston_1  | [02:19:26.149] weston 9.0.0
weston_1  |                https://wayland.freedesktop.org
weston_1  |                Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
weston_1  |                Build: 9.0.0
weston_1  | [02:19:26.149] Command line: /usr/bin/weston
weston_1  | [02:19:26.149] OS: Linux, 5.4.193-5.7.2+git.b60d3160fd04, #1-TorizonCore SMP PREEMPT Fri Dec 23 15:47:24 UTC 2022, aarch64
weston_1  | [02:19:26.150] Using config file '/etc/xdg/weston-dev//weston.ini'
weston_1  | [02:19:26.150] Output repaint window is 7 ms maximum.
weston_1  | Date: 2023-06-12 UTC
weston_1  | [02:19:26.149] weston 9.0.0
weston_1  |                https://wayland.freedesktop.org
weston_1  |                Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
weston_1  |                Build: 9.0.0
weston_1  | [02:19:26.149] Command line: /usr/bin/weston
weston_1  | [02:19:26.149] OS: Linux, 5.4.193-5.7.2+git.b60d3160fd04, #1-TorizonCore SMP PREEMPT Fri Dec 23 15:47:24 UTC 2022, aarch64
weston_1  | [02:19:26.150] Using config file '/etc/xdg/weston-dev//weston.ini'
weston_1  | [02:19:26.150] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/drm-backend.so'
weston_1  | [02:19:26.150] Output repaint window is 7 ms maximum.
weston_1  | [02:19:26.150] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/drm-backend.so'
weston_1  | [02:19:26.157] initializing drm backend
weston_1  | [02:19:26.158] logind: not running in a systemd session
weston_1  | [02:19:26.158] logind: cannot setup systemd-logind helper (-61), using legacy fallback
weston_1  | [02:19:26.157] initializing drm backend
weston_1  | [02:19:26.158] logind: not running in a systemd session
weston_1  | [02:19:26.158] logind: cannot setup systemd-logind helper (-61), using legacy fallback
weston_1  | [02:19:26.161] using /dev/dri/card0
weston_1  | [02:19:26.161] DRM: supports atomic modesetting
weston_1  | [02:19:26.161] DRM: does not support GBM modifiers
weston_1  | [02:19:26.161] DRM: supports picture aspect ratio
weston_1  | [02:19:26.162] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/gl-renderer.so'
weston_1  | [02:19:26.161] using /dev/dri/card0
weston_1  | [02:19:26.161] DRM: supports atomic modesetting
weston_1  | [02:19:26.161] DRM: does not support GBM modifiers
weston_1  | [02:19:26.161] DRM: supports picture aspect ratio
weston_1  | [02:19:26.162] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/gl-renderer.so'
weston_1  | [02:19:26.170] EGL client extensions: EGL_EXT_client_extensions
weston_1  |                EGL_EXT_platform_base EGL_KHR_platform_wayland
weston_1  |                EGL_EXT_platform_wayland EGL_KHR_platform_gbm
weston_1  | [02:19:26.170] EGL client extensions: EGL_EXT_client_extensions
weston_1  |                EGL_EXT_platform_base EGL_KHR_platform_wayland
weston_1  |                EGL_EXT_platform_wayland EGL_KHR_platform_gbm
weston_1  | [02:19:26.173] EGL version: 1.5
weston_1  | [02:19:26.173] EGL version: 1.5
weston_1  | [02:19:26.173] EGL vendor: Vivante Corporation
weston_1  | [02:19:26.173] EGL client APIs: OpenGL_ES OpenVG
weston_1  | [02:19:26.173] EGL extensions: EGL_KHR_fence_sync EGL_KHR_reusable_sync
weston_1  |                EGL_KHR_wait_sync EGL_KHR_image EGL_KHR_image_base
weston_1  |                EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image
weston_1  |                EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
weston_1  |                EGL_EXT_image_dma_buf_import
weston_1  |                EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_lock_surface
weston_1  |                EGL_KHR_create_context EGL_KHR_no_config_context
weston_1  |                EGL_KHR_surfaceless_context EGL_KHR_get_all_proc_addresses
weston_1  |                EGL_EXT_create_context_robustness EGL_EXT_protected_surface
weston_1  |                EGL_EXT_protected_content EGL_EXT_buffer_age
weston_1  |                EGL_ANDROID_native_fence_sync EGL_WL_bind_wayland_display
weston_1  |                EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
weston_1  |                EGL_EXT_swap_buffers_with_damage
weston_1  |                EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float
weston_1  | [02:19:26.174] EGL_KHR_surfaceless_context available
weston_1  | [02:19:26.173] EGL vendor: Vivante Corporation
weston_1  | [02:19:26.173] EGL client APIs: OpenGL_ES OpenVG
weston_1  | [02:19:26.173] EGL extensions: EGL_KHR_fence_sync EGL_KHR_reusable_sync
weston_1  |                EGL_KHR_wait_sync EGL_KHR_image EGL_KHR_image_base
weston_1  |                EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image
weston_1  |                EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
weston_1  |                EGL_EXT_image_dma_buf_import
weston_1  |                EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_lock_surface
weston_1  |                EGL_KHR_create_context EGL_KHR_no_config_context
weston_1  |                EGL_KHR_surfaceless_context EGL_KHR_get_all_proc_addresses
weston_1  |                EGL_EXT_create_context_robustness EGL_EXT_protected_surface
weston_1  |                EGL_EXT_protected_content EGL_EXT_buffer_age
weston_1  |                EGL_ANDROID_native_fence_sync EGL_WL_bind_wayland_display
weston_1  |                EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
weston_1  |                EGL_EXT_swap_buffers_with_damage
weston_1  |                EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float
weston_1  | [02:19:26.174] EGL_KHR_surfaceless_context available
weston_1  | [02:19:26.177] GL version: OpenGL ES 3.1 V6.4.3.p1.305572
weston_1  | [02:19:26.178] GLSL version: OpenGL ES GLSL ES 3.10
weston_1  | [02:19:26.178] GL vendor: Vivante Corporation
weston_1  | [02:19:26.178] GL renderer: Vivante GC7000UL
weston_1  | [02:19:26.178] GL extensions: GL_OES_vertex_type_10_10_10_2
weston_1  |                GL_OES_vertex_half_float GL_OES_element_index_uint
weston_1  |                GL_OES_mapbuffer GL_OES_vertex_array_object
weston_1  |                GL_OES_compressed_ETC1_RGB8_texture
weston_1  |                GL_OES_compressed_paletted_texture GL_OES_texture_npot
weston_1  |                GL_OES_rgb8_rgba8 GL_OES_depth_texture
weston_1  |                GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32
weston_1  |                GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap
weston_1  |                GL_OES_get_program_binary GL_OES_fragment_precision_high
weston_1  |                GL_OES_standard_derivatives GL_OES_EGL_image
weston_1  |                GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3
weston_1  |                GL_OES_EGL_sync GL_OES_texture_stencil8
weston_1  |                GL_OES_shader_image_atomic
weston_1  |                GL_OES_texture_storage_multisample_2d_array
weston_1  |                GL_OES_required_internalformat GL_OES_surfaceless_context
weston_1  |                GL_OES_draw_buffers_indexed GL_OES_texture_border_clamp
weston_1  |                GL_OES_texture_buffer GL_OES_texture_cube_map_array
weston_1  |                GL_OES_draw_elements_base_vertex GL_OES_texture_half_float
weston_1  |                GL_OES_texture_float GL_KHR_blend_equation_advanced
weston_1  |                GL_KHR_debug GL_KHR_robustness
weston_1  |                GL_KHR_robust_buffer_access_behavior
weston_1  |                GL_EXT_texture_type_2_10_10_10_REV
weston_1  |                GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
weston_1  |                GL_EXT_texture_compression_s3tc GL_EXT_read_format_bgra
weston_1  |                GL_EXT_multi_draw_arrays GL_EXT_frag_depth
weston_1  |                GL_EXT_discard_framebuffer GL_EXT_blend_minmax
weston_1  |                GL_EXT_multisampled_render_to_texture
weston_1  |                GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float
weston_1  |                GL_EXT_robustness GL_EXT_texture_sRGB_decode
weston_1  |                GL_EXT_draw_buffers_indexed GL_EXT_texture_border_clamp
weston_1  |                GL_EXT_texture_buffer GL_EXT_texture_cube_map_array
weston_1  |                GL_EXT_multi_draw_indirect GL_EXT_draw_elements_base_vertex
weston_1  |                GL_EXT_texture_rg GL_EXT_protected_textures GL_EXT_sRGB
weston_1  |                GL_VIV_direct_texture
weston_1  | [02:19:26.178] GL ES 2 renderer features:
weston_1  |                read-back format: BGRA
weston_1  |                wl_shm sub-image to texture: yes
weston_1  | [02:19:26.177] GL version: OpenGL ES 3.1 V6.4.3.p1.305572
weston_1  | [02:19:26.178] GLSL version: OpenGL ES GLSL ES 3.10
weston_1  | [02:19:26.178] GL vendor: Vivante Corporation
weston_1  | [02:19:26.178] GL renderer: Vivante GC7000UL
weston_1  | [02:19:26.178] GL extensions: GL_OES_vertex_type_10_10_10_2
weston_1  |                GL_OES_vertex_half_float GL_OES_element_index_uint
weston_1  |                GL_OES_mapbuffer GL_OES_vertex_array_object
weston_1  |                GL_OES_compressed_ETC1_RGB8_texture
weston_1  |                GL_OES_compressed_paletted_texture GL_OES_texture_npot
weston_1  |                GL_OES_rgb8_rgba8 GL_OES_depth_texture
weston_1  |                GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32
weston_1  |                GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap
weston_1  |                GL_OES_get_program_binary GL_OES_fragment_precision_high
weston_1  |                GL_OES_standard_derivatives GL_OES_EGL_image
weston_1  |                GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3
weston_1  |                GL_OES_EGL_sync GL_OES_texture_stencil8
weston_1  |                GL_OES_shader_image_atomic
weston_1  |                GL_OES_texture_storage_multisample_2d_array
weston_1  |                GL_OES_required_internalformat GL_OES_surfaceless_context
weston_1  |                GL_OES_draw_buffers_indexed GL_OES_texture_border_clamp
weston_1  |                GL_OES_texture_buffer GL_OES_texture_cube_map_array
weston_1  |                GL_OES_draw_elements_base_vertex GL_OES_texture_half_float
weston_1  |                GL_OES_texture_float GL_KHR_blend_equation_advanced
weston_1  |                GL_KHR_debug GL_KHR_robustness
weston_1  |                GL_KHR_robust_buffer_access_behavior
weston_1  |                GL_EXT_texture_type_2_10_10_10_REV
weston_1  |                GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
weston_1  |                GL_EXT_texture_compression_s3tc GL_EXT_read_format_bgra
weston_1  |                GL_EXT_multi_draw_arrays GL_EXT_frag_depth
weston_1  |                GL_EXT_discard_framebuffer GL_EXT_blend_minmax
weston_1  |                GL_EXT_multisampled_render_to_texture
weston_1  |                GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float
weston_1  |                GL_EXT_robustness GL_EXT_texture_sRGB_decode
weston_1  |                GL_EXT_draw_buffers_indexed GL_EXT_texture_border_clamp
weston_1  |                GL_EXT_texture_buffer GL_EXT_texture_cube_map_array
weston_1  |                GL_EXT_multi_draw_indirect GL_EXT_draw_elements_base_vertex
weston_1  |                GL_EXT_texture_rg GL_EXT_protected_textures GL_EXT_sRGB
weston_1  |                GL_VIV_direct_texture
weston_1  | [02:19:26.178] GL ES 2 renderer features:
weston_1  |                read-back format: BGRA
weston_1  |                wl_shm sub-image to texture: yes
weston_1  |                EGL Wayland extension: yes
weston_1  |                EGL Wayland extension: yes
weston_1  | [02:19:26.191] event2  - Webcam C110: Webcam C110: is tagged by udev as: Keyboard
weston_1  | [02:19:26.191] event2  - Webcam C110: Webcam C110: device is a keyboard
weston_1  | [02:19:26.191] event2  - Webcam C110: Webcam C110: is tagged by udev as: Keyboard
weston_1  | [02:19:26.191] event2  - Webcam C110: Webcam C110: device is a keyboard
weston_1  | [02:19:26.194] event1  - gpio-keys: is tagged by udev as: Keyboard
weston_1  | [02:19:26.194] event1  - gpio-keys: device is a keyboard
weston_1  | [02:19:26.194] event1  - gpio-keys: is tagged by udev as: Keyboard
weston_1  | [02:19:26.194] event1  - gpio-keys: device is a keyboard
weston_1  | [02:19:26.197] event0  - 30370000.snvs:snvs-powerkey: is tagged by udev as: Keyboard
weston_1  | [02:19:26.198] event0  - 30370000.snvs:snvs-powerkey: device is a keyboard
weston_1  | [02:19:26.197] event0  - 30370000.snvs:snvs-powerkey: is tagged by udev as: Keyboard
weston_1  | [02:19:26.198] event0  - 30370000.snvs:snvs-powerkey: device is a keyboard
weston_1  | [02:19:26.203] event3  - Atmel maXTouch Touchscreen: is tagged by udev as: Touchscreen
weston_1  | [02:19:26.203] event3  - Atmel maXTouch Touchscreen: is tagged by udev as: Touchscreen
weston_1  | [02:19:26.203] event3  - Atmel maXTouch Touchscreen: device is a touch device
weston_1  | [02:19:26.203] event3  - Atmel maXTouch Touchscreen: device is a touch device
weston_1  | [02:19:26.221] libinput: configuring device "Webcam C110: Webcam C110".
weston_1  | [02:19:26.221] libinput: configuring device "gpio-keys".
weston_1  | [02:19:26.221] libinput: configuring device "30370000.snvs:snvs-powerkey".
weston_1  | [02:19:26.221] Touchscreen - Atmel maXTouch Touchscreen - /sys/devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-004a/input/input3/event3
weston_1  | [02:19:26.221] libinput: configuring device "Atmel maXTouch Touchscreen".
weston_1  | [02:19:26.221] input device event3 has no enabled output associated (none named), skipping calibration for now.
weston_1  | [02:19:26.222] DRM: head 'DSI-1' found, connector 35 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
weston_1  | [02:19:26.221] libinput: configuring device "Webcam C110: Webcam C110".
weston_1  | [02:19:26.221] libinput: configuring device "gpio-keys".
weston_1  | [02:19:26.221] libinput: configuring device "30370000.snvs:snvs-powerkey".
weston_1  | [02:19:26.221] Touchscreen - Atmel maXTouch Touchscreen - /sys/devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-004a/input/input3/event3
weston_1  | [02:19:26.221] libinput: configuring device "Atmel maXTouch Touchscreen".
weston_1  | [02:19:26.221] input device event3 has no enabled output associated (none named), skipping calibration for now.
weston_1  | [02:19:26.222] DRM: head 'DSI-1' found, connector 35 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
weston_1  | [02:19:26.222] Registered plugin API 'weston_drm_output_api_v1' of size 24
weston_1  | [02:19:26.222] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 48
weston_1  | [02:19:26.222] Registered plugin API 'weston_drm_output_api_v1' of size 24
weston_1  | [02:19:26.222] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 48
weston_1  | [02:19:26.224] Chosen EGL config details: id:  41 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-60 type: win|pix|pbf|swap_preserved vis_id: XRGB8888 (0x34325258)
weston_1  | [02:19:26.224] Output DSI-1 (crtc 33) video modes:
weston_1  |                1280x800@58.5, preferred, current, 69.3 MHz
weston_1  | [02:19:26.224] associating input device event2 with output DSI-1 (none by udev)
weston_1  | [02:19:26.224] associating input device event1 with output DSI-1 (none by udev)
weston_1  | [02:19:26.224] associating input device event0 with output DSI-1 (none by udev)
weston_1  | [02:19:26.224] associating input device event3 with output DSI-1 (none by udev)
weston_1  | [02:19:26.224] Output 'DSI-1' enabled with head(s) DSI-1
weston_1  | [02:19:26.224] Compositor capabilities:
weston_1  |                arbitrary surface rotation: yes
weston_1  |                screen capture uses y-flip: yes
weston_1  |                presentation clock: CLOCK_MONOTONIC, id 1
weston_1  |                presentation clock resolution: 0.000000001 s
weston_1  | [02:19:26.225] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
weston_1  | [02:19:26.224] Chosen EGL config details: id:  41 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-60 type: win|pix|pbf|swap_preserved vis_id: XRGB8888 (0x34325258)
weston_1  | [02:19:26.224] Output DSI-1 (crtc 33) video modes:
weston_1  |                1280x800@58.5, preferred, current, 69.3 MHz
weston_1  | [02:19:26.224] associating input device event2 with output DSI-1 (none by udev)
weston_1  | [02:19:26.224] associating input device event1 with output DSI-1 (none by udev)
weston_1  | [02:19:26.224] associating input device event0 with output DSI-1 (none by udev)
weston_1  | [02:19:26.224] associating input device event3 with output DSI-1 (none by udev)
weston_1  | [02:19:26.224] Output 'DSI-1' enabled with head(s) DSI-1
weston_1  | [02:19:26.224] Compositor capabilities:
weston_1  |                arbitrary surface rotation: yes
weston_1  |                screen capture uses y-flip: yes
weston_1  |                presentation clock: CLOCK_MONOTONIC, id 1
weston_1  |                presentation clock resolution: 0.000000001 s
weston_1  | [02:19:26.225] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
weston_1  | [02:19:26.226] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
weston_1  | [02:19:26.226] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
weston_1  | [02:19:26.231] Loading module '/usr/lib/aarch64-linux-gnu/weston/screen-share.so'
weston_1  | [02:19:26.231] Loading module '/usr/lib/aarch64-linux-gnu/weston/screen-share.so'
weston_1  | [02:19:26.243] Screen share failed: No wl_shm found
weston_1  | [02:19:26.243] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/xwayland.so'
weston_1  | [02:19:26.243] Screen share failed: No wl_shm found
weston_1  | [02:19:26.243] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/xwayland.so'
weston_1  | [02:19:26.265] Registered plugin API 'weston_xwayland_v1' of size 32
weston_1  | [02:19:26.265] Registered plugin API 'weston_xwayland_v1' of size 32
weston_1  | [02:19:26.265] Registered plugin API 'weston_xwayland_surface_v1' of size 16
weston_1  | [02:19:26.266] xserver listening on display :0
weston_1  | [02:19:26.265] Registered plugin API 'weston_xwayland_surface_v1' of size 16
weston_1  | [02:19:26.266] xserver listening on display :0
weston_1  | [02:19:26.266] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
weston_1  | [02:19:26.266] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
weston_1  | [02:19:26.302] unknown child process exited
weston_1  | [02:19:26.302] unknown child process exited
weston_1  | could not load cursor 'dnd-move'
weston_1  | could not load cursor 'dnd-move'
weston_1  | could not load cursor 'dnd-copy'
weston_1  | could not load cursor 'dnd-copy'
weston_1  | could not load cursor 'dnd-none'
weston_1  | could not load cursor 'dnd-none'
weston_1  | could not load cursor 'dnd-move'
weston_1  | could not load cursor 'dnd-move'
weston_1  | could not load cursor 'dnd-copy'
weston_1  | could not load cursor 'dnd-copy'
weston_1  | could not load cursor 'dnd-none'
weston_1  | could not load cursor 'dnd-none'
kiosk_1   | QML debugging is enabled. Only use this in a safe environment.
weston_1  | [02:19:32.905] Spawned Xwayland server, pid 50
weston_1  | [02:19:32.905] Spawned Xwayland server, pid 50
weston_1  | [     1] wl_drm_is_format_supported, format = 0x30335241
weston_1  | [     2] wl_drm_is_format_supported, format = 0x30335258
weston_1  | [     3] wl_drm_is_format_supported, format = 0x30334241
weston_1  | [     4] wl_drm_is_format_supported, format = 0x30334258
weston_1  | [     1] wl_drm_is_format_supported, format = 0x30335241
weston_1  | [     2] wl_drm_is_format_supported, format = 0x30335258
weston_1  | [     3] wl_drm_is_format_supported, format = 0x30334241
weston_1  | [     4] wl_drm_is_format_supported, format = 0x30334258
weston_1  | [     5] wl_drm_authenticate, id = 2
weston_1  | Disabling glamor and dri3 support, XWAYLAND_NO_GLAMOR is set
weston_1  | Failed to initialize glamor, falling back to sw
weston_1  | [     5] wl_drm_authenticate, id = 2
weston_1  | Disabling glamor and dri3 support, XWAYLAND_NO_GLAMOR is set
weston_1  | Failed to initialize glamor, falling back to sw
weston_1  | [02:19:33.014] xfixes version: 5.0
weston_1  | [02:19:33.014] xfixes version: 5.0
weston_1  | [02:19:33.038] created wm, root 71
weston_1  | [02:19:33.038] created wm, root 71
kiosk_1   | No protocol specified
kiosk_1   | 
kiosk_1   | qt.qpa.xcb: could not connect to display :0
kiosk_1   | qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
kiosk_1   | This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
kiosk_1   | 
kiosk_1   | Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
kiosk_1   | 
weston_1  | The XKEYBOARD keymap compiler (xkbcomp) reports:
weston_1  | > Warning:          Unsupported maximum keycode 569, clipping.
weston_1  | >                   X11 cannot support keycodes above 255.
weston_1  | The XKEYBOARD keymap compiler (xkbcomp) reports:
weston_1  | > Warning:          Unsupported maximum keycode 569, clipping.
weston_1  | >                   X11 cannot support keycodes above 255.
weston_1  | Errors from xkbcomp are not fatal to the X server
weston_1  | Errors from xkbcomp are not fatal to the X server
kiosk_1   | QML debugging is enabled. Only use this in a safe environment.
kiosk_1   | No protocol specified
kiosk_1   | 
kiosk_1   | qt.qpa.xcb: could not connect to display :0
kiosk_1   | qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
kiosk_1   | This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
kiosk_1   | 
kiosk_1   | Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
kiosk_1   | 
torizon_kiosk_1 exited with code 133
kiosk_1   | QML debugging is enabled. Only use this in a safe environment.
kiosk_1   | No protocol specified
kiosk_1   | 
kiosk_1   | qt.qpa.xcb: could not connect to display :0
kiosk_1   | qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
kiosk_1   | This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
kiosk_1   | 
kiosk_1   | Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
kiosk_1   | 
torizon_kiosk_1 exited with code 133

It apparently does not see the display. Can anyone tell me what I messed up? Thanks.

Hi @munderwoods ,

Looks like your Qt app is trying to use the X11 platform plugin (xcb), but that’s not really possible, given that the proprietary GPU drivers (Vivante) being used don’t have support for X11.

Did you look at how we setup a Qt 5 environment in our Debian containers, like I previously said here: How do I get my QT app on my verdin with dev carrier board? - #22 by lucas_a.tx
One of the things we set is exactly the platform plugin through QT_QPA_PLATFORM being wayland. Please take a look at our Qt 5 Wayland dockerfile as well.

Best regards,
Lucas Akira

You are right, of course, thank you. I had already forgotten. It’s been a crazy week since I’m trying to get this project ready for a big demo on Wednesday.

Since I have you here looking at my Dockerfiles, I no longer seem to have access to /dev/ttyUSB0. Can you see a reason that might be the case with this configuration?

Usually my app sees it like so:

Description:  "FT232R USB UART" 

Has vendor id?:  true 

Vendor ID:  1027 

Has product id?:  true 

Product ID:  24577 

"ttyUSB0"

But with this Dockerfile/docker-compose that is not the case:

kiosk_1   | 
kiosk_1   | Description:  "" 
kiosk_1   | 
kiosk_1   | Has vendor id?:  false 
kiosk_1   | 
kiosk_1   | Vendor ID:  0 
kiosk_1   | 
kiosk_1   | Has product id?:  false 
kiosk_1   | 
kiosk_1   | Product ID:  0 

Maybe I’m forgetting something dumb again.

I should also mention that the app can still access /dev/video0 just fine.

Here are the permissions for the devices from inside the app container:

crw-rw----  1 root video    81,   0 Jun 12 00:25 video0
crw-rw----  1 root dialout 188,   0 Jun 12 14:57 ttyUSB0

This is the output of dmesg run from inside the app container after I unplug my usb device and plug it back in. Clearly it’s seeing the device events.

[65803.537627] device veth6a132a7 entered promiscuous mode
[65803.537699] audit: type=1700 audit(1686587903.925:1658): dev=veth6a132a7 prom=256 old_prom=0 auid=4294967295 uid=0 gid=0 ses=4294967295
[65804.174664] audit: type=1325 audit(1686587904.555:1659): table=nat family=2 entries=0
[65804.181174] audit: type=1325 audit(1686587904.565:1660): table=filter family=2 entries=0
[65804.188239] audit: type=1325 audit(1686587904.575:1661): table=nat family=2 entries=5
[65804.190666] audit: type=1325 audit(1686587904.575:1662): table=nat family=2 entries=7
[65804.195186] audit: type=1325 audit(1686587904.585:1663): table=nat family=2 entries=8
[65804.198021] audit: type=1325 audit(1686587904.585:1664): table=nat family=2 entries=10
[65804.202111] audit: type=1325 audit(1686587904.585:1665): table=nat family=2 entries=11
[65804.206207] audit: type=1325 audit(1686587904.595:1666): table=nat family=2 entries=12
[65804.210004] audit: type=1325 audit(1686587904.595:1667): table=nat family=2 entries=13
[65804.297760] eth0: renamed from vethfc98f94
[65804.346533] IPv6: ADDRCONF(NETDEV_CHANGE): veth6a132a7: link becomes ready
[65804.346635] br-5b73ab591374: port 1(veth6a132a7) entered blocking state
[65804.346641] br-5b73ab591374: port 1(veth6a132a7) entered forwarding state
[65876.087282] imx-drm display-subsystem: sn65dsi83_bridge_disable
[65876.087291] sn65dsi83 3-002c: sn65dsi83_brg_stop_stream
[65876.088182] sn65dsi83 3-002c: sn65dsi83_brg_power_off
[65876.137594] imx-drm display-subsystem: sn65dsi83_bridge_mode_set: mode: 1280*800@69300
[65876.140954] imx-drm display-subsystem: sn65dsi83_bridge_enable
[65876.140962] sn65dsi83 3-002c: sn65dsi83_brg_setup
[65876.140965] sn65dsi83 3-002c: sn65dsi83_brg_power_on
[65876.166220] sn65dsi83 3-002c: DSI clock [ 207900000 ] Hz
[65876.166228] sn65dsi83 3-002c: GeoMetry [ 1280 x 800 ] Hz
[65876.167424] sn65dsi83 3-002c: client 0x000000005bc7db86
[65876.176528] sn65dsi83 3-002c: sn65dsi83_brg_start_stream
[65876.310146] vethfc98f94: renamed from eth0
[65876.376880] br-5b73ab591374: port 1(veth6a132a7) entered disabled state
[65876.397113] sn65dsi83 3-002c: client 0x000000005bc7db86
[65876.397433] sn65dsi83 3-002c: CHA (0xe5) = 0x71
[65876.435024] br-5b73ab591374: port 1(veth6a132a7) entered disabled state
[65876.437975] device veth6a132a7 left promiscuous mode
[65876.438049] br-5b73ab591374: port 1(veth6a132a7) entered disabled state
[65876.438083] kauditd_printk_skb: 1 callbacks suppressed
[65876.438088] audit: type=1700 audit(1686587976.814:1669): dev=veth6a132a7 prom=0 old_prom=256 auid=4294967295 uid=0 gid=0 ses=4294967295
[65921.297625] audit: type=1006 audit(1686588021.693:1670): pid=38507 uid=0 old-auid=4294967295 auid=1000 tty=tty7 old-ses=4294967295 ses=63 res=1
[65921.316033] audit: type=1105 audit(1686588021.703:1671): pid=38507 uid=0 auid=1000 ses=63 msg='op=PAM:session_open grantors=pam_selinux,pam_loginuid,pam_selinux,pam_env,pam_env,pam_limits,pam_lastlog,pam_mail,pam_permit,pam_unix acct="torizon" exe="/usr/bin/weston-launch" hostname=verdin-imx8mp-14762939 addr=? terminal=/dev/tty7 res=success'
[65921.436165] imx-drm display-subsystem: sn65dsi83_connector_detect
[65921.436174] imx-drm display-subsystem: sn65dsi83_connector_get_modes
[65921.436192] imx-drm display-subsystem: sn65dsi83_connector_mode_valid: mode: 1280*800@69300 is valid
[65927.125319] br-5b73ab591374: port 1(vethf963166) entered blocking state
[65927.125341] br-5b73ab591374: port 1(vethf963166) entered disabled state
[65927.125694] device vethf963166 entered promiscuous mode
[65927.125767] audit: type=1700 audit(1686588027.513:1672): dev=vethf963166 prom=256 old_prom=0 auid=4294967295 uid=0 gid=0 ses=4294967295
[65927.769311] audit: type=1325 audit(1686588028.163:1673): table=nat family=2 entries=0
[65927.775578] audit: type=1325 audit(1686588028.163:1674): table=filter family=2 entries=0
[65927.782595] audit: type=1325 audit(1686588028.173:1675): table=nat family=2 entries=5
[65927.785028] audit: type=1325 audit(1686588028.173:1676): table=nat family=2 entries=7
[65927.789997] audit: type=1325 audit(1686588028.183:1677): table=nat family=2 entries=8
[65927.792930] audit: type=1325 audit(1686588028.183:1678): table=nat family=2 entries=10
[65927.796859] audit: type=1325 audit(1686588028.183:1679): table=nat family=2 entries=11
[65927.800867] audit: type=1325 audit(1686588028.193:1680): table=nat family=2 entries=12
[65927.804860] audit: type=1325 audit(1686588028.193:1681): table=nat family=2 entries=13
[65927.859748] eth0: renamed from vethd7d4f67
[65927.938570] IPv6: ADDRCONF(NETDEV_CHANGE): vethf963166: link becomes ready
[65927.938681] br-5b73ab591374: port 1(vethf963166) entered blocking state
[65927.938689] br-5b73ab591374: port 1(vethf963166) entered forwarding state
[68817.626419] usb 1-1.1: USB disconnect, device number 3
[68817.627855] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[68817.627909] ftdi_sio 1-1.1:1.0: device disconnected
[68818.944699] usb 1-1.1: new full-speed USB device number 7 using xhci-hcd
[68819.085238] ftdi_sio 1-1.1:1.0: FTDI USB Serial Device converter detected
[68819.085344] usb 1-1.1: Detected FT232RL
[68819.087129] usb 1-1.1: FTDI USB Serial Device converter now attached to ttyUSB0

Well, hard-coding /dev/ttyUSB0 worked, but I don’t really want to do that. I don’t know why it wouldn’t be able to detect the device…