I’m trying to configure an FX30 to boot on GPIO and can’t get it to work correctly. My configuration is as follows:
FX30 Cat M1 (WP77) is powered from a USB battery pack (5V). I am able to use the legato ULPM api to put the device in ULPM and have it wake on a timer. I also want to have the device wake using GPIO 2 (pin 4 on power connector/brown wire) by plugging that wire into a PC usb connection to have it powered at 5 volts so when the PC is turned on the FX30 boots but I can’t get this part to work.
I am setting GPIO 36 (which I understand is mapped to GPIO2 for ULPM wake-up) using legato as follows:
le_ulpm_BootOnGpio(36, LE_ULPM_GPIO_HIGH)
But the FX30 will not wake when the brown wire sees +5V
Not sure if I need to configure something using AT+WIOCFG, if so, would I configure GPIO2?
Bottom line is it possible to wake the FX30 from ULPM when a GPIO input sees +5V or do I need some added circuity to achieve the correct signaling?
Thanks for that, however, I was referencing that document in my original efforts, which was why I’m using GPIO36 in the LEGATO power api command to set the boot source.
I tried using the AT!FWD command but I receive ERROR no matter what command I give (QUERY or CONFIGURE) for any GPIO. The user guide also states that that command, if it did work, is not persistent across reboots, which I would need.
If I try to read the value of GPIO2 or GPIO36 using the command: cat /sys/class/gpio/gpio<x>/value
it always returns 0 regardless of whether or not there is +5V on the brown wire. Also when I issue the command for GPIO36: cat /sys/class/gpio/gpio36/value
I see this error in the log:
Mar 26 12:05:43 fx30 user.err kernel: [ 1914.340287] i2c-msm-v2 78b8000.i2c: NACK: slave not responding, ensure its powered: msgs(n:1 cur:0 tx) bc(rx:0 tx:14) mode:FIFO slv_addr:0x3a MSTR_STS:0x0c1300c8 OPER:0x00000090
Does this mean that GPIO36 is somehow configured to be an I2C input, rather than a digital input?
Another testing point:
If I use IO2/GPIO38 (green wire), instead of IO1/GPIO36 I can see its value as LOW (0) with +5V on and HIGH (1) with 0V using cat /sys/class/gpio/gpio38/value. Testing this with: pmtool bootOn gpio 38 low
then putting the unit into ULPM with pmtool shutdown
results in the unit shutting down then immediately rebooting without applying +5V to IO2 (green wire). After this spontaneous reboot querying for the boot reason by using: pmtool bootReason gpio 38
responds with: Boot source gpio38? No
Searching some other threads I thought a dump of cat /sys/kernel/debug/gpio might be helpful (listing only the relevant GPIOS for IO1/2):
GPIOs 0-79, platform/1000000.pinctrl, 1000000.pinctrl:
gpio2 : in 0 2mA pull down
gpio21 : in 3 8mA no pull
gpio36 : out 0 2mA no pull
gpio38 : in 0 2mA pull up
This is a known issue and I think that this feature will be updated with the R11 firware release but I am not 100% certain. I will follow-up with product management to get the release date/more info.
Hi David, Frank,
You’re running FX30 firmware version R9.1.1.013. There is indeed an issue with ULPM wake up in the kernel in the WP7702 R9.1 release.
This will be resolved in the upcoming R11 release.
To explain some of your findings, GPIO36 and GPIO38 are connected to an MCU which handles low power mode. The 9x15 (running the kernel) communicates with the MCU via I2C.
The NACK error messages you’re seeing are benign. They occur because the MCU is waking up from sleep mode.
Looks likethis is fixed in R11, which is still pending resolution of some FOTA issues to release. I don’t have exact release dates yet but I am watching it and will notify you.