Logitech BRIO webcam is tagged by udev as: Keyboard

When I try to connect my Logitech BRIO webcam to USBH4 port, it’s recognized as a keyboard. I’ve been trying to get access to my webcam inside a Docker container, what can I do to make it visible as a camera?

Also I tried other webcams but I haven’t seen anything related to webcams in logs from Docker containers and in case of camera access in the browser my webcams were not found.

Logitech BRIO is a UVC device according to this resource,
sudo lsusb -d 046d:086b -v | grep “14 Video” prints:

      bFunctionClass         14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
can't get debug descriptor: Resource temporarily unavailable

After plugging my webcam to USBH4 port, dmesg | tail prints such logs:

[  851.918807] usb 2-1: new SuperSpeed USB device number 7 using cdns-usb3
[  851.946369] usb 2-1: current rate 16000 is different from the runtime rate 24000
[  851.948813] usb 2-1: current rate 16000 is different from the runtime rate 32000
[  851.951303] usb 2-1: current rate 16000 is different from the runtime rate 48000
[  851.958733] input: BRIO 4K Stream Edition as /devices/platform/5b110000.usb3/xhci-cdns3/usb2/2-1/2-1:1.4/0003:046D:086B.0002/input/input3
[  852.019141] hid-generic 0003:046D:086B.0002: input,hidraw0: USB HID v1.11 Device [BRIO 4K Stream Edition] on usb-xhci-cdns3-1/input4

lsusb

Bus 002 Device 006: ID 046d:086b Logitech, Inc. BRIO 4K Stream Edition
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 004: ID 1286:204e Marvell Semiconductor, Inc.
Bus 004 Device 002: ID 0424:3503 Standard Microsystems Corp.
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lsusb -t

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M
        |__ Port 1: Dev 3, If 0, Class=Wireless, Driver=btusb, 480M
        |__ Port 1: Dev 3, If 1, Class=Wireless, Driver=btusb, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=/1p, 5000M
    |__ Port 1: Dev 6, If 0, Class=Video, Driver=, 5000M
    |__ Port 1: Dev 6, If 1, Class=Video, Driver=, 5000M
    |__ Port 1: Dev 6, If 2, Class=Audio, Driver=snd-usb-audio, 5000M
    |__ Port 1: Dev 6, If 3, Class=Audio, Driver=snd-usb-audio, 5000M
    |__ Port 1: Dev 6, If 4, Class=Human Interface Device, Driver=usbhid, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=/1p, 480M

My Dockerfile for checking connected devices:

FROM torizon/arm64v8-debian-wayland-base-vivante
RUN apt-get -y update && apt-get install v4l-utils
CMD ["v4l2-ctl", "--list-devices"]

My docker-compose file:

version: "2.4"
services:
  weston:
    image: torizon/arm64v8-debian-weston-vivante:latest
    network_mode: host
    environment:
      - ACCEPT_FSL_EULA=1
    devices:
      - /dev/video0:/dev/video0
      - /dev/video1:/dev/video1
      - /dev/video2:/dev/video2
      - /dev/video3:/dev/video3
      - /dev/video4:/dev/video4
      - /dev/video5:/dev/video5
      - /dev/video6:/dev/video6
      - /dev/video7:/dev/video7
      - /dev/video8:/dev/video8
      - /dev/video9:/dev/video9
      - /dev/video10:/dev/video10
      - /dev/video12:/dev/video12
      - /dev/video13:/dev/video13
    volumes:
      - type: bind
        source: /tmp
        target: /tmp
      - type: bind
        source: /run/udev
        target: /run/udev
      - type: bind
        source: /dev
        target: /dev
    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'
      - 'c 81:* rmw'
  formats:
    image: alexey777/formats:latest
    devices:
      - /dev/video0:/dev/video0
      - /dev/video1:/dev/video1
      - /dev/video2:/dev/video2
      - /dev/video3:/dev/video3
      - /dev/video4:/dev/video4
      - /dev/video5:/dev/video5
      - /dev/video6:/dev/video6
      - /dev/video7:/dev/video7
      - /dev/video8:/dev/video8
      - /dev/video9:/dev/video9
      - /dev/video10:/dev/video10
      - /dev/video12:/dev/video12
      - /dev/video13:/dev/video13
    volumes:
      - /tmp:/tmp
      - /dev:/dev
      - /sys:/sys

Console output:

weston_1   | [09:55:26.316] event1  - BRIO 4K Stream Edition: is tagged by udev as: Keyboard
weston_1   | [09:55:26.316] event1  - BRIO 4K Stream Edition: device is a keyboard

