id = 1951 title = "MacOS requires root to pass through USB devices properly" state = "opened" created_at = "2023-10-18T22:30:22.292Z" closed_at = "n/a" labels = ["USB", "hostos: macOS"] url = "https://gitlab.com/qemu-project/qemu/-/issues/1951" host-os = "macOS 14.0 (23A344)" host-arch = "arm" qemu-version = "QEMU emulator version 8.0.4" guest-os = "FreeBSD" guest-arch = "aarch64" description = """If I run qemu as a normal user, the PlutoSDR USB device will not work in the VM. For example, the umass device will remain attached to the host system, and will not appear in the guest system. The device will appear in the guest system, but it will fail to be configured: ``` usb_alloc_device: Failure selecting configuration index 0:USB_ERR_STALLED, port 2, addr 2 (ignored) ``` I believe that similar issues are happening w/ guest OS's Ubuntu 20.04 and 22.04, but I have not tested them to confirm. There is no error message (that I noticed) that reports that this might be an issue and that you need to run qemu as root.""" reproduce = """1. Run qemu like above 2. Plug in a PlutoSDR 3. See that the device appears in the guest, but does not attach completely""" additional = """The confusing part is that a simple device, an RTL-SDR device will appear to work fine when passed through w/o running as root making things more confusing to debug. When run qemu as a normal user, the console (includes FreeBSD kernel messages: ``` login: qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] usb_alloc_device: Failure selecting configuration index 0:USB_ERR_STALLED, port 2, addr 2 (ignored) ugen1.2: at usbus1 qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_detach_kernel_driver: -3 [ACCESS] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] ``` It's not clear what action, if any needs to be taken w/ these error messages. At a minimum, qemu should complain loudly about needing to be run as root, but would be best if it didn't need to run as root, like other VM systems. If I run qemu as root (via sudo), it attachs as expected: ``` qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] qemu-system-aarch64: libusb_kernel_driver_active: -5 [NOT_FOUND] ugen1.2: at usbus1 umass0 on uhub0 umass0: on usbus1 umass0: SCSI over Bulk-Only; quirks = 0x0000 umass0:0:0: Attached to scbus0 da0 at umass-sim0 bus 0 scbus0 target 0 lun 0 da0: Removable Direct Access SCSI-2 device da0: 40.000MB/s transfers da0: 30MB (61441 512 byte sectors) da0: quirks=0x2 urndis0 on uhub0 urndis0: on usbus1 umodem0 on uhub0 umodem0: on usbus1 umodem0: data interface 4, has no CM over data, has no break ``` Trying root was inspired by: https://github.com/libusb/libusb/issues/1014 From that issue, it appears that this is a qemu build issue and does not have the proper entitlements."""