From 2c250916392c36ec107d6b5d19d9485bf115bd9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Fri, 31 May 2013 23:22:11 +0200 Subject: [PATCH] Add some protocol documentation --- NOTES | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 NOTES diff --git a/NOTES b/NOTES new file mode 100644 index 0000000..dac45f7 --- /dev/null +++ b/NOTES @@ -0,0 +1,64 @@ +The SteelSeries Sensei Raw device driver communicates with the mouse using a +very simple protocol. The packets are always 32 bytes long, and there are just +a few commands in use. Any unused bytes should be filled with zeroes. These +are normal SET_REPORT messages, with Report Type set to two (Output), and both +Report ID and wIndex set to zero. + +0x02 0x00 + Changes the mode of the mouse to MODE: + 0x01 is a legacy mode that only reports 5 mouse buttons and sends keyboard + codes for Page Up and Page Down keys instead of the sixth and seventh + button of the mouse. + 0x02 is the mode used by the Windows driver. Here the mouse sends reports + for the 6th and 7th button like normal buttons, and the DPI switch button + as the 8th, with a 0x80 code. + +0x03 0x01 + Sets the CPI used by the mouse when the CPI led is off. The values that can + be legally used lie between <0x01; 0x3f> and correspond to factors of 90 (that + is, the lowest value represent CPI of 90 and the highest one represents 5760. + +0x03 0x02 + Like above, only sets the CPI for the case when the led is on. + +0x05 0x01 +0x05 0x02 + Sets the LED intensity (both the scrolling wheel and the SteelSeries logo). + The two commands are equivalent. The intensity can be: + 0x01 for off + 0x02 for low intensity + 0x03 for medium intensity + 0x04 for high intensity + +0x07 0x01 +0x07 0x02 + Sets the pulsation speed for the light emitting diodes. The two commands are + equivalent. The pulsation speed can be one of the following: + 0x01 for steady, as in no alteration of light intensity at all + 0x02 for slow + 0x03 for medium speed + 0x04 for fast + +0x04 0x00 + Sets the polling frequency. The value can be one of these values: + 0x01 for 1000 Hz + 0x02 for 500 Hz + 0x03 for 250 Hz + 0x04 for 125 Hz + +0x09 + Saves the the current configuration of the mouse to ROM. The device will + start with these values when disconnected from the computer and reconnected + again. + +All GET_REPORT requests are being answered with the same data, which seems to +be some internal structure of 256 bytes. Any larger requests are being +padded with zeroes. Located in this blob are all the current settings of the +mouse, except for the mode. + +Byte 102 holds the led intensity +Byte 103 holds the pulsation setting +Byte 107 holds the CPI value when the corresponding led is off +Byte 108 holds the CPI value when the corresponding led is on +Byte 128 holds the polling frequency setting +