Weston containers on colibri-imx8x

I tried to run the docker-compose file torizon-samples/debian-container/demonstration/docker-compose.imx8.yml at bookworm · toradex/torizon-samples · GitHub
with TorizonCore 6.8.0+build.22 using docker-compose -f docker-compose.imx8.yml up, but it failed with the following console output.
Please help if you know the reason.

 ? Container test-weston-1  Created                                                                                                                                                                                                    0.2s
Attaching to test-weston-1
test-weston-1  | Switching VT tty1 to text mode if currently in graphics mode
test-weston-1  | Switching to VT 7
test-weston-1  | SoC is: 'i.MX8QXP'
test-weston-1  | SoC has GPU: true
test-weston-1  | SoC has DPU: true
test-weston-1  | g2d implementation: dpu
test-weston-1  | update-alternatives: using /usr/lib/aarch64-linux-gnu/libg2d-dpu.so.2 to provide /usr/lib/aarch64-linux-gnu/libg2d.so.2 (libg2d.so.2) in manual mode
test-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.
test-weston-1  | dos2unix: converting file /etc/xdg/weston/weston.ini to Unix format...
test-weston-1  | dos2unix: converting file /etc/xdg/weston-dev/weston.ini to Unix format...
test-weston-1  | 00:00:00.000 [INFO] [seatd/seat.c:39] Created VT-bound seat seat0
test-weston-1  | 00:00:00.000 [INFO] [seatd/seatd.c:194] seatd started
test-weston-1  | Date: 2024-12-25 UTC
test-weston-1  | [04:03:20.871] weston 12.0.4
test-weston-1  |                https://wayland.freedesktop.org
test-weston-1  |                Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
test-weston-1  |                Build: 12.0.4
test-weston-1  | [04:03:20.871] Command line: weston -Bdrm-backend.so --current-mode -Swayland-0 --use-g2d
test-weston-1  | [04:03:20.871] OS: Linux, 5.15.148-6.8.0+git.8c5c2dcbf6ba, #1-TorizonCore SMP PREEMPT Tue Aug 6 10:01:59 UTC 2024, aarch64
test-weston-1  | [04:03:20.871] Flight recorder: enabled
test-weston-1  | [04:03:20.872] Using config file '/etc/xdg/weston/weston.ini'
test-weston-1  | [04:03:20.873] Output repaint window is 7 ms maximum.
test-weston-1  | [04:03:20.873] Loading module '/usr/lib/aarch64-linux-gnu/libweston-12/drm-backend.so'
test-weston-1  | [04:03:20.885] initializing drm backend
test-weston-1  | [04:03:20.885] Trying libseat launcher...
test-weston-1  | 00:00:00.032 [INFO] [seatd/server.c:145] New client connected (pid: 30, uid: 1000, gid: 1000)
test-weston-1  | 00:00:00.032 [INFO] [seatd/seat.c:170] Added client 7 to seat0
test-weston-1  | 00:00:00.034 [INFO] [seatd/seat.c:480] Opened client 7 on seat0
test-weston-1  | [04:03:20.888] [libseat/libseat.c:73] Seat opened with backend 'seatd'
test-weston-1  | [04:03:20.888] [libseat/backend/seatd.c:212] Enabling seat
test-weston-1  | [04:03:20.888] libseat: session control granted
test-weston-1  | [04:03:20.899] using /dev/dri/card1
test-weston-1  | [04:03:20.899] DRM: supports atomic modesetting
test-weston-1  | [04:03:20.899] DRM: supports GBM modifiers
test-weston-1  | [04:03:20.899] DRM: does not support async page flipping
test-weston-1  | [04:03:20.899] DRM: supports picture aspect ratio
test-weston-1  | [04:03:20.900] Loading module '/usr/lib/aarch64-linux-gnu/libweston-12/g2d-renderer.so'
test-weston-1  | g2d_dev_open: open /dev/dma_heap/linux,cma failed, Permission denied
test-weston-1  | g2d_dev_open: open /dev/dma_heap/linux,cma-uncached failed, Permission denied
test-weston-1  | 00:00:00.148 [INFO] [seatd/client.c:471] Client disconnected
test-weston-1  | 00:00:00.162 [INFO] [seatd/seat.c:418] No clients on seat0 to activate
test-weston-1  | Switching back to vt 1
test-weston-1  | 00:00:00.163 [INFO] [seatd/seat.c:524] Closed client 7 on seat0
test-weston-1  | 00:00:00.163 [INFO] [seatd/seat.c:192] Removed client 7 from seat0
test-weston-1  | 00:00:00.164 [INFO] [seatd/seatd.c:218] seatd stopped
test-weston-1 exited with code 139

Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello,

