Keith A. Milner wrote:
I'm struggling to understand why the code is behaving as it does in practice
Because the code has evolved over a long time, and it tries to handle not only both versions of the USB audio specification, but also devices as they are behaving in practice.
My observation when plugging the USB device in is that, as expected, it tries to build the audio device, and add components to it including attaching capture and playback streams. It seems to go through this phase without too many surprises, and we get to the standard dmesg output:
usbcore: registered new interface driver snd-usb-audio
After this, it gets confusing.
It seems to open and close the PCMs
That happens due to requests from user space, probably PulseAudio.
kernel: [ 1987.452947] usb 1-1: Unable to change format on ep #8e: already in use
So this is a Roland device? Playback-synchronized-to-capture is a very special case; at the moment, nobody understands this code completely.
But the problem for this device might be that it requires some vendor-specific messages to enable it in the first place.
Regards, Clemens