blob: 43b60b51bba256560536ab2c649dfd6867c87f6f (
plain) (
blame)
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
debug: 0.969
permissions: 0.964
assembly: 0.952
semantic: 0.951
graphic: 0.951
arm: 0.948
device: 0.936
mistranslation: 0.931
architecture: 0.930
virtual: 0.927
performance: 0.926
ppc: 0.924
register: 0.921
user-level: 0.915
PID: 0.910
TCG: 0.910
peripherals: 0.908
socket: 0.898
risc-v: 0.895
hypervisor: 0.893
kernel: 0.891
boot: 0.868
network: 0.858
vnc: 0.853
KVM: 0.847
VMM: 0.830
files: 0.819
x86: 0.810
i386: 0.649
K800 keyboard no longer works when attached to a VM
I use Logitech K800 keyboard which is connected to a PC through Logitech unifying receiver. In order to control my windows VM i attach unifying receiver USB device to a VM using "virsh attach-device VM-Name ./device.xml". Device ID as seen in lsusb is 046d:c52b.
As of v4.1.0 keyboard no longer works when attached to a windows VM. When attached receiver is still at least partially functional. Logitech pairing utility properly displays paired keyboard, pressing buttons on the keyboard shows changing indicator icon in pairing utility. Pairing and unpairing works. Pressing keys however fails to register any key presses.
Downgrading to v4.0.0 fixes the issue.
device.xml used to attach USB device:
```
<hostdev mode='subsystem' type='usb'>
<source>
<vendor id='0x046d'/>
<product id='0xc52b'/>
</source>
</hostdev>
```
There are only two pass-through changes:
commit bfe44898848614cfcb3a269bc965afbe1f0f331c
commit 65f14ab98da1da920f98ee8734dc1588b01d6b2b
Can you check whenever reverting the one or the other or both restores 4.0 behavior?
Can you add "lsusb -v" output for the device in question to the bug?
Reverting 65f14ab98da1da920f98ee8734dc1588b01d6b2b fixes the issue.
lsusb -v:
Bus 002 Device 008: ID 046d:c52b Logitech, Inc. Unifying Receiver
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x046d Logitech, Inc.
idProduct 0xc52b Unifying Receiver
bcdDevice 12.08
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0054
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 4
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 98mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 59
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 8
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 2 Mouse
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 148
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 2
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 93
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 2
https://patchwork.ozlabs.org/patch/1176777/
Could you please clarify how this config is supposed to be used? I would test your patch.
qemu: -device usb-host,...,guest-resets-all=true
libvirt:
<qemu:arg value='-set'/>
<qemu:arg value='device.hostdev0.guest-resets-all=true'/>
... assuming this is is the only pass-through device.
If you pass through more devices you''l have hostdev0, hostdev1, ... and have to pick the correct one.
(see also http://blog.vmsplice.net/2011/04/how-to-pass-qemu-command-line-options.html)
I am bit slow to test, but i just realized that i am still not sure how to test this. My devices are attached using "virsh attach" after system has started. So it seems to me there is no way to test it with libvirt. A global option to restore old behavior would be useful until libvirt starts supporting this option.
Patch has been included here:
https://git.qemu.org/?p=qemu.git;a=commitdiff;h=1dfe2b91dcb1633d0ba450
... and been released with QEMU v4.2
Any way to get old behavior back when using `virsh attach` command? Devices are not attached on boot. I am stuck with qemu 4.0 because of this.
Try this:
<qemu:arg value='-global'/>
<qemu:arg value='usb-host.guest-resets-all=true'/>
Not fully sure this works for hotplugged devices though.
It works with virsh device-attach. Thank you very much.
|