Devicemonitor in docker

Hello,

I’m looking to identify whether a USB device has been removed from my system, so I can adjust my pipeline accordingly. The tool GstDeviceMonitor appears to be suitable, but I’m unable to get it to function within a Docker container.

I attempted to mount the udev folder as suggested in this link here, however, it doesn’t seem to work.

Here’s a snippet of the code I’m using for testing. It successfully detects USB events when run in a native environment, but in a container, it only prints “Device added: xxx” upon startup. The removal or insertion of a device is not detected.

import gi

gi.require_version("Gst", "1.0")
from gi.repository import GLib, Gst

Gst.init(None)


def on_device_added(device_monitor, message):
    device = message.parse_device_added()
    print(f"Device added: {device.get_display_name()}")


def on_device_removed(device_monitor, message):
    device = message.parse_device_removed()
    print(f"Device removed: {device.get_display_name()}")


device_monitor = Gst.DeviceMonitor()
bus_device = device_monitor.get_bus()
bus_device.add_signal_watch()
bus_device.connect("message::device-added", on_device_added)
bus_device.connect("message::device-removed", on_device_removed)
device_monitor.start()

loop = GLib.MainLoop()
try:
    loop.run()
except KeyboardInterrupt:
    device_monitor.stop()
    loop.quit()

Could you please let me know what needs to be shared with the Docker system? Thank you!