This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TUSB8041: TUSB8041 not detecting properly

Part Number: TUSB8041

Hello,

We are using TUSB8041 in our design the upstream signals of TUSB8041 are connected to SOC USB signals on one board the hub is getting detected and on other boards, the hub is not getting detected. In working board the Vendor ID & product ID (Vendor=0451 ProdID=8142 and Vendor=0451 ProdID=8140) detection is proper and non-working board we are getting the only USB 2.0 Vendor ID and Product ID with improper value ( Vendor=0451 ProdID=80ff). 

We checked all the power, reset, and clock signals, and all look fine.

So, we need your help in resolving this issue. Kindly find the attached USB schematic page and respective board device discovery log information for your review.

The HUB upstream were connected to processor USB 2.0 and 3.0, all the down ports are connected to various connector. Our system runs in Linux with Kernel 5.4. 

USB_HUB_Not_Working_Log.txt
root@AH-rpXh1646712758:/# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.04
S:  Manufacturer=Linux 5.4.164 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.0.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 0
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 5.04
S:  Manufacturer=Linux 5.4.164 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.0.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.04
S:  Manufacturer=Linux 5.4.164 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.1.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0451 ProdID=80ff Rev= 1.01
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 5.04
S:  Manufacturer=Linux 5.4.164 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.1.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms
root@AH-rpXh1646712758:/#