The error message you’re encountering, “Permission denied” for the device files /dev/dma_heap/linux,cma and /dev/dma_heap/linux,cma-uncached, indicates a permissions issue when the Weston container attempts to access these resources. This is likely causing the container to exit with code 139.

Here are some steps you can take to resolve this issue:

  1. Check User Permissions: Ensure that the user running the Docker container has the necessary permissions to access these device files. You might need to add the user to the appropriate group that has access to these devices. Typically, this involves adding the user to the video or render group, depending on your system configuration.

    sudo usermod -aG video <your-username>
    sudo usermod -aG render <your-username>
    

    After modifying group memberships, log out and back in for the changes to take effect.

  2. Adjust Docker Permissions: You can modify the Docker Compose file to run the container with elevated privileges, which might be necessary for accessing certain hardware resources.

    In your docker-compose.yml, add the following under the specific service:

    services:
      test-weston:
        ...
        privileged: true
    

    Note that using privileged: true grants the container extended privileges, which should be used cautiously.

  3. Verify Device File Access: Ensure that the device files /dev/dma_heap/linux,cma and /dev/dma_heap/linux,cma-uncached exist and have the correct permissions set. You can check this with:

    ls -l /dev/dma_heap/
    

    If the files do not exist or have incorrect permissions, you may need to adjust them or ensure the necessary kernel modules are loaded.

By following these steps, you should be able to resolve the permission issues and successfully run the Weston container on your Colibri iMX8X module.

Best regards,
Toradex AI Assistant.

Please, also check if these links can help you solve your problem:

Flashing an image to aster based colibri-imx8x module.

Neither Check User Permissions nor Adjust Docker Permissions seem to be relevant.
However, if I use torizon/weston:oldstable-rc, the abnormal termination is no longer occurring, but a blue screen appears.

Switching to VT 7
SoC is: 'i.MX8QXP'
SoC has GPU: true
SoC has DPU: true
g2d implementation: dpu
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.
dos2unix: converting file /etc/xdg/weston/weston.ini to Unix format...
dos2unix: converting file /etc/xdg/weston-dev/weston.ini to Unix format...
00:00:00.000  [seatd/seat.c:39] Created VT-bound seat seat0
00:00:00.000  [seatd/seatd.c:194] seatd started
Date: 2024-12-25 UTC
[05:06:13.083] weston 10.0.1
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: lf-5.15.52-2.1.0-10-g9452feba
[05:06:13.084] Command line: weston -Bdrm-backend.so --current-mode -Swayland-0
[05:06:13.084] OS: Linux, 5.15.148-6.8.0+git.8c5c2dcbf6ba, #1-TorizonCore SMP PREEMPT Tue Aug 6 10:01:59 UTC 2024, aarch64
[05:06:13.084] Flight recorder: enabled
[05:06:13.085] Using config file '/etc/xdg/weston/weston.ini'
[05:06:13.085] Output repaint window is 7 ms maximum.
[05:06:13.086] Loading module '/usr/lib/aarch64-linux-gnu/libweston-10/drm-backend.so'
[05:06:13.100] initializing drm backend
[05:06:13.100] Trying libseat launcher...
00:00:00.067  [seatd/server.c:145] New client connected (pid: 28, uid: 1000, gid: 1000)
00:00:00.068  [seatd/seat.c:170] Added client 7 to seat0
00:00:00.068  [seatd/seat.c:480] Opened client 7 on seat0
[05:06:13.102] libseat: session control granted
[05:06:13.112] using /dev/dri/card1
[05:06:13.113] DRM: supports atomic modesetting
[05:06:13.113] DRM: supports GBM modifiers
[05:06:13.113] DRM: supports picture aspect ratio
[05:06:13.113] Loading module '/usr/lib/aarch64-linux-gnu/libweston-10/gl-renderer.so'
[05:06:13.129] EGL client extensions: EGL_EXT_client_extensions
               EGL_EXT_platform_base EGL_KHR_platform_wayland
               EGL_EXT_platform_wayland EGL_EXT_device_query
               EGL_EXT_device_drm EGL_EXT_device_drm_render_node
               EGL_KHR_platform_gbm
