

When you start monitoring the USB traffic you will get a whole host of rubbish unless you filter out the unnecessary information. Insert snaps of razer synapse app options Phase 2 (Setup) What I normally do is go through the Razer Synapse app and take screenshots of all the various features and buttons you can click on. The Chroma has brightness settings, so it stands to reason that you would send a brightness value to the keyboard. What we have found is that you set the keys on the keyboard on a row by row basis. You could send all of the keys RGB values but that's a lot of data.

So how might they accomplish this feature? you could send a Key ID and an RGB value to the keyboard to set up a key, this is OK but would take ages for lots of keys. Secondly as each of the keys are individually addressable this means each key is probably represented by an RGB backlit value. This tells us two things, firstly that as the keyboard can access a whole spectrum of colours it wouldn't be a bad assumption to think that the keyboard using RGB (aka 1byte = RED, 1byte = GREEN, 1byte = BLUE, 3bytes total) to represent colours, similar to how you would represent colour in HTML like #FF0000 (RED). The Chroma has full RGB backlit keys which are each individually addressable. Throughout the rest of this "tutorial" I will be using the Razer BlackWidow Chroma as an example. The main thing would be a list of features. Phase 1 - (Research)īefore you start reverse engineering you want to learn as much about the device as you can. I would also familarise yourself with the wireshark interface as it will be used extensively. If synapse can recognise it and control it then you are in luck. I would suggest that the Windows VM have only the Razer software on it and that's it, makes for a better testing environment.īefore attempting to do anything you will need to pass the USB device of whatever you are reverse engineering through to the Virtualbox VM. It goes without saying that you have access to root privileges. You will also need an additional keyboard, Virtualbox, VirtuaBox Extensions Pack, a Windows VM (I normally use 7 for this), Razer Synapse installed on the VM and Wireshark. There are a few things you will need when reverse engineering the USB protocol device.

Up to date documentation at Prerequisites
