Generating and working with USB data
In this section I will go through through the process of configuring and using the USB packet monitor SnoopyPro.
Generating USB data
Upon launching SnoopyPro one should first install the driver and service; this is done through File->Unpack Drivers and File->Install Service in the USB devices window. Thereafter one can select various device addresses and their endpoints. I found the keyboard device address (windows device manager), and after toying around a bit, I found that the 1st endpoint (0x00) is used for basic keyboard functionality (typing, etc.). This works out of the box in Linux, so there was no need to look into this. The 2nd endpoint (0x01) seemed to be the one that the Windows application uses to execute commands that makes the keyboard blink. By right clicking this address, and selecting "install and restart", I was able to start capturing data.

I was able to verify that I had the correct end point by simply launching the Luxeed keyboard control application, clicking the button that causes the keyboard to blink, and making sure that the only time the endpoint received/sent data was at that moment. Once certain that I had the correct one, I cleared the window, un/replugged in the keyboard, and restarted the listener. With this clean slate, I launched the Luxeed control application again, selected the feature to make the keyboard blink in a rainbow pattern, and then clicked the stop icon in the sniffing window. I selected all the rows in the window - clicked expand - re-selected all rows - and hit copy. I then pasted in the text to a file which I later sent to my Linux machine. This is all the data that we will need to make a rudimentary driver!
Since the SnoopyPro output format differs from the original USBSnoop one cannot use the perl script to generate a skeleton driver from the log. One could of course hack the perl script to work with the new format, however, at this point I decided to do the output->code step manually as a learning exercise.
