aboutsummaryrefslogtreecommitdiff
path: root/NOTES
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2013-05-31 23:22:11 +0200
committerPřemysl Janouch <p.janouch@gmail.com>2013-05-31 23:22:11 +0200
commit2c250916392c36ec107d6b5d19d9485bf115bd9d (patch)
tree0669233a473809d86d41f6ad50e94b4601e3d53e /NOTES
parent4e1b26008b1ed39ea949fb339180e24c65438221 (diff)
downloadsensei-raw-ctl-2c250916392c36ec107d6b5d19d9485bf115bd9d.tar.gz
sensei-raw-ctl-2c250916392c36ec107d6b5d19d9485bf115bd9d.tar.xz
sensei-raw-ctl-2c250916392c36ec107d6b5d19d9485bf115bd9d.zip
Add some protocol documentation
Diffstat (limited to 'NOTES')
-rw-r--r--NOTES64
1 files changed, 64 insertions, 0 deletions
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 <MODE>
+ 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 <CPI>
+ 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 <CPI>
+ Like above, only sets the CPI for the case when the led is on.
+
+0x05 0x01 <INTENSITY>
+0x05 0x02 <INTENSITY>
+ 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 <PULSATION>
+0x07 0x02 <PULSATION>
+ 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 <POLLING>
+ 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
+