Logitech G102 LightSync === ## USB Decriptor Architecture ![USB Decriptors](https://www.keil.com/pack/doc/mw/USB/html/deviceconfig.png) ## Device Desc. * bcdUSB: 2.0 (0x0200) * idVendor: Logitech, Inc. (0x046d) * idProduct: G102/G203 LIGHTSYNC Gaming Mouse (0xc092) * bMaxPacketSize: 64 (high speed) :::spoiler USB Speed 1. Low Speed: 8 2. SuperSpeed: 512 ::: * bNumConfigurations: 1 ## Config Desc. * bmAttributes: 0xa0 ``` 1... .... = Must be 1 for USB 1.1 or higher .0.. .... = Self-Powered (Powered from the USB bus) ..1. .... = Remote Wakeup ``` * bMaxPower: 150 (300mA) * bNumInterfaces: 2 ## Interface Desc. 0 * bInterfaceClass: HID (0x03) * bInterfaceSubClass: Boot Interface (0x01) * bInterfaceProtocol: Mouse (0x02) * bNumEndpoints: 1 ## Endpoint Desc. * bEndpointAddress: 0x81 ``` 1... .... = In .... 0001 = Endpoint Number: 0x1 ``` * bmAttributes: 0x03 ``` .... ..11 = Interrupt-Transfer ``` * wMaxPacketSize: 8 ``` ...0 0... .... .... = Transactions per microframe: 1 (0) .... ..00 0000 1000 = Max Packet Size: 8 ``` * bInterval: 1 ## Interface Desc. 1 * bInterfaceClass: HID (0x03) * bInterfaceSubClass: None (0x00) * bInterfaceProtocol: 0x00 * bNumEndpoints: 1 ## Endpoint Desc. * bEndpointAddress: 0x82 ``` 1... .... = In .... 0002 = Endpoint Number: 0x2 ``` * bmAttributes: 0x03 ``` .... ..11 = Interrupt-Transfer ``` * wMaxPacketSize: 8 ``` ...0 0... .... .... = Transactions per microframe: 1 (0) .... ..00 0001 0100 = Max Packet Size: 20 ``` * bInterval: 1 ## Reference 1. [WinDriver USB Overview](https://www.jungo.com/st/support/documentation/windriver/802/wdusb_man_mhtml/node22.html) 2. [Standard USB descriptors](https://learn.microsoft.com/en-us/windows-hardware/drivers/usbcon/standard-usb-descriptors) 3. [How to send a USB control transfer](https://learn.microsoft.com/en-us/windows-hardware/drivers/usbcon/usb-control-transfer)