I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
Did you like my answer?
Hello! Thank you for sharing such detailed information about your Verdin iMX8M Mini setup and the troubleshooting steps you’ve already attempted.
Understanding the Issue
On the Verdin iMX8MM, wake-up from USB (for example, with a keyboard) after suspend-to-mem (deep sleep) often depends on a combination of:
Device tree configuration—does the hardware controller support wakeup, and is this defined in the device tree?
Driver support—does the Linux kernel USB host driver (CI_HDRC/EHCI/XHCI) have wake-up support?
Power supply—is USB power maintained during suspend? (Carrier board design may affect this, but as per guidelines, I’ll focus on software.)
You’ve already:
Enabled the relevant wakeup sources in userspace (checked /sys and set to enabled).
Observed that wakeup via keyboard is still not working.
Device Tree Considerations
It is likely you need to adapt your device tree, as by default, wakeup may not be enabled for the USB host controller. The “wakeup-source” property in device tree influences whether the kernel marks a device as capable of waking up the system(1)(4).
Steps to Customize Device Tree
Identify the USB Host Node
For the iMX8MM, the USB host nodes are typically named something like usb@32e50000 (where 32e50000 matches the address you observed).
Add wakeup-source Property
In your custom device tree source file, find the node (usually under &usbh1, &usbh2, etc.) and add:
wakeup-source;
Example:
&usbh1 {
wakeup-source;
status = "okay";
};
If the USB host declaration uses a full node block (usb@32e50000), add the property inside there.
Copy the custom device tree, change Makefile, and build as described in the docs.
Reboot with Your Custom DTB
Make sure your new device tree blob file (DTB) is loaded at boot (adjust U-Boot variable if needed).
Additional kernel and system tips
You may need to pass no_console_suspend to the kernel for debugging (if you want to see logs during suspend).
Not all USB devices will necessarily trigger wakeup. It typically needs to be a low-speed device like a keyboard, and your board must supply VBUS in suspend.
Summary
Yes, you likely need to add or enable the wakeup-source property on the USB host nodes in your device tree.
Links to help you with device tree changes and general process:
If after this change USB wakeup is still not working, further debugging the power state of the USB host and keyboard during suspend may be required. Let me know if you need step-by-step on building or deploying the device tree!
I could confirm the behavior that you are seeing.
It looks like it may be related to the lack of the CONFIG_PM_WAKELOCKS config.
Can you try to enable this config and see if the wakeup works?
Problem resolved the usbphynop/wakeup must also be set to enabled:
echo enabled > /sys/devices/platform/usbphynop1/power/wakeup
echo enabled > /sys/devices/platform/usbphynop2/power/wakeup