HELP ME! furious over EC200UAUAA - works 27min

hello,

HELP ME!!

setup:

module based:EC200UAUAA

FW: QPY_OCPU_BETA0001_EC200U_AUAA_FW.bin

environment: QPYcom_V4.1.0

i have bought 2 EC200UAUAA.

after short test i was satisfied of gps + iot, so i have bought 10 more.

Diving deeper into deploying them i have found they work ONLY 27 MIN!!!.

now, beside the fact quectel doesnt share with me its cooltools/coolwatcher HOW AM I SUPPOSE TO WORK WITH 27mins!! before it goes to reboot, or freeze if connected to com.

i have downloaded the latest driver to work with qpy(quectel python functions), previous fw version doesnt support this fun idea.

currently i am highly disappointed in this product and i wonder why would quectel keep making them if they last only 27min and have a horrible gps chip(?) (jumping 1 to 20m from reference point constantly with 18used gps, hdop 0.8).

HELP ME please, am i missing something?

my code was the simples ever:

write to file every min 1 line of log. the log it didnt pass 27min…

Hi @Me_You

Thank you for providing the detailed information. We understand your concern, especially since the module consistently reboots or freezes after approximately 27 minutes.

Regarding the EC200UAUAA with QPY_OCPU_BETA0001_EC200U_AUAA_FW.bin, we would like to clarify that the firmware you are currently using is a QuecPython OCPU beta firmware. The QuecOpen SDK documentation and debugging tools are not necessarily directly applicable to QuecPython, so we would not recommend concluding that the issue is caused by the QuecOpen software watchdog based solely on those documents.

For the 27-minute reboot/freeze, we need to determine the actual reset reason rather than speculate. The possible causes include a firmware/software exception, watchdog reset, memory/resource issue, or hardware/power-related reset.

Please provide the following information so that we can investigate this with our R&D team:

  1. The complete QPY script that reproduces the issue.
  2. The QPYCom log covering the period from startup until the 27-minute failure.
  3. Whether the module reboots completely or only becomes unresponsive.
  4. Whether the issue occurs when the GPS function is disabled.
  5. Whether the issue occurs with a minimal script that only writes one line to a file periodically.
  6. The module’s VBAT voltage and power supply capability, particularly during network transmission.
  7. The exact firmware and QPYCom versions currently being used.

For the GPS position fluctuation, 18 satellites and HDOP 0.8 do not by themselves guarantee that the reported position will remain within a few metres of a fixed reference point. GNSS accuracy can also be affected by antenna performance, multipath, sky visibility, interference, and the positioning solution itself. We can further check this with R&D once we have the GNSS logs and test conditions.

Regarding Coolwatcher, I have reached out to you via email regarding your request for the Coolwatcher tool. Please check your email for further information.

hello,

thank you for the reply.

3. with FW: QPY_OCPU_BETA0001_EC200U_AUAA_FW.bin when the module connected to USB it freeze because by default the dump function is enabled within the module. to disable the freeze i used AT command: AT+QDBGCFG=“dumpcfg”,1 . when i didnt use USB Connection the device would restart and keep on going.

  1. the issues occurs with or without gps running.
  2. yes, its my log test scrip i attached.
  3. everything is good, stable power supply.
  4. QPY_OCPU_BETA0001_EC200U_AUAA_FW.bin
  5. i tried everything to make the measurement as clear as possible comparing the performance to ATGM332D-5NR32 , which is stable. using same gps antenna.
  6. i rather not give me you my gps log as its private information.
  7. thank you for the CoolWatcher, i downloaded it.
  8. i have switch to older FW and now my code doesnt crash every 27min. i think someone placed watchDog in newer beta version and forgot to refresh it.
  1. LOG from inside:

stage=S10.0b version=1.1.18
uptime_s=0 python_free=799264
uptime_s=60 python_free=799264
uptime_s=120 python_free=799264
uptime_s=180 python_free=799264
uptime_s=240 python_free=799264
uptime_s=300 python_free=799264
uptime_s=360 python_free=799264
uptime_s=420 python_free=799264
uptime_s=480 python_free=799264
uptime_s=540 python_free=799264
uptime_s=600 python_free=799264
uptime_s=660 python_free=799264
uptime_s=720 python_free=799264
uptime_s=781 python_free=799264
uptime_s=841 python_free=799264
uptime_s=901 python_free=799264
uptime_s=961 python_free=799264
uptime_s=1021 python_free=799264
uptime_s=1081 python_free=799264
uptime_s=1141 python_free=799264
uptime_s=1201 python_free=799264
uptime_s=1261 python_free=799264
uptime_s=1321 python_free=799264
uptime_s=1381 python_free=799264
uptime_s=1441 python_free=799264
uptime_s=1501 python_free=799264
uptime_s=1561 python_free=799264
uptime_s=1621 python_free=799264

1. CODE:

"""S10.0b silent runtime witness for EC200U QuecPython.

After the startup banner this test prints nothing. Once per minute it appends
an uptime and heap record to /usr/s10_witness.log. The retained file tells us
whether QuecPython continued running after QPYcom output disappeared.
"""

import gc
import utime


TEST_STAGE = "S10.0b"
DIAGNOSTIC_VERSION = "1.1.18"
WITNESS_INTERVAL_MS = 60000
WITNESS_PATH = "/usr/s10_witness.log"


def python_free_memory():
    try:
        if hasattr(gc, "mem_free"):
            return gc.mem_free()
    except Exception as error:
        return "error:{}".format(error)
    return "unsupported"


def append_witness(uptime_s):
    gc.collect()
    with open(WITNESS_PATH, "a") as witness_file:
        witness_file.write("uptime_s={} python_free={}\n".format(
            uptime_s, python_free_memory()))


print("==========================================")
print(" EC200U stability isolation {} v{}".format(
    TEST_STAGE, DIAGNOSTIC_VERSION))
print(" silent witness: no output after this banner")
print(" file: {} interval_s=60".format(WITNESS_PATH))
print("==========================================")

# Start each programmed run with an unambiguous new witness file.
with open(WITNESS_PATH, "w") as witness_file:
    witness_file.write("stage={} version={}\n".format(
        TEST_STAGE, DIAGNOSTIC_VERSION))

start_ms = utime.ticks_ms()
last_witness_ms = utime.ticks_add(start_ms, -WITNESS_INTERVAL_MS)

while True:
    now_ms = utime.ticks_ms()
    if utime.ticks_diff(now_ms, last_witness_ms) >= WITNESS_INTERVAL_MS:
        append_witness(utime.ticks_diff(now_ms, start_ms) // 1000)
        last_witness_ms = now_ms
    utime.sleep_ms(100)