formats_1  | Failed to open /dev/video0: Invalid argument
formats_1  | vpu B0 (platform:):
formats_1  |    /dev/video12
formats_1  |    /dev/video13
formats_1  |
formats_1  | mxc-isi (platform:58100000.isi.0):
formats_1  |    /dev/video8
formats_1  |
formats_1  | mxc-isi (platform:58140000.isi.4):
formats_1  |    /dev/video4
formats_1  |
formats_1  | mxc-isi (platform:58150000.isi.5):
formats_1  |    /dev/video5
formats_1  |
formats_1  | mxc-isi (platform:58160000.isi.6):
formats_1  |    /dev/video6
formats_1  |
formats_1  | mxc-isi (platform:58170000.isi.7):
formats_1  |    /dev/video7
formats_1  |
formats_1  | mxc-jpeg decoder (platform:58400000.jpegdec):
formats_1  |    /dev/video9
formats_1  |
formats_1  | mxc-jpeg decoder (platform:58450000.jpegenc):
formats_1  |    /dev/video10
formats_1  |

Full console output:

Creating torizon_formats_1 ...
Creating torizon_weston_1  ... done
[ 1461.939832] (null): mxc_isi_capture_open, No remote pad found!
[ 1461.945760] (null): mxc_isi_capture_open, No remote pad found!
Creating torizon_formats_1 ... done
[ 1461.958009] (null): mxc_isi_capture_open, No remote pad found!
Attaching to torizon_weston_1, torizon_formats_1
weston_1   | Switching to VT 7
weston_1   | NXP EULA has already been accepted.
weston_1   | touch: cannot touch '/tmp/nxp-eula-accepted': Permission denied
(eston_1   | Date: [2 012406-20.70-07313 5U8T]C
 n[l3l3)m:w emxstc_oni_s1i _ c a|p[u0rme _[o0p9en:5,5 :N2o6 .re2m46o]t ew epsatdo nf o5u.n0d.!0

weston_1   |                https://wayland.freedesktop.org
weston_1   |                Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
weston_1   |                Build: unknown (not built from git or tarball)
weston_1   | [09:55:26.247] Command line: /usr/bin/weston --current-mode
weston_1   | [09:55:26.247] OS: Linux, 4.14.170-4.0.0-devel+git.fb6b17a22634, #1-TorizonCore SMP PREEMPT Mon May 11 14:38:24 UTC 2020, aarch64
weston_1   | [09:55:26.248] Using config file '/etc/xdg/weston/weston.ini'
weston_1   | [09:55:26.249] Output repaint window is 16 ms maximum.
weston_1   | [09:55:26.249] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/drm-backend.so'
weston_1   | [09:55:26.251] initializing drm backend
weston_1   | [09:55:26.253] using /dev/dri/card0
weston_1   | [09:55:26.253] DRM: supports universal planes
weston_1   | [09:55:26.253] DRM: supports atomic modesetting
weston_1   | [09:55:26.254] DRM: does not support picture aspect ratio
weston_1   | [09:55:26.254] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/gl-renderer.so'
weston_1   | [09:55:26.277] 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   | [09:55:26.285] warning: neither EGL_EXT_swap_buffers_with_damage or EGL_KHR_swap_buffers_with_damage is supported. Performance could be affected.
[ 1462.113581] Timeout for IPC response!
weston_1   | [09:55:26.285] EGL_KHR_surfaceless_context available
weston_1   | [09:55:26.303] EGL version: 1.5
weston_1   | [09:55:26.303] EGL vendor: Vivante Corporation
weston_1   | [09:55:26.303] EGL client APIs: OpenGL_ES
weston_1   | [09:55:26.303] 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_surfaceless_context
weston_1   |                EGL_EXT_buffer_age EGL_ANDROID_native_fence_sync
weston_1   |                EGL_WL_bind_wayland_display
weston_1   |                EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
weston_1   | [09:55:26.303] GL version: OpenGL ES 3.2 V6.2.4.p4.190076
weston_1   | [09:55:26.303] GLSL version: OpenGL ES GLSL ES 3.20
weston_1   | [09:55:26.303] GL vendor: Vivante Corporation
weston_1   | [09:55:26.303] GL renderer: Vivante GC7000XSVX
weston_1   | [09:55:26.303] 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 GL_OES_EGL_sync
weston_1   |                GL_OES_texture_stencil8 GL_OES_shader_image_atomic
weston_1   |                GL_OES_sample_variables GL_OES_sample_shading
weston_1   |                GL_OES_texture_storage_multisample_2d_array
weston_1   |                GL_OES_shader_multisample_interpolation
weston_1   |                GL_OES_required_internalformat GL_OES_surfaceless_context
weston_1   |                GL_OES_copy_image GL_OES_draw_buffers_indexed
weston_1   |                GL_OES_geometry_shader GL_OES_geometry_point_size
weston_1   |                GL_OES_gpu_shader5 GL_OES_shader_io_blocks
weston_1   |                GL_OES_texture_border_clamp GL_OES_texture_buffer
weston_1   |                GL_OES_tessellation_shader GL_OES_tessellation_point_size
weston_1   |                GL_OES_texture_cube_map_array GL_OES_draw_elements_base_vertex
weston_1   |                GL_OES_texture_half_float GL_OES_texture_float
weston_1   |                GL_OES_primitive_bounding_box
weston_1   |                GL_KHR_texture_compression_astc_ldr
weston_1   |                GL_KHR_blend_equation_advanced GL_KHR_debug GL_KHR_robustness
weston_1   |                GL_EXT_texture_type_2_10_10_10_REV
weston_1   |                GL_EXT_texture_filter_anisotropic
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_tessellation_shader
weston_1   |                GL_EXT_tessellation_point_size GL_EXT_geometry_shader
weston_1   |                GL_EXT_geometry_point_size GL_EXT_copy_image
weston_1   |                GL_EXT_texture_cube_map_array GL_EXT_gpu_shader5
weston_1   |                GL_EXT_shader_io_blocks GL_EXT_shader_implicit_conversions
weston_1   |                GL_EXT_multi_draw_indirect GL_EXT_draw_elements_base_vertex
weston_1   |                GL_EXT_texture_rg GL_EXT_primitive_bounding_box GL_EXT_sRGB
weston_1   |                GL_ANDROID_extension_pack_es31a GL_VIV_direct_texture
weston_1   | [09:55:26.303] 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   | [09:55:26.316] event1  - BRIO 4K Stream Edition: is tagged by udev as: Keyboard
weston_1   | [09:55:26.316] event1  - BRIO 4K Stream Edition: device is a keyboard
weston_1   | [09:55:26.318] event0  - sc-powerkey: is tagged by udev as: Keyboard
weston_1   | [09:55:26.318] event0  - sc-powerkey: device is a keyboard
weston_1   | [09:55:26.331] event2  - colibri-vf50-ts: is tagged by udev as: Touchscreen
weston_1   | [09:55:26.331] event2  - colibri-vf50-ts: device is a touch device
weston_1   | [09:55:26.363] Touchscreen - colibri-vf50-ts - /sys/devices/platform/vf50-touchscreen/input/input2/event2
weston_1   | [09:55:26.364] input device event2 has no enabled output associated (none named), skipping calibration for now.
weston_1   | [09:55:26.364] DRM: head 'HDMI-A-1' found, connector 146 is disconnected.
weston_1   | [09:55:26.364] Registered plugin API 'weston_drm_output_api_v1' of size 24
weston_1   | [09:55:26.365] 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   | [09:55:26.366] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
weston_1   | [09:55:26.369] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
weston_1   | [09:55:26.377] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/xwayland.so'
weston_1   | [09:55:26.409] Registered plugin API 'weston_xwayland_v1' of size 32
weston_1   | [09:55:26.409] Registered plugin API 'weston_xwayland_surface_v1' of size 16
weston_1   | [09:55:26.410] xserver listening on display :0
weston_1   | [09:55:26.410] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
weston_1   | could not load cursor 'dnd-move'
weston_1   | could not load cursor 'dnd-copy'
weston_1   | could not load cursor 'dnd-none'
weston_1   | could not load cursor 'dnd-move'
weston_1   | could not load cursor 'dnd-copy'
weston_1   | could not load cursor 'dnd-none'
formats_1  | Failed to open /dev/video0: Invalid argument
formats_1  | vpu B0 (platform:):
formats_1  |    /dev/video12
formats_1  |    /dev/video13
formats_1  |
formats_1  | mxc-isi (platform:58100000.isi.0):
formats_1  |    /dev/video8
formats_1  |
formats_1  | mxc-isi (platform:58140000.isi.4):
formats_1  |    /dev/video4
formats_1  |
formats_1  | mxc-isi (platform:58150000.isi.5):
formats_1  |    /dev/video5
formats_1  |
formats_1  | mxc-isi (platform:58160000.isi.6):
formats_1  |    /dev/video6
formats_1  |
formats_1  | mxc-isi (platform:58170000.isi.7):
formats_1  |    /dev/video7
formats_1  |
formats_1  | mxc-jpeg decoder (platform:58400000.jpegdec):
formats_1  |    /dev/video9
formats_1  |
formats_1  | mxc-jpeg decoder (platform:58450000.jpegenc):
formats_1  |    /dev/video10
formats_1  |

When I connect my webcam to USBH3 port, I dmesg | tail prints such logs:

[ 1231.882749] usb 4-1.3: new high-speed USB device number 5 using ci_hdrc
[ 1231.999328] usb 4-1.3: current rate 16000 is different from the runtime rate 24000
[ 1232.001816] usb 4-1.3: current rate 16000 is different from the runtime rate 32000
[ 1232.004459] usb 4-1.3: current rate 16000 is different from the runtime rate 48000

lsusb

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 005: ID 046d:086b Logitech, Inc.
Bus 004 Device 004: ID 1286:204e Marvell Semiconductor, Inc.
Bus 004 Device 002: ID 0424:3503 Standard Microsystems Corp.
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lsusb -t

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M
        |__ Port 1: Dev 4, If 0, Class=Wireless, Driver=btusb, 480M
        |__ Port 1: Dev 4, If 1, Class=Wireless, Driver=btusb, 480M
        |__ Port 3: Dev 5, If 0, Class=Video, Driver=, 480M
        |__ Port 3: Dev 5, If 1, Class=Video, Driver=, 480M
        |__ Port 3: Dev 5, If 2, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 3: Dev 5, If 3, Class=Audio, Driver=snd-usb-audio, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=/1p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=/1p, 480M

Console output when the webcam is connected via USBH3:

Creating torizon_weston_1  ... done
Creating torizon_formats_1 ...
[ 2617.086942] (null): mxc_isi_capture_open, No remote pad found!
[ 2617.092978] (null): mxc_isi_capture_open, No remote pad found!
[ 2617.098996] (null): mxc_isi_capture_open, No remote pad found!
[ 2617.104985] (null): mxc_isi_capture_open, No remote pad found!
Creating torizon_formats_1 ... done
Attaching to torizon_weston_1, torizon_formats_1
formats_1  | Failed to open /dev/video0: Invalid argument
weston_1   | NXP EULA has already been accepted.
formats_1  | vpu B0 (platform:):
formats_1  |    /dev/video12
formats_1  |    /dev/video13
formats_1  |
formats_1  | mxc-isi (platform:58100000.isi.0):
formats_1  |    /dev/video8
formats_1  |
formats_1  | mxc-isi (platform:58140000.isi.4):
formats_1  |    /dev/video4
formats_1  |
formats_1  | mxc-isi (platform:58150000.isi.5):
formats_1  |    /dev/video5
formats_1  |
formats_1  | mxc-isi (platform:58160000.isi.6):
formats_1  |    /dev/video6
formats_1  |
formats_1  | mxc-isi (platform:58170000.isi.7):
formats_1  |    /dev/video7
formats_1  |
formats_1  | mxc-jpeg decoder (platform:58400000.jpegdec):
formats_1  |    /dev/video9
formats_1  |
formats_1  | mxc-jpeg decoder (platform:58450000.jpegenc):
formats_1  |    /dev/video10
formats_1  |
weston_1   | Switching to VT 7
weston_1   | NXP EULA has already been accepted.
weston_1   | touch: cannot touch '/tmp/nxp-eula-accepted': Permission denied
weston_1   | Date: 2020-07-31 UTC
weston_1   | [10:14:41.482] weston 5.0.0
weston_1   |                https://wayland.freedesktop.org
weston_1   |                Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
weston_1   |                Build: unknown (not built from git or tarball)
weston_1   | [10:14:41.483] Command line: /usr/bin/weston --current-mode
weston_1   | [10:14:41.483] OS: Linux, 4.14.170-4.0.0-devel+git.fb6b17a22634, #1-TorizonCore SMP PREEMPT Mon May 11 14:38:24 UTC 2020, aarch64
weston_1   | [10:14:41.483] Using config file '/etc/xdg/weston/weston.ini'
weston_1   | [10:14:41.484] Output repaint window is 16 ms maximum.
weston_1   | [10:14:41.484] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/drm-backend.so'
weston_1   | [10:14:41.486] initializing drm backend
weston_1   | [10:14:41.490] using /dev/dri/card0
weston_1   | [10:14:41.490] DRM: supports universal planes
weston_1   | [10:14:41.491] DRM: supports atomic modesetting
weston_1   | [10:14:41.491] DRM: does not support picture aspect ratio
weston_1   | [10:14:41.491] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/gl-renderer.so'
weston_1   | [10:14:41.507] 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   | [10:14:41.515] warning: neither EGL_EXT_swap_buffers_with_damage or EGL_KHR_swap_buffers_with_damage is supported. Performance could be affected.
weston_1   | [10:14:41.515] EGL_KHR_surfaceless_context available
weston_1   | [10:14:41.524] EGL version: 1.5
weston_1   | [10:14:41.524] EGL vendor: Vivante Corporation
weston_1   | [10:14:41.524] EGL client APIs: OpenGL_ES
weston_1   | [10:14:41.524] 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_surfaceless_context
weston_1   |                EGL_EXT_buffer_age EGL_ANDROID_native_fence_sync
weston_1   |                EGL_WL_bind_wayland_display
weston_1   |                EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
weston_1   | [10:14:41.524] GL version: OpenGL ES 3.2 V6.2.4.p4.190076
weston_1   | [10:14:41.524] GLSL version: OpenGL ES GLSL ES 3.20
weston_1   | [10:14:41.524] GL vendor: Vivante Corporation
weston_1   | [10:14:41.524] GL renderer: Vivante GC7000XSVX
weston_1   | [10:14:41.524] 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 GL_OES_EGL_sync
weston_1   |                GL_OES_texture_stencil8 GL_OES_shader_image_atomic
weston_1   |                GL_OES_sample_variables GL_OES_sample_shading
weston_1   |                GL_OES_texture_storage_multisample_2d_array
weston_1   |                GL_OES_shader_multisample_interpolation
weston_1   |                GL_OES_required_internalformat GL_OES_surfaceless_context
weston_1   |                GL_OES_copy_image GL_OES_draw_buffers_indexed
weston_1   |                GL_OES_geometry_shader GL_OES_geometry_point_size
weston_1   |                GL_OES_gpu_shader5 GL_OES_shader_io_blocks
weston_1   |                GL_OES_texture_border_clamp GL_OES_texture_buffer
weston_1   |                GL_OES_tessellation_shader GL_OES_tessellation_point_size
weston_1   |                GL_OES_texture_cube_map_array GL_OES_draw_elements_base_vertex
weston_1   |                GL_OES_texture_half_float GL_OES_texture_float
weston_1   |                GL_OES_primitive_bounding_box
weston_1   |                GL_KHR_texture_compression_astc_ldr
weston_1   |                GL_KHR_blend_equation_advanced GL_KHR_debug GL_KHR_robustness
weston_1   |                GL_EXT_texture_type_2_10_10_10_REV
weston_1   |                GL_EXT_texture_filter_anisotropic
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_tessellation_shader
weston_1   |                GL_EXT_tessellation_point_size GL_EXT_geometry_shader
weston_1   |                GL_EXT_geometry_point_size GL_EXT_copy_image
weston_1   |                GL_EXT_texture_cube_map_array GL_EXT_gpu_shader5
weston_1   |                GL_EXT_shader_io_blocks GL_EXT_shader_implicit_conversions
weston_1   |                GL_EXT_multi_draw_indirect GL_EXT_draw_elements_base_vertex
weston_1   |                GL_EXT_texture_rg GL_EXT_primitive_bounding_box GL_EXT_sRGB
weston_1   |                GL_ANDROID_extension_pack_es31a GL_VIV_direct_texture
weston_1   | [10:14:41.525] 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   | [10:14:41.538] event0  - sc-powerkey: is tagged by udev as: Keyboard
weston_1   | [10:14:41.538] event0  - sc-powerkey: device is a keyboard
weston_1   | [10:14:41.552] event1  - colibri-vf50-ts: is tagged by udev as: Touchscreen
weston_1   | [10:14:41.552] event1  - colibri-vf50-ts: device is a touch device
weston_1   | [10:14:41.578] Touchscreen - colibri-vf50-ts - /sys/devices/platform/vf50-touchscreen/input/input1/event1
weston_1   | [10:14:41.578] input device event1 has no enabled output associated (none named), skipping calibration for now.
weston_1   | [10:14:41.579] DRM: head 'HDMI-A-1' found, connector 146 is disconnected.
weston_1   | [10:14:41.580] Registered plugin API 'weston_drm_output_api_v1' of size 24
weston_1   | [10:14:41.580] 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   | [10:14:41.581] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
weston_1   | [10:14:41.584] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
weston_1   | [10:14:41.595] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/xwayland.so'
weston_1   | [10:14:41.616] Registered plugin API 'weston_xwayland_v1' of size 32
weston_1   | [10:14:41.616] Registered plugin API 'weston_xwayland_surface_v1' of size 16
weston_1   | [10:14:41.616] xserver listening on display :0
weston_1   | [10:14:41.616] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
weston_1   | could not load cursor 'dnd-move'
weston_1   | could not load cursor 'dnd-copy'
weston_1   | could not load cursor 'dnd-none'
weston_1   | could not load cursor 'dnd-move'
weston_1   | could not load cursor 'dnd-copy'
weston_1   | could not load cursor 'dnd-none'

Greetings @AlexeyZ,

I’m still investigating on my end but here’s what I found. I have a Logitech USB camera as well it’s not the same model as yours however. When using your container set-up I don’t get the error where my USB camera is recognized as a keyboard. I do get a different issue however, in my case it seems my camera isn’t being recognized. I say this because the lists of /dev/video* devices doesn’t change whether I have my camera plugged or not.

I see that you’re using a nightly build of Torizon, if possible could you update to the latest July monthly release. I don’t exactly expect this change to resolve/change anything but it’s easier for me to debug on our more stable versions of Torizon rather than nightlies.

Otherwise I’ll keep investigating on my end and update if I find anything.

Best Regards,
Jeremias

Hello @jeremias.tx,
I updated to TorizonCore 4.0.0-devel-202007+build.17, it didn’t help. I also tested my webcams on TorizonCore 5.0.0-devel-20200803+build.28, webcams didn’t appear in the list of video devices either.

I’m not familiar with udev, perhaps udev rules may be used as hints, in my case to tell that my device is a webcam. So I tried to use /etc/udev/rules.d/webcam.rules file which was created by me with different rules, I tested 5 different versions:

SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="086b", SYMLINK+="webcam"

SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="086b", GROUP="video", SYMLINK+="webcam"

KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="086b", SYMLINK+="webcam"

KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="086b", GROUP="video", SYMLINK+="webcam"

KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="086b", GROUP="video", MODE="0660", SYMLINK+="webcam"

When I started my docker-compose files, I got error messages like this: error gathering device information while adding custom device “/dev/webcam”: no such file or directory.
Note: those rules were applied on TorizonCore 4.0.0-devel-202007+build.17.

Jeremias, adding those rules was my last idea how to make it work, could you please give me some ideas how to make my webcam visible as a video device?

Best Regards,
Alexey

Hi @AlexeyZ,

Wait to clarify after you updated the system to a newer version of Torizon did your dmesg/lsusb logs change at all? In the container was it still being registered as a keyboard? If there’s a different behavior between the version then this might narrow down what we’re looking for.

Best Regards,
Jeremias

Hello @jeremias.tx,
Unfortunetly output of dmesg and lsusb didn’t change. My webcam is still recognized as a keyboard and there’s no information about its driver Class=Video, Driver=, 5000M. Additionally I set privileged to true for my containers, but there was no any changes.

Best Regards,
Alexey

Hi @AlexeyZ,

I’ve escalated this as a bug for internal investigation as I’m still seeing weird detection issues with my USB camera as well. By the way another thing I forgot to check, on your camera is there some button/switch on it anymore? If yes does toggling this affect how the USB device is detected?

Best Regards,
Jeremias

Hi @jeremias.tx,

Cameras I have used don’t have any buttons, so I was not able to physically change anything.

Best Regards,
Alexey

Just to provide an update, I was also able to recreate this weird USB camera detection behavior on our standard BSP. Since Torizon is built on top of our BSP this may just be an inherited issue. Also I don’t see this on my other modules that run 5.4 kernels so perhaps it’s an issue with the 4.14 kernel. I’ve made a bug report now internally so that it can be investigated. I’ll let you know if there are any updates/findings regarding this.

Best Regards,
Jeremias

@jeremias.tx, thank you very much, looking foward to updates!

Best Regards,
Alexey

You are welcome.

Best regards,
Jaski

I tested USB camera detection on our new 5.0 BSP/Torizon and at least for my USB camera it seems the detection is solved/improved here. With 5.0 my USB camera was enumerating new /dev/video* entries where it wasn’t before.

Please give our 5.0 BSP/Torizon a try and give feedback on your situation. You can get access to this via our Easy Installer CI feeds.

Best Regards,
Jeremias