USB Access conflicting documentation. USB Devices not mounting.

Hey Balena Team,

Running into a wall with my current setup - hoping to get some direction. I have a balena multi-container compose file that is deployed through a balena cloud account. One of those containers is an X11 GUI Desktop application using matchbox window manager.

I am trying to access a USB thumbdrive device that is plugged in but it is not mounting the device. I am trying to do some digging but the docs seem to conflict a little and I have no clue which direction to go as neither are working too well.

Note: I am NOT overwriting the balena entry.sh point.
OS: Debian:buster
Type: Generic x86_64

Installed packages:

RUN install_packages \
    matchbox-window-manager \
    x11-xserver-utils \
    x11-utils \
    dbus-x11 \
    xauth \
    xinit \
    xinput \
    xserver-xorg \
    xserver-xorg-input-all \
    xserver-xorg-input-evdev \
    xserver-xorg-legacy \
    xserver-xorg-video-all \
    tzdata \
    ffmpeg \
    at-spi2-core \
    brightnessctl \
    tini \
    xdg-user-dirs \
    libgtk-3-0 
  • First link: https://www.balena.io/docs/learn/develop/runtime
    Under the “Mounting external storage media” section it states that as long as UDEV=on and the container is privileged then access should be given. Is this all that is required and it should work? USB thumbdrives plugged it will be recognized and mounted? So far, no luck. So below that section, it listed “Automounting/unmounting with udev rules” which does work, sorta, just doesn’t update the matchbox file picker to show the mounted device. Have to go to the full qualified path - not ideal.

  • Second link: Balena base images - Balena Documentation
    This helps explain how the entry.sh script functions then below in the section label “Working with Dynamically Plugged Devices” this is statement that as long as UDEV is on and privileged is on then boom, no problem with dynamically plugged device. I am assuming that this means it also mounts the device but not sure - just assuming from the context of the explanations were “in the case of USB or serial devices”.

So my question/concern aside from the semi conflicting docs: do I need to be putting the usb udev rules in as well as the mount.sh/unmount.sh script in place with UDEV=on, privileged: true and default entry.sh not being touched OR do only proceed with UDEV=on, privileged: true and default entry.sh?

One of my colleagues has written a nice set of examples of how to use UDEV rules - balena-udev-examples/Dockerfile.template at master · tmigone/balena-udev-examples · GitHub

Can you try with adding the USB rules as done in the above dockerfile?