Wake up from suspend mode on GPIO interrupt



I posted this question over on the Legato forums several weeks ago to no avail - see link at bottom.
Perhaps someone on the more hardware-oriented mangOH forum is able to assist me?

Basically, I need the modem to react (by resuming from suspend mode) on an edge-triggered GPIO interrupt on GPIO21. This should be possible according to my interpretation the WP8548 Product Technical Specification. However, this only works if the system hasn’t already suspended. My system must remain suspended for power conservation but also maintain registration on a cellular network.

I have verified that the system resumes from suspend mode on logic level transitions on pin UIM1_DET and UIM2_DET. Presumably the modem’s firmware is handling this.
Besides configuring the GPIO edge sense and providing a change event callback handler, do I need to do anything else to get this working?


ULPM boot on GPIO 38 &39


Is someone from the mangOH or SWI team able to comment on this please?

When the module is suspended with the USB cable disconnected, I gather this is not USB-SS Mode? If so, how do we make the system respond to GPIO change events in this state?

Currently, I’ve resorted to running a polling timer to periodically wake the system up and check the GPIO state which is unfortunate because it means that either:

  1. The reaction time is very slow - long polling interval needed to save power.
  2. Fast reaction time but the system essentially never suspends, thus no power saving at all.

As mentioned in my previous post, ULPM is not being used because maintaining registration on a cellular network is essential. Furthermore, if the wake-up from ULPM interval is frequent enough, the benefits gained from entering ULPM are almost outweighed by the power consumed during system boot-up (70mA-90mA) and restricted by the system boot-up time (approx. 40 seconds).

Any assistance would be greatly appreciated.


Hi Raf,

Does your module goto SS mode?
Have you tried to wake up the modules from the wakeable GPIOs as shown in the PTS? Y
:4.9 Wakeup Interrupt (USB-SS Mode)
The following pins can be used to wake the device when it is in USB-SS mode (lowpower
active state):
• GPIO21
• GPIO36
• GPIO38
• GPIO39
• GPIO42



Hi Ashish,

Thanks for the response.

Yes, the module does enter USB-SS mode. The enable_autosleep.sh script runs at boot, I don’t have devMode installed, and I can see a message on the UART2 console output when the USB cable is unplugged.

I have tried several of the wakeable GPIOs as per the PTS; GPIO21 and GPIO42. These work provided the module hasn’t entered a “deep-sleep” or “suspended” state, eg. USB cable unplugged. I measure ~2mA when the module is in this state which seems to match the current consumption values in the PTS.

I can’t use GPIO36, GPIO38 nor GPIO39 for anything but wakeup events from ULPM since they are accessible via sysfs/Legato only (as per the PTS). I can confirm that the module does wake up from ULPM from GPIO36.

Additionally, I have verified that the system resumes from suspend mode on logic level transitions on pin UIM1_DET and UIM2_DET.



Hi Raf,

Let me check with the team about GPIO21 and GPIO42. I wonder if you need to set them in some special mode using AT commands.



we have opened a ticket internally on this topic and will get back to you.


Thank you, Ashish.

If there’s anything else I can do on my end to assist please let me know.


Hi Ashish,

Has there been any update internally on this?



We are working on fixing it. It will be fixed in WP76 first and then on WP85.



Hi Ashish,
It seems I have the same issuse as Raf described but on WP7502
I tried GPIO38 a GPIO36. It works correctly when USB is connected.
It there a solution?

Legato: 18.01.0_727a1e916bc293f90e617778c2037b58_modified
Device: WP7502
Firmware Version: SWI9X15Y_07.12.09.00
Thank you.