]>
Commit | Line | Data |
---|---|---|
1 | ------------------------------------------------------------------------------- | |
2 | USB HID (Full-speed) | |
3 | ------------------------------------------------------------------------------- | |
4 | ||
5 | This is a set of example captures of USB/HID communication on the | |
6 | keyboard/mouse combo device Logitech MK220 (the keyboard is named "K220", | |
7 | the mouse is named "M150"). | |
8 | ||
9 | Details: | |
10 | http://www.logitech.com/en-za/keyboards/keyboard-mice-combos/8411 | |
11 | ||
12 | ||
13 | HID dump | |
14 | -------- | |
15 | ||
16 | For a HOWTO, see: | |
17 | http://lists.en.qi-hardware.com/pipermail/discussion/2011-November/009206.html | |
18 | ||
19 | Usage Page (Desktop), ; Generic desktop controls (01h) | |
20 | Usage (Mouse), ; Mouse (02h, application collection) | |
21 | Collection (Application), | |
22 | Report ID (2), | |
23 | Usage (Pointer), ; Pointer (01h, physical collection) | |
24 | Collection (Physical), | |
25 | Usage Page (Button), ; Button (09h) | |
26 | Usage Minimum (01h), | |
27 | Usage Maximum (10h), | |
28 | Logical Minimum (0), | |
29 | Logical Maximum (1), | |
30 | Report Count (16), | |
31 | Report Size (1), | |
32 | Input (Variable), | |
33 | Usage Page (Desktop), ; Generic desktop controls (01h) | |
34 | Logical Minimum (-2047), | |
35 | Logical Maximum (2047), | |
36 | Report Size (12), | |
37 | Report Count (2), | |
38 | Usage (X), ; X (30h, dynamic value) | |
39 | Usage (Y), ; Y (31h, dynamic value) | |
40 | Input (Variable, Relative), | |
41 | Logical Minimum (-127), | |
42 | Logical Maximum (127), | |
43 | Report Size (8), | |
44 | Report Count (1), | |
45 | Usage (Wheel), ; Wheel (38h, dynamic value) | |
46 | Input (Variable, Relative), | |
47 | Usage Page (Consumer), ; Consumer (0Ch) | |
48 | Usage (AC Pan), ; AC pan (0238h, linear control) | |
49 | Report Count (1), | |
50 | Input (Variable, Relative), | |
51 | End Collection, | |
52 | End Collection, | |
53 | Usage Page (Consumer), ; Consumer (0Ch) | |
54 | Usage (Consumer Control), ; Consumer control (01h, application collection) | |
55 | Collection (Application), | |
56 | Report ID (3), | |
57 | Report Size (16), | |
58 | Report Count (2), | |
59 | Logical Minimum (1), | |
60 | Logical Maximum (652), | |
61 | Usage Minimum (Consumer Control), ; Consumer control (01h, application collection) | |
62 | Usage Maximum (AC Send), ; AC send (028Ch, selector) | |
63 | Input, | |
64 | End Collection, | |
65 | Usage Page (Desktop), ; Generic desktop controls (01h) | |
66 | Usage (Sys Control), ; System control (80h, application collection) | |
67 | Collection (Application), | |
68 | Report ID (4), | |
69 | Report Size (2), | |
70 | Report Count (1), | |
71 | Logical Minimum (1), | |
72 | Logical Maximum (3), | |
73 | Usage (Sys Sleep), ; System sleep (82h, one-shot control) | |
74 | Usage (Sys Power Down), ; System power down (81h, one-shot control) | |
75 | Usage (Sys Wake Up), ; System wake up (83h, one-shot control) | |
76 | Input (No Preferred, Null State), | |
77 | Report Size (6), | |
78 | Input (Constant, Variable), | |
79 | End Collection, | |
80 | Usage Page (FF00h), ; FF00h, vendor-defined | |
81 | Usage (01h), | |
82 | Collection (Application), | |
83 | Report ID (16), | |
84 | Report Size (8), | |
85 | Report Count (6), | |
86 | Logical Minimum (0), | |
87 | Logical Maximum (255), | |
88 | Usage (01h), | |
89 | Input, | |
90 | Usage (01h), | |
91 | Output, | |
92 | End Collection, | |
93 | Usage Page (FF00h), ; FF00h, vendor-defined | |
94 | Usage (02h), | |
95 | Collection (Application), | |
96 | Report ID (17), | |
97 | Report Size (8), | |
98 | Report Count (19), | |
99 | Logical Minimum (0), | |
100 | Logical Maximum (255), | |
101 | Usage (02h), | |
102 | Input, | |
103 | Usage (02h), | |
104 | Output, | |
105 | End Collection, | |
106 | Usage Page (Desktop), ; Generic desktop controls (01h) | |
107 | Usage (Keyboard), ; Keyboard (06h, application collection) | |
108 | Collection (Application), | |
109 | Usage Page (Keyboard), ; Keyboard/keypad (07h) | |
110 | Usage Minimum (KB Leftcontrol), ; Keyboard left control (E0h, dynamic value) | |
111 | Usage Maximum (KB Right GUI), ; Keyboard right GUI (E7h, dynamic value) | |
112 | Logical Minimum (0), | |
113 | Logical Maximum (1), | |
114 | Report Size (1), | |
115 | Report Count (8), | |
116 | Input (Variable), | |
117 | Input (Constant, Variable), | |
118 | Report Count (5), | |
119 | Usage Page (LED), ; LEDs (08h) | |
120 | Usage Minimum (01h), | |
121 | Usage Maximum (05h), | |
122 | Output (Variable), | |
123 | Report Count (1), | |
124 | Report Size (3), | |
125 | Output (Constant), | |
126 | Report Count (6), | |
127 | Report Size (8), | |
128 | Logical Minimum (0), | |
129 | Logical Maximum (164), | |
130 | Usage Page (Keyboard), ; Keyboard/keypad (07h) | |
131 | Usage Minimum (None), ; No event (00h, selector) | |
132 | Usage Maximum (KB ExSel), ; Keyboard ExSel (A4h, selector) | |
133 | Input, | |
134 | End Collection | |
135 | ||
136 | ||
137 | lsusb -v -d 046d:c52e | |
138 | --------------------- | |
139 | ||
140 | Bus 002 Device 019: ID 046d:c52e Logitech, Inc. | |
141 | Device Descriptor: | |
142 | bLength 18 | |
143 | bDescriptorType 1 | |
144 | bcdUSB 2.00 | |
145 | bDeviceClass 0 (Defined at Interface level) | |
146 | bDeviceSubClass 0 | |
147 | bDeviceProtocol 0 | |
148 | bMaxPacketSize0 8 | |
149 | idVendor 0x046d Logitech, Inc. | |
150 | idProduct 0xc52e | |
151 | bcdDevice 23.00 | |
152 | iManufacturer 1 Logitech | |
153 | iProduct 2 USB Receiver | |
154 | iSerial 0 | |
155 | bNumConfigurations 1 | |
156 | Configuration Descriptor: | |
157 | bLength 9 | |
158 | bDescriptorType 2 | |
159 | wTotalLength 59 | |
160 | bNumInterfaces 2 | |
161 | bConfigurationValue 1 | |
162 | iConfiguration 4 RQR23.00_B0005 | |
163 | bmAttributes 0xa0 | |
164 | (Bus Powered) | |
165 | Remote Wakeup | |
166 | MaxPower 98mA | |
167 | Interface Descriptor: | |
168 | bLength 9 | |
169 | bDescriptorType 4 | |
170 | bInterfaceNumber 0 | |
171 | bAlternateSetting 0 | |
172 | bNumEndpoints 1 | |
173 | bInterfaceClass 3 Human Interface Device | |
174 | bInterfaceSubClass 1 Boot Interface Subclass | |
175 | bInterfaceProtocol 1 Keyboard | |
176 | iInterface 0 | |
177 | HID Device Descriptor: | |
178 | bLength 9 | |
179 | bDescriptorType 33 | |
180 | bcdHID 1.11 | |
181 | bCountryCode 0 Not supported | |
182 | bNumDescriptors 1 | |
183 | bDescriptorType 34 Report | |
184 | wDescriptorLength 59 | |
185 | Report Descriptors: | |
186 | ** UNAVAILABLE ** | |
187 | Endpoint Descriptor: | |
188 | bLength 7 | |
189 | bDescriptorType 5 | |
190 | bEndpointAddress 0x81 EP 1 IN | |
191 | bmAttributes 3 | |
192 | Transfer Type Interrupt | |
193 | Synch Type None | |
194 | Usage Type Data | |
195 | wMaxPacketSize 0x0008 1x 8 bytes | |
196 | bInterval 8 | |
197 | Interface Descriptor: | |
198 | bLength 9 | |
199 | bDescriptorType 4 | |
200 | bInterfaceNumber 1 | |
201 | bAlternateSetting 0 | |
202 | bNumEndpoints 1 | |
203 | bInterfaceClass 3 Human Interface Device | |
204 | bInterfaceSubClass 1 Boot Interface Subclass | |
205 | bInterfaceProtocol 2 Mouse | |
206 | iInterface 0 | |
207 | HID Device Descriptor: | |
208 | bLength 9 | |
209 | bDescriptorType 33 | |
210 | bcdHID 1.11 | |
211 | bCountryCode 0 Not supported | |
212 | bNumDescriptors 1 | |
213 | bDescriptorType 34 Report | |
214 | wDescriptorLength 177 | |
215 | Report Descriptors: | |
216 | ** UNAVAILABLE ** | |
217 | Endpoint Descriptor: | |
218 | bLength 7 | |
219 | bDescriptorType 5 | |
220 | bEndpointAddress 0x82 EP 2 IN | |
221 | bmAttributes 3 | |
222 | Transfer Type Interrupt | |
223 | Synch Type None | |
224 | Usage Type Data | |
225 | wMaxPacketSize 0x0014 1x 20 bytes | |
226 | bInterval 2 | |
227 | Device Status: 0x0000 | |
228 | (Bus Powered) | |
229 | ||
230 | ||
231 | Logic analyzer setup | |
232 | -------------------- | |
233 | ||
234 | The logic analyzer used was an ARMFLY Mini-Logic (at 24MHz): | |
235 | ||
236 | Probe MK220 | |
237 | ----------------- | |
238 | 0 DM | |
239 | 1 DP | |
240 | ||
241 | ||
242 | mk220.sr | |
243 | -------- | |
244 | ||
245 | The sigrok command line used was: | |
246 | ||
247 | sigrok-cli -d 0:samplerate=24mhz --time 1s -o mk220.sr --probes 1,2 | |
248 | ||
249 | (the mouse was moved while running this command) | |
250 |