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.

Linux/AM3358: USB peripheral mode failure

Part Number: AM3358


Tool/software: Linux

Hi all,

I'm working on a device designed base on BeagleBoneBlack, but there is something wrong in OTG mode.

First of all, the hardware is modified for ID pin and I also can get the right state in both host & peripheral mode. I modify the dts file in kernel/arch/arm/boot/dts/, and re-define the USB mode as:

&usb0 {
   status = "okay";
   dr_mode = "otg";
};

1. In my device, the host mode( it means I hardcode it to 'host' in dts file), it work fine.

2. In my device, both peripheral & otg (also means the config in dts), the USB can't work at all.

3. In beagleboneblack, USB0 peripheral work fine with a release TF card system I downloaded.

4. In beagleboneblack, USB0 peripheral can NOT work with my kernel.

5. In beagleboneblack, USB0 peripheral can NOT work even with the kernel I rebuild just clone from git.

Case2 shows it is not related with OTG switch, and case3-5 shows that there has difference between the release code and binary. It looks like something wrong with the release source code in github, but I think the release version should be OK. Maybe I missed any details?

When the USB0 peripheral worked fine, kernel log as:

gadget: high-speed config #1: Multifunction with RNDIS
IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready

But there is nothing printed in my kernel when I plug-in the USB. I think it must be some configs missing so kernel can't get any interruption. Any suggestion about this?