# How to enable USB OTG functionality on Hummingboard Pulse?

**URL:** <https://community.solid-run.com/t/how-to-enable-usb-otg-functionality-on-hummingboard-pulse/705>\
**Category:** NXP i.MX8M Plus\
**Tags:** iMX8M-plus\
**Created:** [August 17, 2023, 1:02pm UTC](https://community.solid-run.com/t/how-to-enable-usb-otg-functionality-on-hummingboard-pulse/705 "2023-08-17T13:02:07Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![pflander](https://avatars.discourse-cdn.com/v4/letter/p/35a633/32.png) [@pflander](https://community.solid-run.com/u/pflander)\
**Post date:** [August 17, 2023, 1:02pm UTC](https://community.solid-run.com/t/how-to-enable-usb-otg-functionality-on-hummingboard-pulse/705/1 "2023-08-17T13:02:07Z")

</div>

I am using Hummingboard Pulse evaluation board + IMX8MP SOM with Yocto Kirkstone. I want to configure USB OTG functionality to use the board’s USB port as for example UVC camera.

How do I proceed? Do I have to modify device tree? If yes, how?

After connecting usb cable(USB A ↔ USC B) from Humming board Pulse to Host PC, I currently get this error:

usb usb2-port1: config error  
usb usb2-port1: Cannot enable. Maybe the USB cable is bad?

---

<div class="post-metadata">

**Author:** ![jnettlet](https://dub1.discourse-cdn.com/flex005/user_avatar/community.solid-run.com/jnettlet/32/62_2.png) [@jnettlet](https://community.solid-run.com/u/jnettlet)\
**Post date:** [August 21, 2023, 5:04am UTC](https://community.solid-run.com/t/how-to-enable-usb-otg-functionality-on-hummingboard-pulse/705/2 "2023-08-21T05:04:44Z")

</div>

By default the device-tree configures the connector to be in Host mode only. You can change the dr\_mode property to change the functionality, [https://www.kernel.org/doc/Documentation/devicetree/bindings/usb/generic.txt](https://www.kernel.org/doc/Documentation/devicetree/bindings/usb/generic.txt)

Gadget mode is only supported on the first DWC controller of the SOC. After you change the device-tree standard gadget role instructions for Linux should work as expected.

---

<div class="post-metadata">

**Author:** ![pflander](https://avatars.discourse-cdn.com/v4/letter/p/35a633/32.png) [@pflander](https://community.solid-run.com/u/pflander)\
**Post date:** [August 29, 2023, 1:00pm UTC](https://community.solid-run.com/t/how-to-enable-usb-otg-functionality-on-hummingboard-pulse/705/3 "2023-08-29T13:00:13Z")

</div>

Thanks, it works!

Modification of the device tree helped:

&usb\_dwc3\_0 {  
**dr\_mode = “otg”;**  
snps,dis-u1-entry-quirk;  
snps,dis-u2-entry-quirk;  
status = “okay”;  
};

---

<div class="post-metadata">

**Author:** ![kselyunin](https://avatars.discourse-cdn.com/v4/letter/k/a8b319/32.png) [@kselyunin](https://community.solid-run.com/u/kselyunin)\
**Post date:** [September 3, 2025, 1:29pm UTC](https://community.solid-run.com/t/how-to-enable-usb-otg-functionality-on-hummingboard-pulse/705/4 "2025-09-03T13:29:26Z")

</div>

@jnettlet is it possible to change the `dr_mode` at runtime?

Alternatively, is it possible to change “host” mode to “otg” and back at runtime?
