A few years ago I bought a guitar effect, USB-sound-card like device - thinking the support for it will be easy to do in linux... Long story short - it wasn't.
So I had to start the usual way - gathering USB binary transfer logs, and trying to make sense of it. Normally this part would be reasonably complicated, but:
After a few years of hiding the device under a rag, I finally found some time (let's call it a few days :) ) to dive into this - and reverse engineered the binary protocol to configure the device. That was the easy part.
However, it turned out that doing USB audio I/O from userspace (isochronous transfers via libusb) is not that easy - and what was worse, the device has a quirk which requires also bulk I/O to work simultaneously. But sending garbage to the device made noise in the headphones - so that was good news.
The only thing that could be done was diving deep, approximately like this:
Kernel 4.9 contains the updated podhd driver, supporting POD X3. Now let's sit and wait how many regressions there will be :-)
The audio works now, but the device configuration is not yet done - it should be quite easy, only someone needs to find the will to prepare the utilities. The basic binary message parser (Bulk USB transfers) is available at github.