USB Audio Reference Design operates is Full Speed only

Technical questions regarding the xTIMEcomposer, xSOFTip Explorer and Programming with XMOS.
Junior Member
Posts: 5
Joined: Mon Jul 19, 2021 7:32 am

USB Audio Reference Design operates is Full Speed only

Post by en2senpai »


Im working on USB Audio Class 2.0 custom board project, based on XU216-512-TQ128-C20.

On this board, XMOS is connected to USB port via GL850G USB hub chip. (XMOS ----> USB HUB ----> HOST PC)

My software starting point was USB Audio Device class 2.0 source code (6.15.2).
So far so good, I was able to get this working on my custom board, the music is being played via DAC etc.

But ...

In Windows Device Manager, i found that i cant set sampling rate beyond 96kHz (as opposite to MAX_FREQ define which is set to 384 kHz in the project). So something is definitely wrong with USB connection speed.
I found that there is a functionality in devicedefines.h file to allow Audio Class 2.0 device over Full Speed USB. And i think this is my case right now (because device is returning A2 USB descriptors and Windows can see it as Audio Class 2.0 device but with speed limited do 96 kHz sampling rate).
When i enable AUDIO_CLASS_FALLBACK, device immediately falls to Audio Class 1.0 returning A1 USB descriptors.

So my question is ...

Is it a software related problem (i messed up with some configuration in USB Reference Design), or hardware related (USB HUB is slowing down communication even thou XMOS is High Speed capable) ?

Some of my driver tools indeed says, that my XMOS is High Speed capable device (could it be possible to return A2 descriptors if not ?)
XMOS info.png
On the other hand, it looks like USB HUB is connected at Full Speed (but it is also High Speed capable ?!)
HUB info.png
Any ideas here ?


You do not have the required permissions to view the files attached to this post.

User avatar
XCore Legend
Posts: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

Hi. The quick method to debug the hardware in this case is to reflash the PCB to run the XMOS USB Hid Mouse IP. The XMOS USB Hid Mouse IP will operate in USB 2.0 High speed and move the mouse pointer in a square motion till stopped.

Download and apply this firmware and allow for the IP to run for at least 20-30 minutes to confirm that the IP is working properly on your custom PCB.

Then dump the USB Mouse IP headers / descriptors and compare notes.

Post your updates.
Junior Member
Posts: 5
Joined: Mon Jul 19, 2021 7:32 am

Post by en2senpai »


Thanks for your reply.

Fortunately we found the root of the problem. USB HUB on our custom board was missing one resistor (dedicated to 2.0 internal PLL) and could not negotiate High Speed with host PC.
After adding proper one, everything is working as expected (XMOS acts as Audio Class 2 over USB High Speed).

I wll try this examples anyway, just to ensure everything is stable.