[05:06:13.134] EGL device extensions: EGL_EXT_client_extensions
               EGL_EXT_platform_base EGL_KHR_platform_wayland
               EGL_EXT_platform_wayland EGL_EXT_device_query
               EGL_EXT_device_drm EGL_EXT_device_drm_render_node
               EGL_KHR_platform_gbm
[05:06:13.135] EGL version: 1.5
[05:06:13.135] EGL vendor: Vivante Corporation
[05:06:13.135] EGL client APIs: OpenGL_ES OpenVG
[05:06:13.135] EGL extensions: EGL_KHR_fence_sync EGL_KHR_reusable_sync
               EGL_KHR_wait_sync EGL_KHR_image EGL_KHR_image_base
               EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_lock_surface
               EGL_KHR_create_context EGL_KHR_no_config_context
               EGL_KHR_surfaceless_context EGL_KHR_get_all_proc_addresses
               EGL_EXT_create_context_robustness EGL_EXT_protected_surface
               EGL_EXT_protected_content EGL_EXT_buffer_age
               EGL_ANDROID_native_fence_sync EGL_WL_bind_wayland_display
               EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
               EGL_EXT_swap_buffers_with_damage
               EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float
[05:06:13.136] EGL_KHR_surfaceless_context available
[05:06:13.143] GL version: OpenGL ES 3.1 V6.4.3.p4.398061
[05:06:13.143] GLSL version: OpenGL ES GLSL ES 3.10
[05:06:13.143] GL vendor: Vivante Corporation
[05:06:13.143] GL renderer: Vivante GC7000L
[05:06:13.143] GL extensions: GL_OES_vertex_type_10_10_10_2
               GL_OES_vertex_half_float GL_OES_element_index_uint
               GL_OES_mapbuffer GL_OES_vertex_array_object
               GL_OES_compressed_ETC1_RGB8_texture
               GL_OES_compressed_paletted_texture GL_OES_texture_npot
               GL_OES_rgb8_rgba8 GL_OES_depth_texture
               GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32
               GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap
               GL_OES_get_program_binary GL_OES_fragment_precision_high
               GL_OES_standard_derivatives GL_OES_EGL_image
               GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3
               GL_OES_EGL_sync GL_OES_texture_stencil8
               GL_OES_shader_image_atomic
               GL_OES_texture_storage_multisample_2d_array
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_OES_copy_image GL_OES_draw_buffers_indexed
               GL_OES_texture_border_clamp GL_OES_texture_buffer
               GL_OES_texture_cube_map_array GL_OES_draw_elements_base_vertex
               GL_OES_texture_half_float GL_OES_texture_float
               GL_KHR_blend_equation_advanced GL_KHR_debug GL_KHR_robustness
               GL_KHR_robust_buffer_access_behavior
               GL_EXT_texture_type_2_10_10_10_REV
               GL_EXT_texture_filter_anisotropic
               GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
               GL_EXT_texture_compression_s3tc GL_EXT_read_format_bgra
               GL_EXT_multi_draw_arrays GL_EXT_frag_depth
               GL_EXT_discard_framebuffer GL_EXT_blend_minmax
               GL_EXT_multisampled_render_to_texture
               GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float
               GL_EXT_robustness GL_EXT_texture_sRGB_decode
               GL_EXT_draw_buffers_indexed GL_EXT_texture_border_clamp
               GL_EXT_texture_buffer GL_EXT_copy_image
               GL_EXT_texture_cube_map_array GL_EXT_multi_draw_indirect
               GL_EXT_draw_elements_base_vertex GL_EXT_texture_rg
               GL_EXT_protected_textures GL_EXT_sRGB GL_EXT_unpack_subimage
               GL_VIV_direct_texture
