XMOS USB not recognised on Intel Baytrail J1900

If you have a simple question and just want an answer.
Post Reply
nvitorino
New User
Posts: 3
Joined: Fri Jun 30, 2017 12:35 pm

XMOS USB not recognised on Intel Baytrail J1900

Post by nvitorino »

Hi,

I'm using a USB DDC (Digital to Digital converter) Mutec MC-3+ USB containing the XS1-L8A-64-TQ128-C5 XMOS USB controller. I've connected it via USB on two different Intel Baytrail motherboards from different manufacturers. Connecting to the motherboard's USB 2 or USB 3 ports, the Mutec isn't recognised as a USB device at all, either on Windows or Linux. Now the funny thing is that when using an external USB hub, which uses a different USB controller to the native Intel Z36xxx/Z37xxx controller, then it's recognised and works fine. Is there a known problem between the Intel USB controller on Baytrail and this XMOS chip? I have been debugging this with people from the linux-usb community and it does seem like the XMOS controller isn't fully USB2.0 compliant. You can find below the analysis done:

----------------------------------------------------------
> Usbmon
>
> ffff880273fcf880 2363504126 C Ii:1:002:1 0:2048 1 = 04
> ffff880273fcf880 2363504144 S Ii:1:002:1 -115:2048 1 <
> ffff880275298280 2363504217 S Ci:1:002:0 s a3 00 0000 0002 0004 4 <
> ffff880275298280 2363504300 C Ci:1:002:0 0 4 = 01010100

This shows the device being connected.

> ffff880275298280 2363504452 S Co:1:002:0 s 23 01 0010 0002 0000 0
> ffff880275298280 2363504547 C Co:1:002:0 0 0

The kernel tells the hub to clear the Connect-Change status.

> ffff880275298280 2363504609 S Ci:1:002:0 s a3 00 0000 0002 0004 4 <
> ffff880275298280 2363504683 C Ci:1:002:0 0 4 = 01010000
> ffff880275298280 2363536146 S Ci:1:002:0 s a3 00 0000 0002 0004 4 <
> ffff880275298280 2363536303 C Ci:1:002:0 0 4 = 01010000
> ffff880275298280 2363568216 S Ci:1:002:0 s a3 00 0000 0002 0004 4 <
> ffff880275298280 2363568427 C Ci:1:002:0 0 4 = 01010000
> ffff880275298280 2363600156 S Ci:1:002:0 s a3 00 0000 0002 0004 4 <
> ffff880275298280 2363600301 C Ci:1:002:0 0 4 = 01010000
> ffff880275298280 2363632139 S Ci:1:002:0 s a3 00 0000 0002 0004 4 <
> ffff880275298280 2363632308 C Ci:1:002:0 0 4 = 01010000

After 130 ms the device is still connected (the connection is debounced).

> ffff880275298280 2363632346 S Co:1:002:0 s 23 03 0004 0002 0000 0
> ffff880275298280 2363632522 C Co:1:002:0 0 0

The kernel tells the hub to reset the port, which will enable it.

> ffff880275298280 2363648144 S Ci:1:002:0 s a3 00 0000 0002 0004 4 <
> ffff880275298280 2363648306 C Ci:1:002:0 0 4 = 01011100

The hub's port status indicates that the reset has ended, the port is not enabled, and the device has disconnected and reconnected.

> ffff880275298280 2363648345 S Co:1:002:0 s 23 01 0014 0002 0000 0
> ffff880275298280 2363648418 C Co:1:002:0 0 0
> ffff880275298280 2363648511 S Co:1:002:0 s 23 01 0001 0002 0000 0
> ffff880275298280 2363648738 C Co:1:002:0 0 0
> ffff880275298280 2363648794 S Co:1:002:0 s 23 01 0001 0002 0000 0
> ffff880275298280 2363649080 C Co:1:002:0 0 0

The kernel tells the hub to clear the Reset-Changed status and the Enabled status (which wasn't set to begin with, because the reset failed).

> (Repeats this block continuously)

There's not much we can do when the hardware says that the port can't be reset successfully because the device has disconnected.

It sounds like this device is not quite compliant with the USB spec.
-------------------------------------------------------------


Thanks in advance for any help.

Nuno


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

Post by mon2 »

Hi. Not an audio person but my 2 bits...

1) try different USB cables and if possible, a known branded version.

