Sometimes. The user running the container must already have host permission, and the runtime must map the device without requiring capabilities unavailable in the user namespace.
This becomes a real compatibility question when a rootless media, radio, UPS, or automation container needs a stable /dev path that can disappear and return after unplugging or reboot. Start with a disposable path or account, keep the previous working state available, and judge the design by the original workload rather than by a one-time connection test.
Set the Permission and Identity Boundary for Rootless Usb Device Access
The supported branch is host group or ACL access plus an explicitly mapped device. The competing branch is missing host permission, unstable device identity, or a privileged operation blocked by rootless isolation. Record versions, identities, addresses, mount paths, permissions, and the current observable state before changing either branch.
The relevant rootless user namespaces defines the first compatibility boundary. Use it to constrain the claim, then verify the same behavior on this exact home server instead of treating a documented feature as proof that the full design works.
Write the decision rule before testing: success must produce the process opens the correct device after container recreation and hotplug without broad privileged mode; failure includes access is denied, the path changes, or the driver operation still requires host-level capability. This prevents a partial connection or clean command exit from being misread as end-to-end compatibility.
Test Access Without Expanding Privilege
Use one controlled discriminator: identify the device by stable udev attributes, verify host access as the rootless user, map it, then unplug and reconnect a disposable device. Hold the client, workload, file set, account, and timing constant so the changed component is the only plausible explanation.
Use Podman device mappings to choose the second observation that matters for this path. Capture both sides of the transaction: resolver or route, negotiated protocol, process identity, exit status, latency, transferred bytes, and any recovery event.
Repeat the test after the lifecycle event named in the title—recreation, reconnect, remount, restart, failover, or client change. A design that works only while old sockets, caches, or credentials remain warm has not passed.
id
stat /dev/serial/by-id/*
podman run --device /dev/serial/by-id/DEVICE IMAGE
Distinguish Supported Access From a Partial Workaround
PASS: the process opens the correct device after container recreation and hotplug without broad privileged mode. Save the exact versions and topology that produced this state, because the conclusion applies to those conditions rather than every implementation of the protocol.
FAIL: access is denied, the path changes, or the driver operation still requires host-level capability. Check shared dependencies such as DNS, MTU, identity, firewall state, storage latency, and cached sessions before declaring either primary branch responsible.
EXCEPTION: remove the device mapping, restore the prior ACL or group state, and use a narrowly scoped host helper only if the operation cannot be rootless. Do not widen privileges, delete source data, weaken transport security, or replace working storage until a repeatable observation identifies which boundary failed.
Confirm Persistence After Reconnect or Restart
Apply only the action matched to the observed branch, then rerun the original workload. Keep the design only when the process opens the correct device after container recreation and hotplug without broad privileged mode across two relevant lifecycle cycles and under the expected concurrent load.
Use the persistent device passthrough to verify the closest dependent workflow. Its access, timing, and recovery behavior must remain unchanged while the new design is active.
Stop and return to the saved state if access is denied, the path changes, or the driver operation still requires host-level capability. Escalate with timestamps, exact versions, route or mount evidence, and the smallest reproduction rather than adding another workaround.
Cross-check the result against the container identity mapping so risk is not merely moved into another network, identity, backup, or storage layer.
For rootless USB device access, the qualified answer is therefore the opening judgment—not an unconditional yes. The observable pass state is the acceptance line; the fail state is the rollback line.
FAQ
Does adding the user to dialout solve every USB case?
No. It helps serial devices only when the node uses that group and no extra privileged ioctl is required.
Can a rootless container detect hotplug automatically?
Only if the mapped path and runtime behavior survive the device event; test an unplug-and-reconnect cycle.
Should the container run privileged instead?
Not first. Prove the exact denied operation, then grant the smallest host-side permission that satisfies it.
Support & Tips
More to Read

Can a Self-Hosted Gallery Preserve Apple Live Photo Pairing?
A conditional home-server decision for Apple Live Photo pairing, with controlled tests, result interpretation, rollback, and focused FAQs.

Can You Import Google Takeout and Phone Backups Into One Photo Library?
A conditional home-server decision for combined photo import, with controlled tests, result interpretation, rollback, and focused FAQs.

Can Immich Use an External Library Without Taking Ownership of the Files?
A conditional home-server decision for Immich external-library ownership, with controlled tests, result interpretation, rollback, and focused FAQs.