[05:06:13.222] GL ES 3.1 - renderer features:
               read-back format: BGRA
               EGL Wayland extension: yes
[05:06:13.239] event1  - gpio-keys: is tagged by udev as: Keyboard
[05:06:13.240] event1  - gpio-keys: device is a keyboard
[05:06:13.244] event0  - sc-powerkey: is tagged by udev as: Keyboard
[05:06:13.244] event0  - sc-powerkey: device is a keyboard
[05:06:13.283] libinput: configuring device "gpio-keys".
[05:06:13.284] libinput: configuring device "sc-powerkey".
[05:06:13.284] DRM: head 'DPI-1' updated, connector 35 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[05:06:13.285] DRM: head 'DPI-1' found, connector 35 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[05:06:13.285] Registered plugin API 'weston_drm_output_api_v1' of size 24
[05:06:13.286] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 48
[05:06:13.286] Color manager: no-op
[05:06:13.286] Loading module '/usr/lib/libgbm.so'
[05:06:13.286] Failed to load module: /usr/lib/libgbm.so: cannot open shared object file: No such file or directory
[05:06:13.286] Output 'DPI-1' using color profile: built-in default sRGB SDR profile
[05:06:13.289] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-60 type: win|pix|pbf|swap_preserved vis_id: XRGB8888 (0x34325258)
[05:06:13.289] Output DPI-1 (crtc 33) video modes:
               800x480@60.1, preferred, current, 33.2 MHz
[05:06:13.289] associating input device event1 with output DPI-1 (none by udev)
[05:06:13.289] associating input device event0 with output DPI-1 (none by udev)
[05:06:13.289] Output 'DPI-1' enabled with head(s) DPI-1
[05:06:13.289] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               cursor planes: yes
               arbitrary resolutions: no
               view mask clipping: yes
               explicit sync: yes
               color operations: no
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[05:06:13.290] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
[05:06:13.292] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
[05:06:13.301] Note: support for the deprecated wl_shell interface is disabled. If a legacy client still needs it, it can be re-enabled by passing -Ddeprecated-wl-shell=true to Meson when building Weston.
[05:06:13.302] Loading module '/usr/lib/aarch64-linux-gnu/weston/screen-share.so'
[05:06:13.304] Loading module '/usr/lib/aarch64-linux-gnu/libweston-10/xwayland.so'
[05:06:13.343] Registered plugin API 'weston_xwayland_v1' of size 32
[05:06:13.343] Registered plugin API 'weston_xwayland_surface_v1' of size 16
[05:06:13.343] xserver listening on display :0
[05:06:13.344] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
could not load cursor 'dnd-move'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-none'
^C[05:06:21.198] caught signal 2
00:00:08.167  [seatd/seat.c:418] No clients on seat0 to activate
00:00:08.168  [seatd/seat.c:524] Closed client 7 on seat0
00:00:08.168  [seatd/seat.c:192] Removed client 7 from seat0
00:00:08.168  [seatd/seatd.c:218] seatd stopped
[05:06:21.205] output for input device event1 removed
[05:06:21.205] output for input device event0 remo

Hi, @Soejima.

Those samples files have been updated for Torizon OS 7 which uses our major 4 containers. For Torizon 6, one needs to use the major 3 containers which had a bit different naming scheme, basically you want to use image: torizon/weston-vivante:3 in the compose file.

Try this and see if it helps you.

Cheers!

1 Like

It worked fine on torizon/weston-vivante:3.
Thank you.