Topic: UCX II USB configuration issue for 20ch and 16ch wMaxPacketSize?
Hi,
UCX II supports 20, 16, 14, and 8ch playback, as defined by its USB alternate settings, all at samplerates up to 192kHz.
Altsetting 3 for 14ch defines
wMaxPacketSize 0x0a4c 2x 588 bytes
The 2 transactions each 588 bytes large at bInterval=1 give max. samplerate bandwidth of
2 x 588 x 8000 / 14 / 3 = 224kHz max. samplerate = 192kHz + nice async mode headroom.
And indeed linux plays fine at 192kHz/14ch/24bits, logging correct max packet size of 1176 bytes per microframe, with the explicit async feedback working perfectly.
However the 16ch and 20ch modes stutter at 192kHz. Their wMaxPacketSize values do not specify the 2 transactions, thus not reserving enough bandwidth:
wMaxPacketSize 0x030c 1x 780 bytes
...
wMaxPacketSize 0x0270 1x 624 bytes
Simple bandwidth calculation suggests the "1 additional transaction" bit is missing in the wMaxPacketSize fields of altsetting 1 (20ch) and 2 (16ch).
2 x 780 x 8000 / 20 / 3 = 208kHz
2 x 624 x 8000 / 16 / 3 = 208kHz
Perhaps setting the 11th bit in wMaxPacketSize for the 20ch and 16ch altsettings would fix the playback, just like it works for the 14ch altsetting. From outside view it looks just like a typo in the firmware.
For 20ch:
0x030c -> 0x0b0c
For 16ch:
0x0270 -> 0x0a70
More info is in https://www.diyaudio.com/forums/pc-base … ost6851858 and several following posts.
Thanks a lot for looking at this issue.
Best regards,
Pavel.