Hi team,
I’m trying to get the kiosk container working but I’m always getting an exception (I’d say from Chromium).
I’m using this sample as basis: https://github.com/toradex/torizon-samples/blob/master/sht31/docker-compose.yml
This is my docker-compose. Weston seems to work (I get a working cursor in the screen):
version: "2.4"
services:
bme280-influxdb:
build:
context: bme280-influxdb
container_name: bme280-influxdb
devices:
- "/dev/i2c-18"
networks:
- backend
command:
[
"wait-for-it",
"influxdb:8086",
"-t",
"60",
"--",
"python3",
"/usr/bin/bme280-influxdb.py",
"18",
"0x77"
]
flaskapp:
build:
context: flaskapp
tty: true
container_name: flaskapp
depends_on:
- bme280-influxdb
networks:
- backend
- frontend
ports:
- 5000:5000
working_dir: /flaskapp
command:
[
"wait-for-it",
"influxdb:8086",
"-t",
"60",
"--",
"python3",
"flaskapp.py",
]
weston:
environment:
- ACCEPT_FSL_EULA=1
container_name: weston
image: torizon/arm64v8-debian-weston-vivante:latest
# For Apalis iMX8 use this image
# image: torizon/arm64v8-debian-weston-vivante:latest
# 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"
kiosk:
build:
context: kiosk
container_name: kiosk
entrypoint: []
command:
[
"wait-for-it",
"flaskapp:5000",
"-t",
"60",
"--",
"/usr/bin/start-browser",
"--window-mode",
"http://flaskapp:5000",
]
networks:
- frontend
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
depends_on:
- weston
- flaskapp
shm_size: "256mb"
device_cgroup_rules:
# ... for /dev/dri devices
- "c 226:* rmw"
networks:
frontend:
internal: false
backend:
external:
name: backend
And this is my log (influxdb is launched separately for easier debugging):
colibri-imx8x-v10b-06410677:~/sample-bme280$ docker-compose up --build
WARNING: Found orphan containers (sample-bme280_portainer_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Building bme280-influxdb
Step 1/6 : ARG IMAGE_ARCH=arm64v8
Step 2/6 : FROM torizon/$IMAGE_ARCH-debian-base:buster
# Executing 1 build trigger
---> Using cache
---> abf3bcbfd237
Step 3/6 : RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-setuptools python3-influxdb wait-for-it python3-pip && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
---> Using cache
---> 287a2726e95f
Step 4/6 : RUN apt-get update && apt-get install -y procps
---> Using cache
---> d246a933b8be
Step 5/6 : RUN pip3 install smbus2 RPi.bme280
---> Using cache
---> b1026cceb776
Step 6/6 : COPY bme280-influxdb.py /usr/bin
---> Using cache
---> 40e9b8b2d30f
Successfully built 40e9b8b2d30f
Successfully tagged sample-bme280_bme280-influxdb:latest
Building flaskapp
Step 1/7 : ARG IMAGE_ARCH=arm64v8
Step 2/7 : FROM torizon/$IMAGE_ARCH-debian-base:buster
# Executing 1 build trigger
---> Using cache
---> abf3bcbfd237
Step 3/7 : RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-setuptools python3-flask python3-influxdb wait-for-it && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
---> Using cache
---> c2d03cd7f7b2
Step 4/7 : RUN mkdir flaskapp
---> Using cache
---> d8bd1724eb6d
Step 5/7 : COPY flaskapp.py flaskapp/
---> Using cache
---> 1628e892ca71
Step 6/7 : COPY templates/ flaskapp/templates/
---> Using cache
---> be28161bddb7
Step 7/7 : COPY static/ flaskapp/static/
---> Using cache
---> 695ab259adb2
Successfully built 695ab259adb2
Successfully tagged sample-bme280_flaskapp:latest
Building kiosk
Step 1/5 : ARG IMAGE_ARCH=arm64v8
Step 2/5 : FROM torizon/$IMAGE_ARCH-debian-kiosk-mode-browser:latest
---> 1e63910b22cc
Step 3/5 : USER root
---> Using cache
---> aaa1d9da143d
Step 4/5 : RUN sudo apt-get update && apt-get install -y --no-install-recommends wait-for-it && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
---> Using cache
---> ffbe3dd1202f
Step 5/5 : USER torizon
---> Using cache
---> e985315c068e
Successfully built e985315c068e
Successfully tagged sample-bme280_kiosk:latest
Starting bme280-influxdb ... done
Creating weston ... done
Starting flaskapp ... done
Recreating kiosk ... done
Attaching to weston, bme280-influxdb, flaskapp, kiosk
flaskapp | wait-for-it: waiting 60 seconds for influxdb:8086
bme280-influxdb | wait-for-it: waiting 60 seconds for influxdb:8086
weston | NXP EULA has already been accepted.
weston | Switching to VT 7
kiosk | wait-for-it: waiting 60 seconds for flaskapp:5000
weston | NXP EULA has already been accepted.
weston | touch: cannot touch '/tmp/nxp-eula-accepted': Permission denied
weston | Date: 2020-07-02 UTC
weston | [10:15:44.724] weston 5.0.0
weston | https://wayland.freedesktop.org
weston | Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
weston | Build: unknown (not built from git or tarball)
weston | [10:15:44.724] Command line: /usr/bin/weston --current-mode
weston | [10:15:44.724] OS: Linux, 4.14.170-4.0.0-devel+git.60f8ee9af1da, #1-TorizonCore SMP PREEMPT Wed Jun 24 11:43:05 UTC 2020, aarch64
weston | [10:15:44.725] Using config file '/etc/xdg/weston/weston.ini'
weston | [10:15:44.726] Output repaint window is 16 ms maximum.
weston | [10:15:44.726] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/drm-backend.so'
weston | [10:15:44.729] initializing drm backend
weston | [10:15:44.735] using /dev/dri/card1
weston | [10:15:44.735] DRM: supports universal planes
weston | [10:15:44.735] DRM: supports atomic modesetting
weston | [10:15:44.735] DRM: does not support picture aspect ratio
weston | [10:15:44.735] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/gl-renderer.so'
weston | [10:15:44.751] EGL client extensions: EGL_EXT_client_extensions
weston | EGL_EXT_platform_base EGL_KHR_platform_wayland
weston | EGL_EXT_platform_wayland EGL_KHR_platform_gbm
weston | [10:15:44.757] warning: neither EGL_EXT_swap_buffers_with_damage or EGL_KHR_swap_buffers_with_damage is supported. Performance could be affected.
weston | [10:15:44.757] EGL_KHR_surfaceless_context available
weston | [10:15:44.764] EGL version: 1.5
weston | [10:15:44.764] EGL vendor: Vivante Corporation
weston | [10:15:44.765] EGL client APIs: OpenGL_ES
weston | [10:15:44.765] EGL extensions: EGL_KHR_fence_sync EGL_KHR_reusable_sync
weston | EGL_KHR_wait_sync EGL_KHR_image EGL_KHR_image_base
weston | EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image
weston | EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
weston | EGL_EXT_image_dma_buf_import
weston | EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_lock_surface
weston | EGL_KHR_create_context EGL_KHR_surfaceless_context
weston | EGL_EXT_create_context_robustness EGL_EXT_protected_surface
weston | EGL_EXT_protected_content EGL_EXT_buffer_age
weston | EGL_ANDROID_native_fence_sync EGL_WL_bind_wayland_display
weston | EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
weston | [10:15:44.766] GL version: OpenGL ES 3.1 V6.2.4.p4.190076
weston | [10:15:44.766] GLSL version: OpenGL ES GLSL ES 3.10
weston | [10:15:44.766] GL vendor: Vivante Corporation
weston | [10:15:44.766] GL renderer: Vivante GC7000L
weston | [10:15:44.766] GL extensions: GL_OES_vertex_type_10_10_10_2
weston | GL_OES_vertex_half_float GL_OES_element_index_uint
weston | GL_OES_mapbuffer GL_OES_vertex_array_object
weston | GL_OES_compressed_ETC1_RGB8_texture
weston | GL_OES_compressed_paletted_texture GL_OES_texture_npot
weston | GL_OES_rgb8_rgba8 GL_OES_depth_texture
weston | GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32
weston | GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap
weston | GL_OES_get_program_binary GL_OES_fragment_precision_high
weston | GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_sync
weston | GL_OES_texture_stencil8 GL_OES_shader_image_atomic
weston | GL_OES_texture_storage_multisample_2d_array
weston | GL_OES_required_internalformat GL_OES_surfaceless_context
weston | GL_OES_copy_image GL_OES_draw_buffers_indexed
weston | GL_OES_texture_border_clamp GL_OES_texture_buffer
weston | GL_OES_texture_cube_map_array GL_OES_draw_elements_base_vertex
weston | GL_OES_texture_half_float GL_OES_texture_float
weston | GL_KHR_blend_equation_advanced GL_KHR_debug GL_KHR_robustness
weston | GL_KHR_robust_buffer_access_behavior
weston | GL_EXT_texture_type_2_10_10_10_REV
weston | GL_EXT_texture_filter_anisotropic
weston | GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
weston | GL_EXT_texture_compression_s3tc GL_EXT_read_format_bgra
weston | GL_EXT_multi_draw_arrays GL_EXT_frag_depth
weston | GL_EXT_discard_framebuffer GL_EXT_blend_minmax
weston | GL_EXT_multisampled_render_to_texture
weston | GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float
weston | GL_EXT_robustness GL_EXT_texture_sRGB_decode
weston | GL_EXT_draw_buffers_indexed GL_EXT_texture_border_clamp
weston | GL_EXT_texture_buffer GL_EXT_copy_image
weston | GL_EXT_texture_cube_map_array GL_EXT_multi_draw_indirect
weston | GL_EXT_draw_elements_base_vertex GL_EXT_texture_rg
weston | GL_EXT_protected_textures GL_EXT_sRGB GL_VIV_direct_texture
weston | [10:15:44.767] GL ES 2 renderer features:
weston | read-back format: BGRA
weston | wl_shm sub-image to texture: yes
weston | EGL Wayland extension: yes
weston | [10:15:44.794] event1 - AD7879 Touchscreen: is tagged by udev as: Touchscreen
weston | [10:15:44.795] event1 - AD7879 Touchscreen: device is a touch device
weston | [10:15:44.796] event1 - AD7879 Touchscreen: applying calibration: 1.063229 0.002205 -0.034633 -0.016840 -1.106605 1.051992
weston | [10:15:44.864] event3 - ELECOM ELECOM BlueLED Mouse: is tagged by udev as: Mouse
weston | [10:15:44.865] event3 - ELECOM ELECOM BlueLED Mouse: device is a pointer
weston | [10:15:44.877] event4 - ELECOM ELECOM BlueLED Mouse: is tagged by udev as: Keyboard
weston | [10:15:44.877] event4 - ELECOM ELECOM BlueLED Mouse: device is a keyboard
weston | [10:15:44.881] event2 - gpio-keys: is tagged by udev as: Keyboard
weston | [10:15:44.882] event2 - gpio-keys: device is a keyboard
weston | [10:15:44.885] event0 - sc-powerkey: is tagged by udev as: Keyboard
weston | [10:15:44.885] event0 - sc-powerkey: device is a keyboard
weston | [10:15:44.886] Touchscreen - AD7879 Touchscreen - /sys/devices/platform/5a800000.i2c/i2c-17/17-002c/input/input1/event1
weston | [10:15:44.921] DRM: head 'DPI-1' found, connector 29 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
weston | [10:15:44.921] Registered plugin API 'weston_drm_output_api_v1' of size 24
weston | [10:15:44.923] Chosen EGL config details:
weston | RGBA bits: 8 8 8 0
weston | swap interval range: 1 - 60
weston | [10:15:44.924] No backlight control for output 'DPI-1'
weston | [10:15:44.924] Output DPI-1 (crtc 31) video modes:
weston | 800x480@64.5, preferred, current, 33.3 MHz
weston | [10:15:44.924] associating input device event1 with output DPI-1 (none by udev)
weston | [10:15:44.924] associating input device event3 with output DPI-1 (none by udev)
weston | [10:15:44.924] associating input device event4 with output DPI-1 (none by udev)
weston | [10:15:44.924] associating input device event2 with output DPI-1 (none by udev)
weston | [10:15:44.924] associating input device event0 with output DPI-1 (none by udev)
weston | [10:15:44.924] Output 'DPI-1' enabled with head(s) DPI-1
weston | [10:15:44.924] Compositor capabilities:
weston | arbitrary surface rotation: yes
weston | screen capture uses y-flip: yes
weston | presentation clock: CLOCK_MONOTONIC, id 1
weston | presentation clock resolution: 0.000000001 s
weston | [10:15:44.925] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
weston | [10:15:44.927] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
weston | [10:15:44.935] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/xwayland.so'
weston | [10:15:44.986] Registered plugin API 'weston_xwayland_v1' of size 32
weston | [10:15:44.986] Registered plugin API 'weston_xwayland_surface_v1' of size 16
weston | [10:15:44.987] xserver listening on display :0
weston | [10:15:44.987] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
weston | could not load cursor 'dnd-move'
weston | could not load cursor 'dnd-move'
weston | could not load cursor 'dnd-copy'
weston | could not load cursor 'dnd-copy'
weston | could not load cursor 'dnd-none'
weston | could not load cursor 'dnd-none'
flaskapp | wait-for-it: influxdb:8086 is available after 27 seconds
bme280-influxdb | wait-for-it: influxdb:8086 is available after 30 seconds
flaskapp | * Serving Flask app "flaskapp" (lazy loading)
flaskapp | * Environment: production
flaskapp | WARNING: Do not use the development server in a production environment.
flaskapp | Use a production WSGI server instead.
flaskapp | * Debug mode: on
flaskapp | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
flaskapp | * Restarting with stat
kiosk | wait-for-it: flaskapp:5000 is available after 27 seconds
flaskapp | * Debugger is active!
flaskapp | * Debugger PIN: 101-624-054
kiosk | Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
kiosk | [1:1:0702/101618.588723:FATAL:zygote_host_impl_linux.cc(186)] Check failed: ReceiveFixedMessage(fds[0], kZygoteBootMessage, sizeof(kZygoteBootMessage), &boot_pid).
kiosk | #0 0xaaaae2f3db24 <unknown>
kiosk | #1 0xaaaae2ea79f0 <unknown>
kiosk | #2 0xaaaae2ebb114 <unknown>
kiosk | #3 0xaaaae3f0ecf8 <unknown>
kiosk | #4 0xaaaae2a998a8 <unknown>
kiosk | #5 0xaaaae3f0dd8c <unknown>
kiosk | #6 0xaaaae3f0fe40 <unknown>
kiosk | #7 0xaaaae2a9a7e4 <unknown>
kiosk | #8 0xaaaae2abd6cc <unknown>
kiosk | #9 0xaaaae2a9885c <unknown>
kiosk | #10 0xaaaae0a11bc0 ChromeMain
kiosk | #11 0xffff9f654d24 __libc_start_main
kiosk | #12 0xaaaae0a11a10 <unknown>
kiosk |
kiosk | Received signal 6
kiosk | #0 0xaaaae2f3db24 <unknown>
kiosk | #1 0xaaaae2ea79f0 <unknown>
kiosk | #2 0xaaaae2f3c85c <unknown>
kiosk | #3 0xaaaae2f3daac <unknown>
kiosk | #4 0xffffa4eba648 ([vdso]+0x647)
kiosk | #5 0xffff9f666714 gsignal
kiosk | #6 0xffff9f6548e8 abort
kiosk | #7 0xaaaae2f3da58 <unknown>
kiosk | #8 0xaaaae2ebb4d4 <unknown>
kiosk | #9 0xaaaae3f0ecf8 <unknown>
kiosk | #10 0xaaaae2a998a8 <unknown>
kiosk | #11 0xaaaae3f0dd8c <unknown>
kiosk | #12 0xaaaae3f0fe40 <unknown>
kiosk | #13 0xaaaae2a9a7e4 <unknown>
kiosk | #14 0xaaaae2abd6cc <unknown>
kiosk | #15 0xaaaae2a9885c <unknown>
kiosk | #16 0xaaaae0a11bc0 ChromeMain
kiosk | #17 0xffff9f654d24 __libc_start_main
kiosk | #18 0xaaaae0a11a10 <unknown>
kiosk | [end of stack trace]
kiosk | Calling _exit(1). Core file will not be generated.
kiosk exited with code 1
Flask is also working (I can access it from my PC).
Any idea? Thanks!