USB_HUB_Working_Log (1).txt
root@OpenWrt:/# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.04
S:  Manufacturer=Linux 5.4.164 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.0.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 0
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 5.04
S:  Manufacturer=Linux 5.4.164 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.0.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.04
S:  Manufacturer=Linux 5.4.164 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.1.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 4
D:  Ver= 2.10 Cls=09(hub  ) Sub=00 Prot=02 MxPS=64 #Cfgs=  1
P:  Vendor=0451 ProdID=8142 Rev= 1.00
S:  SerialNumber=F30500716C84
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=01 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms
I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=02 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=03 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  4 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0781 ProdID=5581 Rev= 1.00
S:  Manufacturer= USB
S:  Product= SanDisk 3.2Gen1
S:  SerialNumber=0401afe3aeff6f8f8a82ccd394d5c4f073236dbe726496c4db62e884d21ff79765bb00000000000000000000ae6615e7ff00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=224mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=03 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#=  5 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1307 ProdID=0163 Rev= 1.00
S:  Manufacturer=USBest Technology
S:  Product=USB Mass Storage Device
S:  SerialNumber=071123503b828a
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 80mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 5.04
S:  Manufacturer=Linux 5.4.164 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.1.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=5000 MxCh= 4
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=0451 ProdID=8140 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=13(Int.) MxPS=   2 Ivl=16ms
TUSB8041_schpg.pdf

  • Hi,

    Looking at the schematic, it looks like the upstream SSTX and SSRX connection are swapping.

    SSTX on the connector is being defined as transmitter and needs to be connected to the hub SSTX.
    SSRX is being defined as receiver and needs to be connected to the hub SSRX.

    Thanks
    David

  • Hi David,

    Thanks for the response, for upstream we are not using any connector. we have connected the HUB's upstream signals directly to SOC'c USB signals.

    am attaching the schematic of  SOC'c USB section for your review and in only one board the TUSB8041 is getting detected and working fine but in the rest of the boards, we are unable to detect TUSB8041 we have attached the Linux kernel log's for your review in a previous thread.

    Thanks,

    Praveen

    soc_usb_section.pdf

  • Praveen

    Do you have the schematic that shows the full connection between the SOC and the hub? I am seeing USB0_SS_TXP/N and USB0_SS_RXP/N. But in the TUSB8041_schpg.pdf, I do not see the same net names.

    Thanks
    David

  • Hi David,

    ours is a hierarchical schematic design, am attaching a part of the page where these nets are got renamed.

    thanks,

    Praveen

  • Praveen

    Is the USB0_SS_RXP/N and USB0_SS_TXP/N AC coupled with 0.1uF?

    Thanks

    David

  • David,

    This signals are not AC coupled with 0.1 uF this signals have direct connection from hub upstream to SoC usb signal.

    Thanks,

    Praveen 

  • Praveen

    Per the USB3 spec, the SSRX and SSTX need to be AC coupled. Otherwise USB3 will not work.

    Thanks

    David

  • Hi David,

    We understand AC coupling capacitor missing could cause USB3.0 didn't work. 

    As per the schematic, we have connected USB 2.0 signals properly and we expect the device should work with USB 2.0.

    Also, we did the trace cut on PCB for all the USB 3.0 TX, RX pair between CPU to TUSB8041.

    Still, HUB is not detected properly by Linux OS, Please refer to the below log.

    We could see the signal transaction on USB2.0 DP and DM lines in CRO. 

    The vendor ID and device ID information shown as Vendor=0451 ProdID=80ff Rev= 1.01 instead of Vendor=0451 ProdID=8142 Rev= 1.00.

    Does that mean, the hub device works partially?

    We could see similar behavior on many boards.

    Please suggest what do be done for making USB2.0 work.

    Meanwhile, we are working on placing a 100nf AC coupling capacitor on both TX and RX pair lines between CPU to HUB devices and will share the test result.

    root@AH-rpXh1646712758:/# cat /sys/kernel/debug/usb/devices

    T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
    B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
    D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=1d6b ProdID=0002 Rev= 5.04
    S: Manufacturer=Linux 5.4.164 xhci-hcd
    S: Product=xHCI Host Controller
    S: SerialNumber=xhci-hcd.0.auto
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
    E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

    T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 0
    B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
    D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
    P: Vendor=1d6b ProdID=0003 Rev= 5.04
    S: Manufacturer=Linux 5.4.164 xhci-hcd
    S: Product=xHCI Host Controller
    S: SerialNumber=xhci-hcd.0.auto
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=(none)
    E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

    T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
    B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
    D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=1d6b ProdID=0002 Rev= 5.04
    S: Manufacturer=Linux 5.4.164 xhci-hcd
    S: Product=xHCI Host Controller
    S: SerialNumber=xhci-hcd.1.auto
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
    E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

    T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
    D: Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    P: Vendor=0451 ProdID=80ff Rev= 1.01
    C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
    I:* If#= 0 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)

    T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 1
    B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
    D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
    P: Vendor=1d6b ProdID=0003 Rev= 5.04
    S: Manufacturer=Linux 5.4.164 xhci-hcd
    S: Product=xHCI Host Controller
    S: SerialNumber=xhci-hcd.1.auto
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
    E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

    Thanks and regards,

    Praveen.

  • Praveen

    As a debug test, when the SOC is up and running, can you try toggling USB_VBUS to the hub to see if the hub then connects at USB 2.0? Can you probe the upstream DP and DM for this test?

    Also, are you setting the hub in I2C or SMBUS mode?

    Thanks

    David

  • Dear David,

    We see the possibility of toggling USB_VBUS and see the behavior of USB 2.0.

    Since we are not using an external interface we left SMBUSz/SS_SUSPEND(pin39) unconnected. So, based on the internal pull-up it will be in I2C mode.

    Also attached signal capture of USB2.0 DP and DM for your review.

    Thanks and regards,

    Praveen

  • Praveen

    USB2.0 is 480Mbps(240MHz), you need to have a scope that has the minimum bandwidth around 1GHz to properly capture the signal. There is too much signal quantization with this 70MHz bandwidth scope that I can't tell if they are valid USB 2.0 signal.

    For USB2.0, once VBUS goes from low to high, you would see DP being drive up to 3.3V while DM is low. You would then see the chirp sequence. Below is an example waveform, do you see on your setup?

    Thanks

    David

  • Dear David,

    After removing pullup on I2C lines, the HUB device started working and detected both USB2.0 and USB3.0 devices.

    Thanks for your great support and timely help.

    Thanks and regards,

    Praveen.

  • Praveen

    Awesome, thanks for the update and I am glad you are able to get your design working.

    David