Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎01-25-2021

Unable to use USB3 (Ultrascale+, ZCU102)


I am trying to use USB3 on a petalinux (version 2020.2) running on the ZCU102 board (Zynq MP Ultrascale+), more precisely I want to use the board as a USB device (gadget).

I have followed this tutorial and I tried to use Mass Storage in peripheral mode and Ethernet gadget in peripheral mode, but none of them works.


Below is the state of my project with the settings:

  • My jumpers configuration on the board is of course set to Device mode
  • I have updated my system-user.dtsi by adding:


&usb0 {
    status = "okay";
&dwc3_0 {
    status = "okay";
    dr_mode = "peripheral";


  • I have enabled following kernel options:
    • In Device Drivers -> USB support -> USB Gadget Support
      • usb_gadget.PNG
        Note that "USB Gadget Drivers" option is not present, is it now named "USB Gadget precomposed configurations"?
    • In File systems -> Pseudo filesystems
      • fs.PNG
        Note that this option is not selected as a Module like in the tutorial: is it a problem?


My USB gadget doesn't work, below are my observations:

  • The /sys/class/udc folder contains nothing
  • When I execute "insmod g_mass_storage.ko" (for the mass storage peripheral tutorial), I get the following error:

            udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers

  • When I execute "echo "fe200000.dwc3" > UDC" (for the ethernet peripheral tutorial), I get the following error:

          echo: write error: No such device

  • When I use the dtc tools to transform the image/linux/system.dtb file into a human readable file, I can see the following data:



usb0@ff9d0000 {
        status = "okay";

        dwc3@fe200000 {
                status = "okay";
                dr_mode = "host";


It seems that the dwc3 peripheral is still configured in host mode...


Any help would be greatly appreciated!

Thank you in advance.


0 Kudos
1 Reply
Registered: ‎11-04-2020


I am facing the same kind of issue. Did you find a solution?

For your information, I checked the dts file by decompiling the dtb and in my case it is clearly noted as peripheral.
Did you do a clean build? I had to do that to have the peripheral mode enabled in the dtb.

Hope this helps,


0 Kudos