64ch USB audio driver cannot be recognized by the windowsPC, but 61ch can.

Technical questions regarding the XTC tools and programming with XMOS.
stanrance
Newbie
Posts: 1
Joined: Tue Oct 06, 2020 6:23 am

64ch USB audio driver cannot be recognized by the windowsPC, but 61ch can.

Post by stanrance »

i am using XE216-512 to make a 64ch microphone array with 8pcs of CS5368. i use the framework of usb_audio_2.0 for 32channels. i have finished almost all of the modification of the code, but when i changed NUM_USB_CHAN_IN to 64 (in the customdefines.h), the windowsPC cannot recognized a USB audio device, also cannot by 62 and 63. when i changed NUM_USB_CHAN_IN to 61, it can works, and all the all the audio channels can capture the right data.

i keep the I2S_CHANS_ADC to 64, when i change NUM_USB_CHAN_IN, so i just throw last 3 channels audio data when i call DoSampleTransfer.

the sample frequency is 48K, and the STREAM_FORMAT_INPUT_1_RESOLUTION_BITS is 16bits or 2bytes. so 64ch can't exceed 1024bytes per microframe. (2bytes * 64 * (6 + 1) = 896 bytes).

is there something wrong in the descriptor? could someone give me some advice?
descriptors.h
You do not have the required permissions to view the files attached to this post.


User avatar
dsteinwe
XCore Addict
Posts: 144
Joined: Wed Jun 29, 2016 8:59 am

Post by dsteinwe »

I agree with you, that your problem shouldn't be a problem of the bandwidth, if you use usb high speed. I suggest, that you connect your sound to a linux system. Linux is more verbose, if something is wrong with your descriptor or the protocol implementation. Usually, the syslog contains the output. You should disable pulseaudio during developing, because it slows down the p'n'p up to 5s. A live cd/usb stick version is sufficient for this analyse.

Additionally, you may use wireshark to sniff the usb protocol. That's the hard way. I know, it is possible for linux, but I can't say, if you can also sniff usb with wireshark in windows.
User avatar
mon2
XCore Legend
Posts: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

Use the following free tool to validate your USB descriptors:

https://www.thesycon.de/eng/usb_descriptordumper.shtml
ffomich
Experienced Member
Posts: 119
Joined: Mon Sep 15, 2014 1:32 pm

Post by ffomich »

Hi stanrance,
could you please explain your realization of connecting 8 pcs. CS5368 to the XMOS?
Do you use 8 TDM interfaces or 32 I2S interfaces?
Do you use lib_i2s with arrays of 1-bit ports or do you modify lib_i2s to use multi-bit ports?