1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
MacOS requires root to pass through USB devices properly
Description of problem:
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.
Steps to 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 information:
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: <Analog Devices Inc. PlutoSDR (ADALM-PLUTO)> 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: <Analog Devices Inc. PlutoSDR (ADALM-PLUTO)> at usbus1
umass0 on uhub0
umass0: <Mass Storage> 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: <Linux File-Stor Gadget 0414> Removable Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: 30MB (61441 512 byte sectors)
da0: quirks=0x2<NO_6_BYTE>
urndis0 on uhub0
urndis0: <RNDIS Communications Control> on usbus1
umodem0 on uhub0
umodem0: <CDC Abstract Control Model (ACM)> 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.
|