diff --git a/CorsairDriverBugfix/Material/hid1_11.pdf b/CorsairDriverBugfix/Material/hid1_11.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e9751c4fe031f7ba7bc4c16aa52b5d4ddbd45e67
Binary files /dev/null and b/CorsairDriverBugfix/Material/hid1_11.pdf differ
diff --git a/CorsairDriverBugfix/Material/usbhid-dump.txt b/CorsairDriverBugfix/Material/usbhid-dump.txt
new file mode 100644
index 0000000000000000000000000000000000000000..08290b07894d446fd5d3c453328d4b1cab7c2b2f
--- /dev/null
+++ b/CorsairDriverBugfix/Material/usbhid-dump.txt
@@ -0,0 +1 @@
+https://github.com/DIGImend/usbhid-dump
diff --git a/CorsairDriverBugfix/doc/notes.txt b/CorsairDriverBugfix/doc/notes.txt
index 05dbc52afb29281b3ac2e57772ed5103e079959b..22f18337cccd40c8263ffa4b538e0272b041be0e 100644
--- a/CorsairDriverBugfix/doc/notes.txt
+++ b/CorsairDriverBugfix/doc/notes.txt
@@ -31,7 +31,7 @@ dmesg # Beinhaltet auch Informationen, welche Treiber geladen werden.
 	[ 3085.620234] hid-generic 0003:1B1C:1B27.0008: input,hiddev0,hidraw4: USB HID v1.11 Device [Corsair Corsair VOID Wireless Gaming Dongle] on usb-0000:00:1a.0-1/input3
 
 |===
-
+\label{DisconnectDriver}
 Treiber einem Gerät zuweisen oder Gerät von Treiber trennen:
 cd /sys/bus/usb/drivers/hiddev
 ls
@@ -54,16 +54,27 @@ ls /sys/bus/usb/drivers/hiddev
 |===
 
 lsusb -vvv | more # Hochdetailierte Informationen über alle USB Geräte
