# Specification of the 048d:5711 Integrated Technology Express, Inc. GIGABYTE Device #### Structure description **USB control transfer used** (and usbhid 🤓) Endpoint: **0x00**, Direction: **OUT** * bmRequestType: **0x21** * bRequest: **9** * wValue: **0x03cc** * wIndex: **1 (0x0001)** * wLength: **64** * Data fragment: as described below. Trailing zeroes trimmed in this document however must be defined within actual data interaction. Therefore 'wLength: 64' is imperative'. In libusb semantic: ``` unsigned char message[64] = { 0XCC, 0X60, }; // example 'cc60' int returned_value = libusb_control_transfer(dev_handle, 0x21, 9, 0x03cc, 1, message, 64, TIMEOUT); ``` Endpoint: **0x80**, Direction: **IN** * bmRequestType: **0xa1** * bRequest: **1** * wValue: **0x03cc** * wIndex: **1 (0x0001)** * wLength: **64** In libusb semantic: ``` unsigned char buf[64] = {}; int returned_value = libusb_control_transfer(dev_handle, 0xa1, 1, 0x03cc, 1, buf, sizeof(buf), TIMEOUT); ``` **NOTE:** input values below marked with prefix "INPUT << " ---- Interaction could be split on three phases: Application startup, command transmission, ending ### Application initial flow: ``` cc60 ↓↓↓↓↓↓↓↓ version in hex INPUT << cc01000100001802000000034954353731312d47494741425954452056302e302e32342e320000000000000002000100020001000001020000c01157 cc60 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ascii text: 'IT5711-GIGABYTE V0.0.24.2' INPUT << cc01000100001802000000034954353731312d47494741425954452056302e302e32342e320000000000000002000100020001000001020000c01157 cc34 cc48 INPUT << cc cc61 in? << cc000000020001000200010002000100020001 cc3c cc3e INPUT << cc cc34 cc3d cc3f INPUT << cc cc34 cc38 ``` ### Commands NOTE: Переходы между изменениями цвета в sync режимах идут без следующих пред-последовательностей. Но переход от отдельных к синхронизированному - через стандартные ппоследовательности There are two types of commands: * syncronized - applies same setting to everything * separate - adjusts settings separately ***Commands sent before actual directive. Structure is always the same*** ``` cc20 cc21 cc22 cc23 cc24 cc25 cc26 cc27 cc90 cc91 cc92 cc28ff07 ``` --- #### Turn off backlight - Applies to everything! ``` cc20ff070000000000000001ff cc28ff07 ``` EXAMPLE: `cc20ff070000000000000001ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000` --- #### Turn off backlight (user selects: channel) ``` cc2204000000000000000001ff ← 1 |‾‾|‾‾‾‾‾‾‾‾‾‾‾1| cc2410000000000000000001ff ← 2 | 6| |‾‾| |||| | cc2520000000000000000001ff ← 3 | | ‾‾ |||| | cc2640000000000000000001ff ← 4 |__| |‾‾‾| | cc2780000000000000000001ff ← 5 | |_4_| | cc9100020000000000000001ff ← 6 |___2_3_5_______| cc28ff07 ``` EXAMPLE: `cc2204000000000000000001ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000` --- #### Wave 1 - Applies to everything! ``` cc20ff070000000000000001ff ← turns off backlight cc28ff07 cc220000000000000000000964000000000000000000260200000000000007 cc2804 ``` EXAMPLE: `cc220000000000000000000964000000000000000000260200000000000007000000000000000000000000000000000000000000000000000000000000000000` --- #### Wave 2 - Applies to everything! ``` cc20ff070000000000000001ff ← turns off backlight cc28ff07 cc220000000000000000000a640000000000000000007d0000000000000020 cc2804 ``` EXAMPLE: `cc220000000000000000000a640000000000000000007d0000000000000020000000000000000000000000000000000000000000000000000000000000000000` --- #### Individually set static color (user selects: color, brightness) ``` ↓↓↓↓↓↓ → Color as RGB cc2204000000000000000001__00______ cc2410000000000000000001__00______ cc2520000000000000000001__00______ cc2640000000000000000001__00______ cc2780000000000000000001__00______ cc9100020000000000000001__00______ cc28ff07 ↑↑ ff → Brightness max b3 -1 80 -2 4d -3 1a -4 ``` EXAMPLE: `cc2204000000000000000001ff00ffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000` --- #### Synchronized static color (user selects: color) - Applies to everything! ``` ↓↓↓↓↓↓ - Color as RGB cc20ff070000000000000001ff00______ cc28ff07 ``` EXAMPLE: `cc20ff070000000000000001ff00ffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000` --- #### Impulse (user selects: color, intensity) ``` ↓↓↓↓↓↓ - Color as RGB cc22040000000000000000026400______0000000000____________00000001 cc24100000000000000000026400______0000000000____________00000001 cc25200000000000000000026400______0000000000____________00000001 cc26400000000000000000026400______0000000000____________00000001 cc27800000000000000000026400______0000000000____________00000001 cc91000200000000000000026400______0000000000____________00000001 cc28ff07 ↑↑↑↑↑↑↑↑↑↑↑↑ f401f401fa00 → Intensity max bc02bc025e01 - 1 84038403c201 - 2 b004b004f401 - 3 400640062003 - 4 ``` EXAMPLE: `cc220400000000000000000264000040fe0000000000b004b004f401000000010000000000000000000000000000000000000000000000000000000000000000` --- #### Flash (user selects: intensity, color and brightness) ``` ↓↓↓↓↓↓ - Color RGB or BGR cc2204000000000000000003__00______000000000064006400____0000000101 cc2410000000000000000003__00______000000000064006400____0000000101 cc2520000000000000000003__00______000000000064006400____0000000101 cc2640000000000000000003__00______000000000064006400____0000000101 cc2780000000000000000003__00______000000000064006400____0000000101 cc9100020000000000000003__00______000000000064006400____0000000101 cc28ff07 ↑↑ ↑↑↑↑ ff → Intensity max 2003 → Brightness max b3 -1 b004 -1 80 -2 4006 -2 4d -3 d007 -3 1a -4 6009 -4 ``` EXAMPLE: `cc2204000000000000000003ff00ffffff0000000000640064002003000000010100000000000000000000000000000000000000000000000000000000000000` --- #### Flash-double (user selects: brightness, color and intensity) ``` ↓↓↓↓↓↓ - Color RGB cc2204000000000000000003__00______000000000064006400____0000000102 cc2410000000000000000003__00______000000000064006400____0000000102 cc2520000000000000000003__00______000000000064006400____0000000102 cc2640000000000000000003__00______000000000064006400____0000000102 cc2780000000000000000003__00______000000000064006400____0000000102 cc9100020000000000000003__00______000000000064006400____0000000102 cc28ff07 ↑↑ ↑↑↑↑ ff → Brightness max e803 → Intensity max b3 -1 7805 -1 80 -2 0807 -2 4d -3 9808 -3 1a -4 280a -4 ``` EXAMPLE: `cc2204000000000000000003ff00fd00fe000000000064006400e803000000010200000000000000000000000000000000000000000000000000000000000000` --- #### Cycle (user selects: intensive and brightness) ``` ↓↓↓↓↓↓- Old values; doesn't make any difference cc2204000000000000000004__00fd00fe0000000000________0000000007 cc2410000000000000000004__00fd00fe0000000000________0000000007 cc2520000000000000000004__00fd00fe0000000000________0000000007 cc2640000000000000000004__00fd00fe0000000000________0000000007 cc2780000000000000000004__00fd00fe0000000000________0000000007 cc9100020000000000000004__00fd00fe0000000000________0000000007 cc28ff07 ↑↑ ↑↑↑↑↑↑↑↑ ff → Bright. max 9001c800 → Intensive max b3 -1 58029001 -1 80 -2 2602c201 -2 4d -3 5203ee02 -3 1a -4 7805b004 -4 ``` EXAMPLE: `cc91000200000000000000041a00f0f0f000000000007805b0040000000007000000000000000000000000000000000000000000000000000000000000000000` --- ### Termination [repeat last setup request for some reason] ``` cc4701 ```