Have you ever get into a situation where you have a device that works great but out of OS support? This situation will forbid to get full functionality out of your device. Isn’t it? See how can you mend it with Linux Support..
A recent article published on Hackaday where Harry Gill found himself in such a situation with a new all-in-one (AIO) water cooling system. It didn’t technically require any operating system interaction to perform its main task. However, it requires Windows while adjusting it’s settings adjustments or reading back statistics. He thought it would be nice to have those features using Linux support. The communication is done via USB. So, he decided to perform reverse engineering the protocol and simply replicate it.
His first step was to set up a dual boot system that allowed him to capture the USB traffic with Wireshark and USBPcap. Then it would simply be a matter of analyzing the captures and writing some Linux software to make sense of the data. The go-to library for USB tasks would be libusb, which has bindings for plenty of languages, but as an avid Rust user, that choice was never really an issue anyway.
How to actually make use of the captured data was an entirely different story though, and without documentation or much help from the vendor, Harry resorted to good old trial and error to find out which byte does what. Eventually he succeeded and was able to get the additional features that he wanted supported in Linux — check out the final code in the GitHub repository if you’re curious what this looks like in Rust.
Capturing the USB communication with Wireshark seems generally a great way to port unsupported features to Linux, as we’ve seen earlier with an RGB keyboard and the VGA frame grabber that inspired it. If you want to dig deeper into the subject, Harry listed a few resources regarding USB in general, but there’s plenty more to explore with reverse engineering USB.
Read the detailed news on: https://hackaday.com/category/linux-hacks/