The Crescendo is reversed already and there’s been support in buttplug-csharp since May 2018. But yeah, the documentation for the protocol hasn’t been written yet. Code is here:
Just a note that, if you’re wanting to write your own non-buttplug code for the Crescendo, it’s a little weird. The way I got manual control working was to shift it into “manual” mode, but you have to send an update message every ~80-90ms, otherwise it’ll stop working. That’s why our code is structured the way it is, we have a task constantly sending updates while any motor’s speed is > 0.
As for Buttplug access, the Crescendo supports the VibrateCmd message with up to 6 speed commands, so you can set speeds per-motor.