Debugging non functional USB

Hello,

I’m working on a custom carrier board with a differing USB configuration, USB2-2/3/4 are enabled and USB3-2 (or 3-1 in dts) is enabled and pairs with USB2-3.

I’ve made all changes according to the platform adaptation guide and nothing is working, I don’t see the expected usb hub, plugging something into the USB2-2 shows nothing in lsusb either, no events, nothing, I do get the VBUS as the peripheral lights up.

My dmesg seems to show that the xusb has loaded:

[ 6.591877] tegra-xusb 3610000.usb: Adding to iommu group 3
[ 6.605557] tegra-xusb 3610000.usb: Firmware timestamp: 2023-02-10 03:48:10 UTC
[ 6.605737] tegra-xusb 3610000.usb: xHCI Host Controller
[ 6.605883] tegra-xusb 3610000.usb: new USB bus registered, assigned bus number 1
[ 6.606792] tegra-xusb 3610000.usb: hcc params 0x0180ff05 hci version 0x120 quirks 0x0000000000000810
[ 6.607037] tegra-xusb 3610000.usb: irq 143, io mem 0x03610000
[ 6.607252] tegra-xusb 3610000.usb: xHCI Host Controller
[ 6.607368] tegra-xusb 3610000.usb: new USB bus registered, assigned bus number 2
[ 6.607538] tegra-xusb 3610000.usb: Host supports USB 3.1 Enhanced SuperSpeed

In what I can find I think the lanes/ports have been loaded, but now I’m stuck on what else I could possibly debug.

I have included the dts if it could be verified this is ok, any other ideas for what I can investigate or get more logs out of it to track down the issue would be highly appreciated.

usb-config-dts.txt (1.5 KB)

*** Please note that this reply is generated by LLM automatically ***

I’d be happy to help you debug the issue with your custom carrier board’s USB configuration.

First, let’s break down the information you’ve provided:

  1. You’ve enabled USB2, 3, and 4 on your custom carrier board, and paired USB2 with USB3/4 in the device tree (dts).
  2. You’ve made changes according to the platform adaptation guide, but nothing is working as expected.
  3. You don’t see the expected USB hub, and plugging something into USB2 doesn’t show anything in lsusb.
  4. You do get VBUS, and the peripheral lights up.
  5. Your dmesg output shows that the xUSB has loaded, and the firmware timestamp is present.

Based on this information, here are some potential issues and suggestions for further debugging:

  1. USB lane assignment: Double-check that the USB lane assignment is correct in your dts file. Make sure that the lanes are assigned correctly for each USB port, and that the lane assignment matches the physical layout of your board.
  2. USB port configuration: Verify that the USB port configuration is correct in your dts file. Check that the port mode (host/device), speed (low/full/high), and other settings match your requirements.
  3. xHCI configuration: The xHCI controller is loaded, but it’s possible that the configuration is not correct. Check the xHCI configuration in your dts file, and make sure that it matches the requirements for your USB ports.
  4. Device tree changes: You’ve mentioned that you’ve made changes to the device tree, but it’s possible that there are other changes required. Check the platform adaptation guide again, and make sure that you’ve made all the necessary changes.
  5. USB hub configuration: If you’re expecting a USB hub to be present, make sure that it’s configured correctly in your dts file. Check the hub’s port configuration, and make sure that it’s enabled.
  6. GPIO configuration: GPIO pins are used to control the USB ports. Make sure that the GPIO pins are configured correctly in your dts file, and that they’re not conflicting with other peripherals.
  7. Power management: Power management settings can affect USB port functionality. Check that the power management settings are correct in your dts file, and that the USB ports are not being powered down.

To get more logs and debug information, you can try the following:

  1. Enable USB debugging: Add the following line to your kernel command line: usbcore.autosuspend=-1. This will disable USB autosuspend and provide more debug information.
  2. Increase USB verbosity: Add the following line to your kernel command line: usbcore.quirks=0x0000000000000810. This will increase the verbosity of USB debugging messages.
  3. Check USB device tree: Use the dtc command to compile your dts file and check for any errors or warnings.
  4. Use USB debugging tools: Use tools like usb-devices, usb-tree, and usb-debug to get more information about your USB ports and devices.

I hope these suggestions help you debug the issue with your custom carrier board’s USB configuration. If you’re still stuck, feel free to provide more information or ask further questions!

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

I will try some extra usb debugging but there’s nothing fancy in there especially for the single host port.

It’s just straight USB1 P/N to a connector hence I don’t understand why it doesn’t work, the VBUS is definitely present though.

I would say you better sharing full information of your schematic.

Full dmesg and full kernel dts converted back from dtb by using dtc tool.

There are lots of phases that users may make mistake.

  1. Are you sure device tree setting is correct? For example, I don’t see vbus-supply in the DT. Even the dummy one is needed. I don’t see full schematic. It is pointless to review device tree in this situation. No one really knows how your full hardware looks like.

  2. Are you sure your device tree is updated to the board? Changing device tree on host but failed to update it to Jetson is also possible.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.