Jetson nano custom carrier board usb not working without a hub

Hi

I have designed a custom carrier board for jetson nano and I used the Jetson_Nano_Carrier_Board_OrCAD_Schematics which is the design guide. For the usb part I have not used the hub which is also an option in the design guid. But the usb does not work and does not detect the mouse or keyboard, although it does when it is connected to the original carrier board. I have read some threads in the forum and I have not found any clear answer. Is there any need for configuration in the software or any modification in the hardware?

I have attached the design. My previous thread was closed.

I attach 2 documents, the schematic for the USB part of the design and the whole design schematic (in case you consider that we need to send something else or they ask for it). design was done after reviewing the Jetson Nano Product Design Guide.
Also I wanted to inform you that I changed the coil of the USB for two resistors and it’s still not working,

PCB_BASE_schematic.pdf (2.5 MB)

PCB_BASE_USB schematic.pdf (1.6 MB)

Please refer to jetson nano adaptation guide inside the developer guide for the usb porting section.

There is no special configuration needed no matter the existence of the hub. I mean there is no special driver to let external hub work. But if you change even one usb function on your custom carrier board, then you have modify the device tree setting.

For example, if you have gpio to control the vbus, then you need to modify the device tree. Or if you change on port from host to otg, then you have to change DT too.

Hi,

Thanks for your reply. Could you please refer me to a source on how I can change the device tree setting. For instance for my case could you give me an example.

You can search the jetapck archive website for each release and there would be the source code.

Click the L4T link in each jetpack release.

Thanks for your reply. I have been working on this and based on your help I have found out that I can modify the device tree by changing the source code in .dtb files in kernel folder.

I have some more questions:

1.Which .dtb file is the one I have to modify.
2. When I decompile the .dtb file, I gain access to the source code of the device tree. Could give help on what should I modify for my case where we remove the hub for the usb part.
3. When I flash the .dtb file, does this affect the file system existing in my jetson. Becasue I have all the files I work with in my jetson nano sd card.

Am I on the right path?

1.Which .dtb file is the one I have to modify.

You can use command dmesg |grep dts on your jetson, and it will teach you which dts is in use.

  1. When I decompile the .dtb file, I gain access to the source code of the device tree. Could give help on what should I modify for my case where we remove the hub for the usb part.

There is no such setting in the device tree. We don’t have any setting w.r.t the hub. What you can configure is directly change the state of usb pin. It is not related to that hub. For example, if you disable the usb, no matter it is hub or any other device, they will not work.

  1. When I flash the .dtb file, does this affect the file system existing in my jetson. Becasue I have all the files I work with in my jetson nano sd card.

You can use ./flash.sh -r -k DTB board_name mmcblk0p1 and it will flash the dtb partition only.

Thanks a lot for your help. Could you also give me some guidelines on what I should change in the source code. Because this part is quite confusing for me.

If you take a look at my design I have connected usb2 and usb3 to the jeston connector ( without the hub). Which part of the source code I should modify in order to fix my problem.

Sorry if my questions are too in details.

1 Like

I already said we have a document to teach you how configure that. Can you read the document first?

Hi,

I have read that document and I have read the introductions on different parts of the source codes for usb. I am still confused, could you please give some guidelines on where I should focus on and what part of the code is the area I should modify. Could you please give me more accurate help in this area. Thanks in advance.

This is a big one that I am not sure where to start.

  1. From hardware aspect, you can check if your lane/pin in use are same as the design of devkit. The design guide document will tell.
    The “same” here means the usb2 and usb3 in use is still the same. If you add some pins we are not using on devkit, then device tree should be modified. Also, if you remove something, you need to modify the device tree too.
    And if your hardware design has some gpio to control the vbus, then you need to modify the device tree too. What to modify is listed in the adaptation guide.

  2. For the device tree, you can check the kernel log by “dmesg” and grep the keyword “dts” after you boot up. And you can know the dts file you need to check inside the open source tarball. And the rest of work is tracing the code, follow the guidance from adaptation guide, build the dtb, flash the dtb to the board.

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