2) stick with Windows (for now) -> upon docking of the powered up USB widget's USB cable, do you see any activity on Windows ? Does the Device Manager show the new USB port in the tree ? Do you see even a yellow marked device after inserting the USB cable directly (no USB hub) on Windows? On Linux, what does the dmesg log offer with respect to this audio device?

3) The CPU you referenced does not offer native USB support. For this reason, an external USB PHY must be mated with the XMOS CPU to offer the USB connectivity. Respectively, it is code (IP) that can make or break the workings of the design. Can you test other XMOS based USB designs to see if the results are the same ? XMOS has created other CPU devices that embed the USB PHY internal to the device as well. Perhaps the hardware guideline of this specific design was not followed - no idea on this. USB spec requires the use of impedance controlled PCB trace layout. Did the vendor apply this into this design ? It is possible the USB hub is compensating for some issue as compared to the direct connection. The PCB designer must highlight this requirement to the PCB shop and the PCB shop should offer confirmation of the impedance matching with TDR reports in the return documentation.

4) If available, place the USB widget onto a hardware USB bus analyzer for a thorough review.

Not to stray off topic but our company did a review of a recent Dell box (fairly sure Intel Baytrail based) for an OEM client due to a PCIe slot issue. Some PCIe slots would work to enumerate the seated PCIe adapters, others did not. An adapter we have shipped for around 10 years in high volumes with zero issues was not being properly enumerated on this specific chassis. We did a work around to get the client operational by shifting them to a different host adapter with all desired functions on a single PCB (rather than 2 circuit boards) but in general, we always recommend to check with the motherboard vendor for their latest bios. Are there other reports of USB issues with the PC box? Does it matter if the USB hub is powered or not? Does it matter which chipset is used inside the hub to make the XMOS device work?

Which USB PHY was used on this audio device ? As XMOS offers source code, anyone can customize this source code to suit and perhaps something was broken in the process. Either way, it is code which may need some minor tweaks to perfect.

A reference design that may have been used by this vendor:

https://www.xmos.com/download/private/U ... )(1.1).pdf

Based on the XS1 core XMOS CPU with SMSC USB3318 PHY (now Microchip).
nvitorino
New User
Posts: 3
Joined: Fri Jun 30, 2017 12:35 pm

Post by nvitorino »

Hi mon2,

Thanks for your reply. With regards to your suggestions:

1. We did - from bog-standard USB cables to a number of very expensive USB cables.
2. I will try again on Windows to check the behaviour. If memory doesn't fail, it just had a message saying the USB device was not supported. Will come back on you regarding this. On Linux, nothing shows on dmesg. Only usbmon actually gets some activity.
3. I have tested the Oppo 105D which also uses a XMOS chip and that works fine.

With regards to the additional questions, it doesn't matter if the hub is powered or not, works fine either way. Also running the latest BIOS on both boards just in case. With tried with Genesys and Renesas hubs and both worked.

I will check this further with the device manufacturer and report back.

Many thanks for your help.

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

Post by mon2 »

Placing the non-working XS1 based design on an USB bus analyzer will be very helpful (with and without the working hub).

What is the basis of the Oppo 105D design? Which XMOS CPU was used? If XS1 based then there should be an external USB PHY as well onboard.

It is still very possible that IP can make or break the design. Unless someone from XMOS can relate to a compatibility fault with the USB IP, the widget should just work without the need for an external hub. Try to find a low cost XS1CPU with external USB Phy PCB through Aliexpress or Amazon (from a vendor in China) for additional testing. Do they work directly with the Intel Baytrail based motherboard?
nvitorino
New User
Posts: 3
Joined: Fri Jun 30, 2017 12:35 pm

Post by nvitorino »

Hi mon2,

Unfortunately we don't have a USB analyser as we're not the device manufacturer - we manufacture the source to connect it. Just testing it on Windows now: The device comes up on Device Manager as Unknown USB Device with the message "Port Reset Failed". Does this ring any bells?

I don't know the exact model on the Oppo but I've seen indications on the net that it's an XS1-L1 processor (500 MIPS). As mentioned, this one works fine connecting directly.

Nuno
Post Reply