[WP7702] Can't go in ULPM Mode

Hello,

We are currently using MangOH Yellow cards with a WP7702 chip.

Some of our systems in the field have encountered a problem.
They no longer go into ULPM mode.

image

We use the latest image of the MangOH Yellow software provided by the MangOH website: 0.7.0

With a slight modification of the Mango firmware: Modification of the accelerometer driver
And modification of the Yocto: Modification of the curl package + addition of python library

Method to switch to ULPM mode:
We use a Legato application in C

Code :

//Réveil sur Timer
le_ulpm_BootOnTimer(TimeULPM);
//Réveil sur ADC
le_ulpm_BootOnAdc(2,100,500,1799);
if (le_ulpm_ShutDown() == LE_OK){
sleep(5);
FILE *fp = popen(“echo -e 'at+cpsms=0\r\n’ > /dev/ttyAT”,“r”);
pclose(fp);
}

We have never encountered this problem in the office so far.
As the systems are currently in the field, I cannot provide more logs.

Has anyone encountered this problem before?

Thank,
Jérémy

How is the reproducibility?
Not sure if there is same problem with at!powermode command.

Hi,

Our system wakes up every 15 minutes. It retrieves some data from an external sensor and switches back to ULPM mode. And every hour, it sends a file with the data by FTP. The system has been in the field for a month and has had no issues until this week.

We’ve restarted some systems at the office in hopes of reproducing the error, but this is an issue we hadn’t previously detected in our testing.

Thank,
Jérémy

Hi

We have retrieved our faulty systems from the field.

The problem for the ULPM seems to be an I2C communication issue between the CPU and the MCU.

Some of the logs we were able to extract from our systems :

Sep 14 13:49:59 swi-mdm9x28-wp user.info kernel: [ 424.710009] swimcu_set_fault_mask: 0x1, cnt 41
Sep 14 13:49:59 swi-mdm9x28-wp user.err kernel: [ 424.710789] Failed to send request c2 (-105)
Sep 14 13:49:59 swi-mdm9x28-wp user.err kernel: [ 424.714445] MCU Protocol Command 0xC2 failed, retry=8
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.220641] i2c-msm-v2 78b8000.i2c: BUS ERROR:noisy bus/unexpected start/stop tag: msgs(n:1 cur:0 tx) bc(rx:0 tx:18) mode:FIFO slv_addr:0x3a MSTR_STS:0x041121c4 OPER:0x00000080
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.262493] i2c-msm-v2 78b8000.i2c: error timeout on polling for valid state. check core_clk
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.271767] i2c-msm-v2 78b8000.i2c: BUS ERROR:noisy bus/unexpected start/stop tag: msgs(n:1 cur:0 tx) bc(rx:0 tx:18) mode:FIFO slv_addr:0x3a MSTR_STS:0x041121c4 OPER:0x00000080
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.313448] i2c-msm-v2 78b8000.i2c: error timeout on polling for valid state. check core_clk
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.322764] i2c-msm-v2 78b8000.i2c: BUS ERROR:noisy bus/unexpected start/stop tag: msgs(n:1 cur:0 tx) bc(rx:0 tx:18) mode:FIFO slv_addr:0x3a MSTR_STS:0x041121c4 OPER:0x00000080
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.364812] i2c-msm-v2 78b8000.i2c: error timeout on polling for valid state. check core_clk
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.374132] i2c-msm-v2 78b8000.i2c: BUS ERROR:noisy bus/unexpected start/stop tag: msgs(n:1 cur:0 tx) bc(rx:0 tx:18) mode:FIFO slv_addr:0x3a MSTR_STS:0x041121c4 OPER:0x00000080
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.415565] i2c-msm-v2 78b8000.i2c: error timeout on polling for valid state. check core_clk
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.424878] i2c-msm-v2 78b8000.i2c: BUS ERROR:noisy bus/unexpected start/stop tag: msgs(n:1 cur:0 tx) bc(rx:0 tx:18) mode:FIFO slv_addr:0x3a MSTR_STS:0x041121c4 OPER:0x00000080
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.466505] i2c-msm-v2 78b8000.i2c: error timeout on polling for valid state. check core_clk
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.475874] i2c-msm-v2 78b8000.i2c: BUS ERROR:noisy bus/unexpected start/stop tag: msgs(n:1 cur:0 tx) bc(rx:0 tx:18) mode:FIFO slv_addr:0x3a MSTR_STS:0x041121c4 OPER:0x00000080
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.517562] i2c-msm-v2 78b8000.i2c: error timeout on polling for valid state. check core_clk
Sep 14 13:50:00 swi-mdm9x28-wp user.err kernel: [ 425.525141] mci_protocol_frame_send: write frame fail to I2C: -5 of 18

Our problem seems to be similar to:

But we use the version : 002.014.

Has anyone encountered the same problem before ? And if so what was your solution?

Thank,
Jérémy

Can you use at!powermode to force module back to sleep mode?

Hi ,

I forgot one detail:
If I can’t go to ULPM the system restarts: my application does: reboot -f after a while but the problem persists. It seems the solution is to do a hardware reboot (interrupt ON/OFF) and after that the system can switch to ULPM mode but I can’t do that when the system is in the field.

Thank,
Jérémy

after “reboot -f”, do you still see those logread message about I2C communication issue between the CPU and the MCU?

Yes, and we can’t go in ULPM.

Jérémy

Are you able to upgrade the FW and see if problem still happened in these SDK?




 swi-wp77_5.0.1             │ SDK for WP77 (Release 14.1 + Legato 19.11.5)                                             │ wp77xx,stable                      │
│ swi-wp77_5.0.2             │ SDK for WP77 (Release 14.1 + Legato 19.11.6)                                             │ wp77xx,dev                         │
│ swi-wp77_6.0.0.beta        │ SDK for WP77 (Release 15 + Legato 21.05.0)                                               │ latest,wp77xx,stable

On some systems we upgraded to swi-wp77_5.0.1 (MCU 2.015) and one system seems to have this problem but we haven’t gotten the log yet.
On the previous version the problem did not appear immediately. We have systems that have never had this issue and systems that have had this issue after a week in the field.

when there is I2C communication issue between the CPU and the MCU, can you check “cm info” and see if the MCU version is missed?

Here says you can reset it until a MCU version is shown:

Hi,

I don’t have the system with me. As I said in the previous post, I do a reboot if I can’t get into ULPM. But after some time the recovery mechanism is activated and I lose the Legato apps and the file on the system (I will write a new post about this). The log I am posting is from a system we recovered in the field after an I2C problem and before the recovery mechanism.

It’s on this system that I do a hardware reboot (ON/OFF), and I can’t remember if the MCU version was missing.

On a system reboot my app uses: reboot -f, when I don’t have ULPM so every 15 minutes (96 reboots per day) but it seems to only reboot the CPU but not the MCU.
Is there a software command to restart both?

Jérémy

i am not sure if AT!RESET is equal to “reboot -f”, you might give a try to use AT!RESET and see if it can reset both modem and MCU.
Another option is to download the FW including MCU FW, I guess it would also reboot the MCU.