USB Audio 1.0 in xCORE-200 MC Audio

Technical discussions related to any XMOS development kit or reference design. Eg XK-1A, sliceKIT, etc.
jarbona
Junior Member
Posts: 5
Joined: Mon Jul 15, 2013 7:13 pm

USB Audio 1.0 in xCORE-200 MC Audio

Post by jarbona »

Hello,

For our product, we would like to have the option to boot in either USB Audio 1.0 (driverless) or 2.0. When I download/flash the 1i2o2xxx... configuration, the board will enumerate correctly. However, for whatever reason, Windows will not play audio. If you go to the Windows sound properties and click the Test button (sample rate selection window), it throws a "Failed to play test tone." error.

It works fine in USB Audio 2.0 configurations.

I am using Windows 7 and the xCORE-200 MC AUDIO 2V0 board. USB Audio reference source code: 6.15.2rc1

Thanks and Regards,
Jorge


User avatar
Ross
XCore Expert
Posts: 768
Joined: Thu Dec 10, 2009 9:20 pm

Post by Ross »

As a test, try changing the UAC1 PID and rebuilding - you might have a driver caching issue.
jarbona
Junior Member
Posts: 5
Joined: Mon Jul 15, 2013 7:13 pm

Post by jarbona »

Hi Ross,

I used a completely different PID as you suggested and it is still having issues. Could you try testing the 1i2o2xxx... configuration on the latest release 6.15.2rc1 with the xCORE-200 MC AUDIO board? I just want to make sure the problem is not the reference code.

Thanks a lot,
Jorge
fchin
Member++
Posts: 16
Joined: Fri Jul 15, 2016 6:35 am

Post by fchin »

Hi Ross,

I'm having the same issue as Jorge. Neither "1i2o2xxxxxx" nor "2i8o2xxxxxx" works. My xCORE-200 MC AUDIO board is connected to a Windows 7 PC and it keeps failing to play a test tone. I did try adding the "-DCODEC_MASTER=1" flag in the Makefile but it didn't help. I also tried changing the UAC1 PID to make the Windows re-enumerates every time I built the code.

USB Audio 2.0 using the "2i10o10xxxxxx_slave" configuration works OK after installing the evaluation driver.

Could you please help validate the sample code "sw_usb_audio-[sw]_6.15.2rc1"?

Thanks,
Frankie
User avatar
Ross
XCore Expert
Posts: 768
Joined: Thu Dec 10, 2009 9:20 pm

Post by Ross »

Hi guys,

I've just tried the 1i202xxx config on the MC board and it checks out fine for me (admittedly on my Mac rather than Windows)

I double checked the USB trace and it looks good, I also don't see any test failures here.

Cheers
Ross
fchin
Member++
Posts: 16
Joined: Fri Jul 15, 2016 6:35 am

Post by fchin »

Hi Ross,

Thanks for your quick response. I tested the 1i2o2xxxxxx config on a Mac book in the office and the audio was coming out fine from the MC board. What do you suggest me to do to get it working on Windows 7?

We do have an enterprise support license. Do you think I should lodge a support ticket?

One other observation i.e. Mac is not detecting any input signal from the MC board. I've tried all the 4 line inputs on the board.

Regards,
Frankie
User avatar
Ross
XCore Expert
Posts: 768
Joined: Thu Dec 10, 2009 9:20 pm

Post by Ross »

I can't see any issues on our regression results but i'll manually double check Windows.
User avatar
Ross
XCore Expert
Posts: 768
Joined: Thu Dec 10, 2009 9:20 pm

Post by Ross »

There is an issue with the built in Windows UAC driver where is doesn't like implicit feedback for the output interface. You might have noted that input does operate. To work around this you can forcibly turn on the feedback endpoint e.g.

Code: Select all

# Audio Class 1, 2 channels Input, 2 channels Output, no MIDI, no SPDIF
XCC_FLAGS_1i2o2xxxxxx = $(BUILD_FLAGS) -DAUDIO_CLASS=1 -DUAC_FORCE_FEEDBACK_EP=1 
INCLUDE_ONLY_IN_1i2o2xxxxxx =
My initial view was that this issue only came about when the input and output stream formats/channel counts differed (hence the note in app_usb_aud_mic_array/makefile) but experiments today suggest that there is a blanket issue with implicit feedback.

I will investigate further.
fchin
Member++
Posts: 16
Joined: Fri Jul 15, 2016 6:35 am

Post by fchin »

Hi Ross,

Thanks for your fix. I tested the "feedback endpoint" solution and the Windows 7 test tone is now playing out from the MC board line output beautifully.

One question: Will it work if we switch from asynchronous to synchronous mode and disable the feedback endpoint? I got this idea from comparing the endpoint descriptors with those of a Logitech USB headset.

Regards,
Frankie
User avatar
Ross
XCore Expert
Posts: 768
Joined: Thu Dec 10, 2009 9:20 pm

Post by Ross »

Synchronous mode will with with usbaudio.sys but you would have to change the design to sync the audio stream to the USB SOFs from the host. You could do this using an external clock multiplier (e.g. Cirrus CS2100) or sample rate conversion. Proper operation would not just be a case of simply changing the descriptors.

Enabling the feedback endpoint is a reasonable work around - the code base used to do this by default until fairly recently (hence this issue popping up)