+Bevor mittels lsusb der Report Descriptor eingesehen werden kann, muss der Treiber vom Gerät getrennt werden. Siehe hierzu Abschnitt \ref{DisconnectDriver}
 Interessant hier: Der Report Descriptor liefert Auskunft über alle Telegramme, die das Gerät als Human Interface Device senden kann und bietet damit die Möglichkeit das Gerät zu betreiben ohne einen speziellen Treiber für dieses spezifische Gerät schreiben zu müssen. Falls der Descriptor nicht zu den in der Realität vorhandenen Daten passt, kann es zu Problemen kommen.
 
 Eine Vermutung von mir: In den HID-Treiben werden Mutexe verwendet. Ich könnte mir vorstellen, dass falls im Descriptor ein Telegramm fälschlicherweise zu lang angemeldet wird, dass ein Mutex für den Lesevorgang blockiert wird und nicht wieder auftaut, da ein zu kurzes Telegramm angekommen ist. (Würde erklären, weshalb Funktionen teilweise noch funktionieren, aber Tasten fälschlicherweise als gedrückt empfunden werden z.B. Eventuell passt die Kommunikation auch nicht mehr, wenn das falsche Telegramm kommt und durch STRG+ALT+F1 und anschließendes zurückwechseln in den xserver werden die Puffer neu initialisiert.
 
-Andere Vermutung: Geräte die eine Fehlfunktionalität auslösen senden ein HID Event, das fehlinterpretiert wird oder vom Hersteller für eine Zusatzfunktionalität missbraucht wird und löst damit das seltsame Verhalten des XServers aus. Ein stark ähnliches Verhalten des XServers ist nachstellbar, indem man eine zweite Maus anschließt und eine beliebige Taste gedrückt hält. Auch in diesem Fall lassen sich manche Elemente nicht mehr anklicken und Fensterelemente geben kein visuelles Feedback mehr, wenn die Maus über sie hinweg fährt. Für diese Vermutung spricht auch, das mittels einer Umschaltung in ein tty und zurück in den XServer der Fehlklick bereinigt bzw. ignoriert oder ungülgtig wird, sodass trotz der weiterhin gedrückten Taste alle Elemente wieder richtig reagieren und bedienbar sind.
+Andere (bessere) Vermutung: Geräte die eine Fehlfunktionalität auslösen senden ein HID Event, das fehlinterpretiert wird oder vom Hersteller für eine Zusatzfunktionalität missbraucht wird und löst damit das seltsame Verhalten des XServers aus. Ein stark ähnliches Verhalten des XServers ist nachstellbar, indem man eine zweite Maus anschließt und eine beliebige Taste gedrückt hält. Auch in diesem Fall lassen sich manche Elemente nicht mehr anklicken und Fensterelemente geben kein visuelles Feedback mehr, wenn die Maus über sie hinweg fährt. Für diese Vermutung spricht auch, das mittels einer Umschaltung in ein tty und zurück in den XServer der Fehlklick bereinigt bzw. ignoriert oder ungülgtig wird, sodass trotz der weiterhin gedrückten Taste alle Elemente wieder richtig reagieren und bedienbar sind.
 
 Zur genaueren Untersuchung, ob die Vermutung eines fälschlicherweise gesendeten Events von problematischer Hardware die Ursache ist, sollte in dem Treiber für HID-Geräte genauer untersucht werden, welche HID-Events tatsächlich generiert werden. Mittels der Spezifikation von USB.org \cite{USB-HUT_v1-12} ist nachvollziehbar, welche Events sinnvoll und welche vielleicht für eine Sonderfunktion vom Hersteller missbraucht wurden. Über die Analyse des Rohdatenverkehrs ist dann genauer analysierbar, welches ein problematisches Telegramm sein kann.
 
 Für den Fall das es tatsächlich ein Telegramm gibt, dass zwar richtig aufgebaut und vom HID-Treiber interpretiert wird, in dem Kontext der Funktionstasten des Headsets aber fehl am Platze ist, wäre die Lösung die Erstellung eines eigenen Treibers für die Hardware, der den bisherigen HID-Treiber initialisiert und verwendet, problematische Telegrammteile aber zum Beispiel weg schneidet. Für den unwahrscheinlichen Fall, dass der derzeitig aktuelle HID-Treiber ein Telegramm nicht richtig behandelt, kann ein Update des Treibers hid-input das Problem beheben.  
 
+Nützliches Tool um hid-Geräte und Rohdaten zu untersuchen: usbhid-dump.
+	wget https://github.com/DIGImend/usbhid-dump/archive/master.zip
+	unzip usbhid-dump-master.zip
+	./bootstrap
+	sudo apt-get install libusb-1.0-0-dev
+	./configure
+	make
+	sudo make install
+
+
 Möglicherweise interessante Treiber, um die Theorie zu bestätigen:
 	snd
 	hid-input 
diff --git a/CorsairDriverBugfix/lsusb-vvv.txt b/CorsairDriverBugfix/lsusb-vvv.txt
new file mode 100644
index 0000000000000000000000000000000000000000..de7300b13a7d05a0e02aad5085f4e41cebd9828a
--- /dev/null
+++ b/CorsairDriverBugfix/lsusb-vvv.txt
@@ -0,0 +1,805 @@
+Bus 003 Device 014: ID 1b1c:1b27 Corsair 
+Device Descriptor:
+  bLength                18
+  bDescriptorType         1
+  bcdUSB               1.10
+  bDeviceClass            0 (Defined at Interface level)
+  bDeviceSubClass         0 
+  bDeviceProtocol         0 
+  bMaxPacketSize0        64
+  idVendor           0x1b1c Corsair
+  idProduct          0x1b27 
+  bcdDevice            0.00
+  iManufacturer           3 Corsair
+  iProduct                4 Corsair VOID Wireless Gaming Dongle
+  iSerial                 0 
+  bNumConfigurations      1
+  Configuration Descriptor:
+    bLength                 9
+    bDescriptorType         2
+    wTotalLength          269
+    bNumInterfaces          4
+    bConfigurationValue     1
+    iConfiguration          0 
+    bmAttributes         0x80
+      (Bus Powered)
+    MaxPower              100mA
+    Interface Descriptor:
+      bLength                 9
+      bDescriptorType         4
+      bInterfaceNumber        0
+      bAlternateSetting       0
+      bNumEndpoints           0
+      bInterfaceClass         1 Audio
+      bInterfaceSubClass      1 Control Device
+      bInterfaceProtocol      0 
+      iInterface              1 Corsair VOID Wireless Gaming Dongle
+      AudioControl Interface Descriptor:
+        bLength                10
+        bDescriptorType        36
+        bDescriptorSubtype      1 (HEADER)
+        bcdADC               1.00
+        wTotalLength           71
+        bInCollection           2
+        baInterfaceNr( 0)       1
+        baInterfaceNr( 1)       2
+      AudioControl Interface Descriptor:
+        bLength                12
+        bDescriptorType        36
+        bDescriptorSubtype      2 (INPUT_TERMINAL)
+        bTerminalID             6
+        wTerminalType      0x0402 Headset
+        bAssocTerminal          0
+        bNrChannels             1
+        wChannelConfig     0x0000
+        iChannelNames           0 
+        iTerminal               0 
+      AudioControl Interface Descriptor:
+        bLength                 9
+        bDescriptorType        36
+        bDescriptorSubtype      6 (FEATURE_UNIT)
+        bUnitID                 3
+        bSourceID               6
+        bControlSize            1
+        bmaControls( 0)      0x03
+          Mute Control
+          Volume Control
+        bmaControls( 1)      0x00
+        iFeature                0 
+      AudioControl Interface Descriptor:
+        bLength                 9
+        bDescriptorType        36
+        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
+        bTerminalID             7
+        wTerminalType      0x0101 USB Streaming
+        bAssocTerminal          0
+        bSourceID               3
+        iTerminal               0 
+      AudioControl Interface Descriptor:
+        bLength                12
+        bDescriptorType        36
+        bDescriptorSubtype      2 (INPUT_TERMINAL)
+        bTerminalID             1
+        wTerminalType      0x0101 USB Streaming
+        bAssocTerminal          0
+        bNrChannels             2
+        wChannelConfig     0x0003
+          Left Front (L)
+          Right Front (R)
+        iChannelNames           0 
+        iTerminal               0 
+      AudioControl Interface Descriptor:
+        bLength                10
+        bDescriptorType        36
+        bDescriptorSubtype      6 (FEATURE_UNIT)
+        bUnitID                 2
+        bSourceID               1
+        bControlSize            1
+        bmaControls( 0)      0x03
+          Mute Control
+          Volume Control
+        bmaControls( 1)      0x00
+        bmaControls( 2)      0x00
+        iFeature                0 
+      AudioControl Interface Descriptor:
+        bLength                 9
+        bDescriptorType        36
+        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
+        bTerminalID             5
+        wTerminalType      0x0402 Headset
+        bAssocTerminal          0
+        bSourceID               2
+        iTerminal               0 
+    Interface Descriptor:
+      bLength                 9
+      bDescriptorType         4
+      bInterfaceNumber        1
+      bAlternateSetting       0
+      bNumEndpoints           0
+      bInterfaceClass         1 Audio
+      bInterfaceSubClass      2 Streaming
+      bInterfaceProtocol      0 
+      iInterface              0 
+    Interface Descriptor:
+      bLength                 9
+      bDescriptorType         4
+      bInterfaceNumber        1
+      bAlternateSetting       1
+      bNumEndpoints           1
+      bInterfaceClass         1 Audio
+      bInterfaceSubClass      2 Streaming
+      bInterfaceProtocol      0 
+      iInterface              0 
+      AudioStreaming Interface Descriptor:
+        bLength                 7
+        bDescriptorType        36
+        bDescriptorSubtype      1 (AS_GENERAL)
+        bTerminalLink           7
+        bDelay                  0 frames
+        wFormatTag              1 PCM
+      AudioStreaming Interface Descriptor:
+        bLength                32
+        bDescriptorType        36
+        bDescriptorSubtype      2 (FORMAT_TYPE)
+        bFormatType             1 (FORMAT_TYPE_I)
+        bNrChannels             1
+        bSubframeSize           2
+        bBitResolution         16
+        bSamFreqType            8 Discrete
+        tSamFreq[ 0]         8000
+        tSamFreq[ 1]        11025
+        tSamFreq[ 2]        16000
+        tSamFreq[ 3]        22050
+        tSamFreq[ 4]        24000
+        tSamFreq[ 5]        32000
+        tSamFreq[ 6]        44100
+        tSamFreq[ 7]        48000
+      Endpoint Descriptor:
+        bLength                 9
+        bDescriptorType         5
+        bEndpointAddress     0x81  EP 1 IN
+        bmAttributes           13
+          Transfer Type            Isochronous
+          Synch Type               Synchronous
+          Usage Type               Data
+        wMaxPacketSize     0x0090  1x 144 bytes
+        bInterval               1
+        bRefresh                0
+        bSynchAddress           0
+        AudioControl Endpoint Descriptor:
+          bLength                 7
+          bDescriptorType        37
+          bDescriptorSubtype      1 (EP_GENERAL)
+          bmAttributes         0x01
+            Sampling Frequency
+          bLockDelayUnits         0 Undefined
+          wLockDelay              0 Undefined
+    Interface Descriptor:
+      bLength                 9
+      bDescriptorType         4
+      bInterfaceNumber        2
+      bAlternateSetting       0
+      bNumEndpoints           0
+      bInterfaceClass         1 Audio
+      bInterfaceSubClass      2 Streaming
+      bInterfaceProtocol      0 
+      iInterface              0 
+    Interface Descriptor:
+      bLength                 9
+      bDescriptorType         4
+      bInterfaceNumber        2
+      bAlternateSetting       1
+      bNumEndpoints           0
+      bInterfaceClass         1 Audio
+      bInterfaceSubClass      2 Streaming
+      bInterfaceProtocol      0 
+      iInterface              0 
+    Interface Descriptor:
+      bLength                 9
+      bDescriptorType         4
+      bInterfaceNumber        2
+      bAlternateSetting       2
+      bNumEndpoints           1
+      bInterfaceClass         1 Audio
+      bInterfaceSubClass      2 Streaming
+      bInterfaceProtocol      0 
+      iInterface              0 
+      AudioStreaming Interface Descriptor:
+        bLength                 7
+        bDescriptorType        36
+        bDescriptorSubtype      1 (AS_GENERAL)
+        bTerminalLink           1
+        bDelay                  0 frames
+        wFormatTag              1 PCM
+      AudioStreaming Interface Descriptor:
+        bLength                32
+        bDescriptorType        36
+        bDescriptorSubtype      2 (FORMAT_TYPE)
+        bFormatType             1 (FORMAT_TYPE_I)
+        bNrChannels             2
+        bSubframeSize           2
+        bBitResolution         16
+        bSamFreqType            8 Discrete
+        tSamFreq[ 0]         8000
+        tSamFreq[ 1]        11025
+        tSamFreq[ 2]        16000
+        tSamFreq[ 3]        22050
+        tSamFreq[ 4]        24000
+        tSamFreq[ 5]        32000
+        tSamFreq[ 6]        44100
+        tSamFreq[ 7]        48000
+      Endpoint Descriptor:
+        bLength                 9
+        bDescriptorType         5
+        bEndpointAddress     0x02  EP 2 OUT
+        bmAttributes           13
+          Transfer Type            Isochronous
+          Synch Type               Synchronous
+          Usage Type               Data
+        wMaxPacketSize     0x0120  1x 288 bytes
+        bInterval               1
+        bRefresh                0
+        bSynchAddress           0
+        AudioControl Endpoint Descriptor:
+          bLength                 7
+          bDescriptorType        37
+          bDescriptorSubtype      1 (EP_GENERAL)
+          bmAttributes         0x01
+            Sampling Frequency
+          bLockDelayUnits         0 Undefined
+          wLockDelay              0 Undefined
+    Interface Descriptor:
+      bLength                 9
+      bDescriptorType         4
+      bInterfaceNumber        3
+      bAlternateSetting       0
+      bNumEndpoints           1
+      bInterfaceClass         3 Human Interface Device
+      bInterfaceSubClass      0 No Subclass
+      bInterfaceProtocol      0 None
+      iInterface              2 Hid Interface
+        HID Device Descriptor:
+          bLength                 9
+          bDescriptorType        33
+          bcdHID               1.11
+          bCountryCode            0 Not supported
+          bNumDescriptors         1
+          bDescriptorType        34 Report
+          wDescriptorLength     603
+          Report Descriptor: (length is 603)
+            Item(Global): Usage Page, data= [ 0x0c ] 12
+                            Consumer
+            Item(Local ): Usage, data= [ 0x01 ] 1
+                            Consumer Control
+            Item(Main  ): Collection, data= [ 0x01 ] 1
+                            Application
+            Item(Global): Report ID, data= [ 0x01 ] 1
+            Item(Local ): Usage, data= [ 0xe9 ] 233
+                            Volume Increment
+            Item(Local ): Usage, data= [ 0xea ] 234
+                            Volume Decrement
+            Item(Global): Report Size, data= [ 0x01 ] 1
+            Item(Global): Report Count, data= [ 0x02 ] 2
+            Item(Global): Logical Minimum, data= [ 0x00 ] 0
+            Item(Global): Logical Maximum, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Report Size, data= [ 0x06 ] 6
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x03 ] 3
+                            Constant Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Report Count, data= [ 0x03 ] 3
+            Item(Global): Report Size, data= [ 0x01 ] 1
+            Item(Local ): Usage, data= [ 0xb6 ] 182
+                            Scan Previous Track
+            Item(Local ): Usage, data= [ 0xcd ] 205
+                            Play/Pause
+            Item(Local ): Usage, data= [ 0xb5 ] 181
+                            Scan Next Track
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Report Size, data= [ 0x05 ] 5
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x03 ] 3
+                            Constant Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0xc5 0xff ] 65477
+                            (null)
+            Item(Local ): Usage, data= [ 0x01 ] 1
+                            (null)
+            Item(Main  ): Collection, data= [ 0x01 ] 1
+                            Application
+            Item(Local ): Usage, data= [ 0x64 ] 100
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0x64 ] 100
+            Item(Local ): Usage, data= [ 0x69 ] 105
+                            (null)
+            Item(Local ): Usage, data= [ 0x6a ] 106
+                            (null)
+            Item(Local ): Usage, data= [ 0x6b ] 107
+                            (null)
+            Item(Local ): Usage, data= [ 0x6c ] 108
+                            (null)
+            Item(Local ): Usage, data= [ 0x6d ] 109
+                            (null)
+            Item(Local ): Usage, data= [ 0x6e ] 110
+                            (null)
+            Item(Local ): Usage, data= [ 0x6f ] 111
+                            (null)
+            Item(Global): Report Size, data= [ 0x01 ] 1
+            Item(Global): Report Count, data= [ 0x07 ] 7
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x68 ] 104
+                            (null)
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x70 ] 112
+                            (null)
+            Item(Global): Report Size, data= [ 0x07 ] 7
+            Item(Global): Logical Maximum, data= [ 0x64 ] 100
+            Item(Main  ): Input, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Report Size, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x03 ] 3
+                            Constant Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x71 ] 113
+                            (null)
+            Item(Global): Report Size, data= [ 0x04 ] 4
+            Item(Global): Logical Maximum, data= [ 0x0d ] 13
+            Item(Main  ): Input, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x72 ] 114
+                            (null)
+            Item(Local ): Usage, data= [ 0x73 ] 115
+                            (null)
+            Item(Local ): Usage, data= [ 0x74 ] 116
+                            (null)
+            Item(Global): Report Size, data= [ 0x01 ] 1
+            Item(Global): Report Count, data= [ 0x03 ] 3
+            Item(Global): Logical Maximum, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x03 ] 3
+                            Constant Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x75 ] 117
+                            (null)
+            Item(Global): Report Size, data= [ 0x03 ] 3
+            Item(Global): Logical Maximum, data= [ 0x06 ] 6
+            Item(Main  ): Input, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Report Size, data= [ 0x01 ] 1
+            Item(Global): Report Count, data= [ 0x05 ] 5
+            Item(Main  ): Input, data= [ 0x03 ] 3
+                            Constant Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Local ): Usage, data= [ 0x65 ] 101
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0x65 ] 101
+            Item(Local ): Usage, data= [ 0xd5 ] 213
+                            (null)
+            Item(Local ): Usage, data= [ 0xd6 ] 214
+                            (null)
+            Item(Global): Report Size, data= [ 0x08 ] 8
+            Item(Global): Report Count, data= [ 0x02 ] 2
+            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
+            Item(Main  ): Input, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Local ): Usage, data= [ 0x66 ] 102
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0x66 ] 102
+            Item(Local ): Usage, data= [ 0x78 ] 120
+                            (null)
+            Item(Local ): Usage, data= [ 0x79 ] 121
+                            (null)
+            Item(Local ): Usage, data= [ 0x7a ] 122
+                            (null)
+            Item(Local ): Usage, data= [ 0x7b ] 123
+                            (null)
+            Item(Global): Report Count, data= [ 0x04 ] 4
+            Item(Main  ): Input, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Local ): Usage, data= [ 0xc8 ] 200
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xc8 ] 200
+            Item(Local ): Usage, data= [ 0xd5 ] 213
+                            (null)
+            Item(Local ): Usage, data= [ 0xd6 ] 214
+                            (null)
+            Item(Global): Report Count, data= [ 0x02 ] 2
+            Item(Main  ): Output, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Local ): Usage, data= [ 0xc9 ] 201
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xc9 ] 201
+            Item(Local ): Usage, data= [ 0xd4 ] 212
+                            (null)
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Output, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Local ): Usage, data= [ 0xca ] 202
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xca ] 202
+            Item(Local ): Usage, data= [ 0xd8 ] 216
+                            (null)
+            Item(Main  ): Output, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0xd9 ] 217
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x0a ] 10
+                            Ordinal
+            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
+                            Instance 1
+            Item(Local ): Usage Maximum, data= [ 0x03 ] 3
+                            Instance 3
+            Item(Global): Report Count, data= [ 0x03 ] 3
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0xc5 0xff ] 65477
+                            (null)
+            Item(Local ): Usage, data= [ 0xcb ] 203
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xcb ] 203
+            Item(Local ): Usage, data= [ 0xd2 ] 210
+                            (null)
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Output, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0xd3 ] 211
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x0a ] 10
+                            Ordinal
+            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
+                            Instance 1
+            Item(Local ): Usage Maximum, data= [ 0x12 ] 18
+                            (null)
+            Item(Global): Report Count, data= [ 0x12 ] 18
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0xc5 0xff ] 65477
+                            (null)
+            Item(Local ): Usage, data= [ 0xcc ] 204
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xcc ] 204
+            Item(Local ): Usage, data= [ 0xd7 ] 215
+                            (null)
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Output, data= [ 0x22 ] 34
+                            Data Variable Absolute No_Wrap Linear
+                            No_Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x01 ] 1
+                            (null)
+            Item(Main  ): Collection, data= [ 0x01 ] 1
+                            Application
+            Item(Local ): Usage, data= [ 0x0a ] 10
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xff ] 255
+            Item(Global): Report Size, data= [ 0x20 ] 32
+            Item(Local ): Usage, data= [ 0x0b ] 11
+                            (null)
+            Item(Global): Logical Minimum, data= [ 0x01 0x00 0x00 0x80 ] -2147483647
+            Item(Global): Logical Maximum, data= [ 0xff 0xff 0xff 0x7f ] 2147483647
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Local ): Usage, data= [ 0x22 ] 34
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0x90 ] 144
+            Item(Local ): Usage, data= [ 0x33 ] 51
+                            (null)
+            Item(Global): Report Size, data= [ 0x08 ] 8
+            Item(Global): Logical Minimum, data= [ 0x00 ] 0
+            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x34 ] 52
+                            (null)
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Usage Page, data= [ 0x01 ] 1
+                            Generic Desktop Controls
+            Item(Local ): Usage, data= [ 0x3b ] 59
+                            Byte Count
+            Item(Global): Report Size, data= [ 0x10 ] 16
+            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x0a ] 10
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x0a ] 10
+                            Ordinal
+            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
+                            Instance 1
+            Item(Local ): Usage Maximum, data= [ 0x0a ] 10
+                            (null)
+            Item(Global): Report Count, data= [ 0x0a ] 10
+            Item(Global): Report Size, data= [ 0x08 ] 8
+            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x22 ] 34
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0x90 ] 144
+            Item(Local ): Usage, data= [ 0x33 ] 51
+                            (null)
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x34 ] 52
+                            (null)
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Usage Page, data= [ 0x01 ] 1
+                            Generic Desktop Controls
+            Item(Local ): Usage, data= [ 0x3b ] 59
+                            Byte Count
+            Item(Global): Report Size, data= [ 0x10 ] 16
+            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x0a ] 10
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x0a ] 10
+                            Ordinal
+            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
+                            Instance 1
+            Item(Local ): Usage Maximum, data= [ 0x0a ] 10
+                            (null)
+            Item(Global): Report Count, data= [ 0x0a ] 10
+            Item(Global): Report Size, data= [ 0x08 ] 8
+            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x22 ] 34
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xc4 ] 196
+            Item(Local ): Usage, data= [ 0x33 ] 51
+                            (null)
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x34 ] 52
+                            (null)
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Usage Page, data= [ 0x01 ] 1
+                            Generic Desktop Controls
+            Item(Local ): Usage, data= [ 0x3b ] 59
+                            Byte Count
+            Item(Global): Report Size, data= [ 0x10 ] 16
+            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x0a ] 10
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x0a ] 10
+                            Ordinal
+            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
+                            Instance 1
+            Item(Local ): Usage Maximum, data= [ 0x3b ] 59
+                            (null)
+            Item(Global): Report Count, data= [ 0x3b ] 59
+            Item(Global): Report Size, data= [ 0x08 ] 8
+            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x22 ] 34
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xc4 ] 196
+            Item(Local ): Usage, data= [ 0x33 ] 51
+                            (null)
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x34 ] 52
+                            (null)
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Usage Page, data= [ 0x01 ] 1
+                            Generic Desktop Controls
+            Item(Local ): Usage, data= [ 0x3b ] 59
+                            Byte Count
+            Item(Global): Report Size, data= [ 0x10 ] 16
+            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x0a ] 10
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x0a ] 10
+                            Ordinal
+            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
+                            Instance 1
+            Item(Local ): Usage Maximum, data= [ 0x3b ] 59
+                            (null)
+            Item(Global): Report Count, data= [ 0x3b ] 59
+            Item(Global): Report Size, data= [ 0x08 ] 8
+            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x0c ] 12
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xff ] 255
+            Item(Global): Usage Page, data= [ 0x01 ] 1
+                            Generic Desktop Controls
+            Item(Local ): Usage, data= [ 0x3b ] 59
+                            Byte Count
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Feature, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x3a ] 58
+                            Counted Buffer
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x0a ] 10
+                            Ordinal
+            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
+                            Instance 1
+            Item(Local ): Usage Maximum, data= [ 0x3e ] 62
+                            (null)
+            Item(Global): Report Count, data= [ 0x3e ] 62
+            Item(Main  ): Feature, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x0c ] 12
+                            (null)
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Report ID, data= [ 0xe2 ] 226
+            Item(Global): Usage Page, data= [ 0x01 ] 1
+                            Generic Desktop Controls
+            Item(Local ): Usage, data= [ 0x3b ] 59
+                            Byte Count
+            Item(Global): Report Count, data= [ 0x01 ] 1
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Local ): Usage, data= [ 0x3a ] 58
+                            Counted Buffer
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x0a ] 10
+                            Ordinal
+            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
+                            Instance 1
+            Item(Local ): Usage Maximum, data= [ 0x3e ] 62
+                            (null)
+            Item(Global): Report Count, data= [ 0x3e ] 62
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
+      Endpoint Descriptor:
+        bLength                 7
+        bDescriptorType         5
+        bEndpointAddress     0x83  EP 3 IN
+        bmAttributes            3
+          Transfer Type            Interrupt
+          Synch Type               None
+          Usage Type               Data
+        wMaxPacketSize     0x0020  1x 32 bytes
+        bInterval               1
+Device Status:     0x0000
+  (Bus Powered)
diff --git a/CorsairDriverBugfix/usbhid-dump_CorsairRGBVoid.txt b/CorsairDriverBugfix/usbhid-dump_CorsairRGBVoid.txt
new file mode 100644
index 0000000000000000000000000000000000000000..138e204e168d733c9d0d5f12ee667f6e7e29cca6
--- /dev/null
+++ b/CorsairDriverBugfix/usbhid-dump_CorsairRGBVoid.txt
@@ -0,0 +1,46 @@
+003:010:003:DESCRIPTOR         1463316538.072320
+ 05 0C 09 01 A1 01 85 01 09 E9 09 EA 75 01 95 02
+ 15 00 25 01 81 02 75 06 95 01 81 03 95 03 75 01
+ 09 B6 09 CD 09 B5 81 02 75 05 95 01 81 03 C0 06
+ C5 FF 09 01 A1 01 09 64 A1 02 85 64 09 69 09 6A
+ 09 6B 09 6C 09 6D 09 6E 09 6F 75 01 95 07 81 02
+ 09 68 95 01 81 02 09 70 75 07 25 64 81 22 75 01
+ 81 03 09 71 75 04 25 0D 81 22 09 72 09 73 09 74
+ 75 01 95 03 25 01 81 02 95 01 81 03 09 75 75 03
+ 25 06 81 22 75 01 95 05 81 03 C0 09 65 A1 02 85
+ 65 09 D5 09 D6 75 08 95 02 26 FF 00 81 22 C0 09
+ 66 A1 02 85 66 09 78 09 79 09 7A 09 7B 95 04 81
+ 22 C0 09 C8 A1 02 85 C8 09 D5 09 D6 95 02 91 22
+ C0 09 C9 A1 02 85 C9 09 D4 95 01 91 22 C0 09 CA
+ A1 02 85 CA 09 D8 91 22 09 D9 A1 02 05 0A 19 01
+ 29 03 95 03 91 02 C0 C0 06 C5 FF 09 CB A1 02 85
+ CB 09 D2 95 01 91 22 09 D3 A1 02 05 0A 19 01 29
+ 12 95 12 91 02 C0 C0 06 C5 FF 09 CC A1 02 85 CC
+ 09 D7 95 01 91 22 C0 C0 06 00 FF 09 01 A1 01 09
+ 0A A1 02 85 FF 75 20 09 0B 17 01 00 00 80 27 FF
+ FF FF 7F 81 02 C0 09 22 A1 02 85 90 09 33 75 08
+ 15 00 26 FF 00 81 02 09 34 81 02 05 01 09 3B 75
+ 10 27 FF FF 00 00 81 02 06 00 FF 09 0A A1 02 05
+ 0A 19 01 29 0A 95 0A 75 08 26 FF 00 81 02 C0 C0
+ 06 00 FF 09 22 A1 02 85 90 09 33 95 01 91 02 09
+ 34 91 02 05 01 09 3B 75 10 27 FF FF 00 00 91 02
+ 06 00 FF 09 0A A1 02 05 0A 19 01 29 0A 95 0A 75
+ 08 26 FF 00 91 02 C0 C0 06 00 FF 09 22 A1 02 85
+ C4 09 33 95 01 81 02 09 34 81 02 05 01 09 3B 75
+ 10 27 FF FF 00 00 81 02 06 00 FF 09 0A A1 02 05
+ 0A 19 01 29 3B 95 3B 75 08 26 FF 00 81 02 C0 C0
+ 06 00 FF 09 22 A1 02 85 C4 09 33 95 01 91 02 09
+ 34 91 02 05 01 09 3B 75 10 27 FF FF 00 00 91 02
+ 06 00 FF 09 0A A1 02 05 0A 19 01 29 3B 95 3B 75
+ 08 26 FF 00 91 02 C0 C0 06 00 FF 09 0C A1 02 85
+ FF 05 01 09 3B 95 01 B1 02 09 3A A1 02 05 0A 19
+ 01 29 3E 95 3E B1 02 C0 C0 06 00 FF 09 0C A1 02
+ 85 E2 05 01 09 3B 95 01 81 02 09 3A A1 02 05 0A
+ 19 01 29 3E 95 3E 81 02 C0 C0 C0
+
+003:010:003:STREAM             1463316542.769211
+ 01 00 00
+
+003:010:003:STREAM             1463316542.778205
+ 64 00 00 33 00
+