Hi, I have a custom board with a BG95 (AT+GMR is “BG95M3LAR02A03”) controlled by an ESP32S3 chip. I can send the BG95 module to sleep using the ‘AT+QCFG=“psm/enter”,1’ and ‘AT+QSCLK=1’ commands and see that the power consumption drops significantly. I’m also using eDRX and am constantly connected and subscribed to an MQTT server. If I publish a message on MQTT (server-side) while the modem is in PSM, the modem wakes up after a short while and is usable; so far so good.
However I can’t cause the modem to wake up from PSM using PWRKEY. The documentation (figure on BG95&BG77&BG600L_Series_PSM_Application_Note page 21 and BG95_Series_Hardware_Design page 36) says:
"Any of the following methods can wake up the module from PSM:
Wake up the module from PSM through a rising edge on PON_TRIG. (Recommended) Wake up the module by driving PWRKEY low. When the TAU timer expires, the module wakes up from PSM automatically."
I experimented a little bit with PWRKEY, but no matter how I do it, it doesn’t wake up the modem from PSM; it either does nothing, or causes the modem to be reset.
If I assert PWRKEY for < 10 ms, it does nothing on the first pulse, and on the second pulse, the BG95 appears to be reset (I get RDY → APP RDY, and the MQTT connection is lost).
If I assert PWRKEY for 500 ms or 600 ms or 750 ms, it does nothing.
If I assert PWRKEY for longer than around 1000 ms, the module is reset (I get RDY → APP RDY, and the MQTT connection is lost).
Our current board doesn’t have PON_TRIG (pin 96) connected at all, so we’d like to use PWRKEY instead if possible. Our PWRKEY is implemented as shown in the datasheet, Quectel_BG95_Series_Hardware_Design_V1.5 page 41; turning the module on and off using PWRKEY is working fine.
have you tried to see the modem response when it is waking up from PSM after the TAU timer has expired? My BG95M3 reports RDY and APP RDY when being awoken by PWRKEY, PON_TRIG or after TAU timer has expired. (So I am not sure if that is a proper indication whether the modem has woken up from PSM or if it has be reset.)
BTW: AT+QSCLK=1 enabled sleep mode (which I think is different from PSM) and is activated via DTR line.
My modem doesn’t output “RDY”/“APP RDY” when waking up from PSM. (It doesn’t output anything, the first thing I see is +QMTRECV…, which contains the MQTT data.
Not sure about AT+QSCLK=1, without adding this command the modem never entered PSM for me, so I figured it was necessary.
ok, I dare say here that I think your modem isn’t in power saving mode (PSM) to begin with and that is the reason you cannot wake it up. I think your modem is only using eDRX.
It is my understanding that when the modem is in PSM the network maintains its register data so when the modem wakes up it can re-attach to the network quickly. But TCP/MQTT connections get disconnected during PSM. Just think of the MQTT keep-alive ping which will fail during PSM and the MQTT broker will kick the non-responding client out.
From my understanding PSM requires more than AT+QCFG=“psm/enter”,1. For instance I use this command to get the modem into PSM eventually:
AT+QPSMS=1,,,"10000001","00000001"
Above command request PSM (with a TAU timer of 1 minute and an active time of 2 seconds) and the network has to approve these values. The actual TAU timer and active time approved by the network can be checked with:
AT+QPSMS?
+QPSMS: 1,,,"2160","32"
This means in this case the network approved a TAU timer of 36 min and a active time of 32 seconds.
Also when my BG95 goes into PSM I see this log output: PSM POWER DOWN. After that it can be woken by PWRKEY, PON_TRIG or it wakes up by itself after the TAU timer has expired.
Note: above explanations are based on reading documents and on my own experience. I am by no means an expert and I could be wrong here.
Sorry for the late reply. I got a devkit and ran some experiments. Looks like it is indeed not PSM, I naively thought eDRX sleep and PSM sleep would behave similar, but that is probably not the case. They’re so different that even PON_TRIG wouldn’t wake up the modem from eDRX sleep.
I was however able to wake up the modem using MAIN_DTR! So thank you very much!