Xone43C: USB communication
Hello Geraldo, hello all,
sorry for spamming the list with such minuscule details. Thank you for your message! I did not hear from other people yet, so it's probably safe to assume that no one else is already working on it. Adding a section to the quirks-table does not help, the vendor-specific interfaces still don't work. Obviously they need extra initialization.
Next step: sniffing again while running Windows in the vm. The interesting stuff is going on here: https://drive.google.com/file/d/1IlkR4ey9Gwsdrrf6jfOwNUVDtGcl_93- (Full log: https://drive.google.com/file/d/1VmSGVk8V1saw7qdPfbOH2d4HmZTrlzxj)
From this I see several URB control messages going back and forth, for example the host sending 80bbf0, and the device responding accordingly. A bit later, and after sending 44ac00 six times (hola!?!?) I get isodesc[0-7] cross-device link for input; and once more for output, and the device reports success. These appear to be my eight channels. So far, so good for a first basic overview of the structure, but the tricky part is figuring out what message is doing what. Only the manufacturer knows it, I need experiment and guessing with a lot of time and luck. Is there a common agreement where in the source code such control messages should be put? Probably an extra file?
Best, Roman
On Tue, Jun 8, 2021 at 3:44 AM Roman Muller klangrausch@wolke7.net wrote:
Hello Geraldo, hello all,
sorry for spamming the list with such minuscule details.
Hi Roman, don't worry, your message is on topic...
Thank you for your message! I did not hear from other people yet, so it's probably safe to assume that no one else is already working on it. Adding a section to the quirks-table does not help, the vendor-specific interfaces still don't work. Obviously they need extra initialization.
Next step: sniffing again while running Windows in the vm. The interesting stuff is going on here: https://drive.google.com/file/d/1IlkR4ey9Gwsdrrf6jfOwNUVDtGcl_93- (Full log: https://drive.google.com/file/d/1VmSGVk8V1saw7qdPfbOH2d4HmZTrlzxj)
From this I see several URB control messages going back and forth, for example the host sending 80bbf0, and the device responding accordingly. A bit later, and after sending 44ac00 six times (hola!?!?) I get isodesc[0-7] cross-device link for input; and once more for output, and the device reports success. These appear to be my eight channels. So far, so good for a first basic overview of the structure, but the tricky part is figuring out what message is doing what.
Your Xone:43C doesn't seem so esoteric from the usbmon capture you gave.
Is your capture complete from a software standpoint? i.e. are you starting Serato or Traktor on the VM while doing the usbmon capture?
80bbf0 is just the data fragment, you need to replicate the whole Setup Data of the packet.
Only the manufacturer knows it, I need experiment and guessing with a lot of time and luck.
You probably don't really need to know for now what these control messages are. There's a good chance replicating them is enough.
Is there a common agreement where in the source code such control messages should be put? Probably an extra file?
I think you should worry for now in getting your device to work. Then you share the patch with the maintainers and they will help you write the best code possible.
But sound/usb/quirks.c seems like a good place to get started.
All the best, Geraldo Nascimento
Best, Roman
Dear Roman,
Thanks for reaching out to the list and starting to analyze your device.
sorry for spamming the list with such minuscule details. Thank you for your message! I did not hear from other people yet,
No need to apologize.
From this I see several URB control messages going back and forth, for example the host sending 80bbf0, and the device responding accordingly. A bit later, and after sending 44ac00 six times (hola!?!?)
At least one of those is to set the sample-rate: 44100(Hz) is 0x00ac44 (44ac00 is the little endian)
Most likely you will need to set the sample rate of the device similar to the Pioneer devices. Take a look at pioneer_djm_set_format_quirk() in sound/usb/quirks.c to see how the URB is being constructed for DJM mixers.
Only the manufacturer knows it, I need experiment and guessing with a lot of time and luck.
You will figure out that soon enough with perseverance! Do reach out on the list as there are folks willing to help out but a lot of us do it in our spare time so might be somewhat slow to respond.
Is there a common agreement where in the source code such control messages should be put? Probably an extra file?
It does vary depending on the specifics of the device but the maintainers seem to prefer keeping as generic as possible and putting quirks related things in quirks-table.h and quirks.c for anything device specific. I probably wouldn't start a different file just for your device if you can avoid it.
participants (3)
-
Geraldo Nascimento
-
Olivia Mackintosh
-
Roman Muller