<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Hi Michael,<br>
    thanks for testing.<br>
    <br>
    The results look odd, so I went back to the schematics of OVMS
    modules and realized, that I was mistaken. The PWRKEY pin is
    actually inverted in the modules as well. This definetly explains
    the strange behaviour. <br>
    <br>
    I changed now the logic in simcom_powering.h and the inverted PWRKEY
    level is now the default.<br>
    <br>
    Could you please run another test?<br>
    <br>
    Best regards<br>
      Christian<br>
    <br>
    <div class="moz-cite-prefix">Am 29.03.2025 um 09:25 schrieb Michael
      Balzer via OvmsDev:<br>
    </div>
    <blockquote type="cite"
      cite="mid:1651ee05-ec1d-4677-a57c-a9ec7cfbbd6d@expeedo.de">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Christian,<br>
      <br>
      well done on the 7670 support :-)<br>
      <br>
      I've just done some first tests of your branch on the 7600, which
      turned up some issues. Logs attached:<br>
      <ul>
        <li>Cold boot failed in 2 of 3 test boots, with the driver
          getting stuck in a loop (poweredon / identify / muxstart)</li>
        <li>Regular shutdown fails to power down the modem in time --
          for a deep sleep phase, this would mean the modem will remain
          powered on</li>
        <li>After a crash, the modem driver gets somehow stuck in
          PowerOffOn state<br>
        </li>
      </ul>
      It seems the test for reaction ("AT") sometimes gets skipped, even
      though the modem isn't ready yet.<br>
      <br>
      On the failed cold boot log, you can see this at the end:<br>
      <br>
      <font face="monospace"><b>I (389178) cellular-modem-auto: Power
          Cycle</b><br>
        I (389178) Simcom: Power Cycle - T_off 2500 ms - T_on 200 ms<br>
        D (389178) events: Signal(system.modem.poweringon)<br>
        D (389188) events: Signal(egpio.output.0.low)<br>
        D (391678) events: Signal(egpio.output.0.high)<br>
        D (396678) events: Signal(egpio.output.0.low)<br>
        D (396878) events: Signal(egpio.output.0.high)<br>
        <b>I (396878) cellular: State: Enter Identify state<br>
          D (396978) cellular: tx-cmd: AT+CGMM</b><br>
        D (396978) cellular: tx-cmd: AT+CGMM<br>
        D (396978) cellular: tx-cmd: AT+CGMM<br>
        D (396978) cellular: tx-cmd: AT+CGMM<br>
        D (396978) cellular: tx-cmd: AT+CGMM<br>
        D (396978) cellular: tx-cmd: AT+CGMM<br>
        D (396978) cellular: tx-cmd: AT+CGMM<br>
        I (397008) cellular: Identified cellular modem:
        SIM7600/Experimental support for SIMCOM SIM7600<br>
        D (397008) cellular: Remove old 'auto' modem driver<br>
        I (397008) cellular: Set modem driver to 'SIM7600'<br>
        <b>I (397008) cellular: State: Enter PoweredOn state</b><br>
        D (397008) events: Signal(system.modem.installed)<br>
        D (397008) events: Signal(system.modem.poweredon)<br>
        D (406178) cellular: tx-cmd:
AT+CPIN?;+CREG=1;+CGREG=1;+CEREG=1;+CTZU=1;+CTZR=1;+CLIP=1;+CMGF=1;+CNMI=1,2,0,0,0;+CSDH=1;+CMEE=2;+CSQ;+AUTOCSQ=1,1;E0;S0=0<br>
        D (408178) cellular: tx-cmd: AT+CGMR;+ICCID<br>
        D (416178) cellular: tx-cmd: AT+CMUX=0;+CATR=6<br>
        D (434808) cellular: mux-rx-line #0 (2/46): OK<br>
        <b>D (434808) cellular: mux-rx-line #0 (3/39): RDY</b><br>
        D (434808) cellular: mux-rx-line #0 (12/23): +CPIN: READY<br>
        D (434808) cellular: mux-rx-line #0 (8/11): SMS DONE<br>
        D (434808) cellular: mux-rx-line #0 (7/0): PB DONE<br>
        I (434808) cellular: State: Enter MuxStart state<br>
        D (434808) events: Signal(system.modem.muxstart)</font><br>
      <br>
      <br>
      Regards,<br>
      Michael<br>
      <br>
      <br>
      <div class="moz-cite-prefix">Am 26.03.25 um 13:13 schrieb Info
        Zeitnitz via OvmsDev:<br>
      </div>
      <blockquote type="cite"
        cite="mid:d5cf7822-c7a8-4729-b16d-a9cf74aaab00@zeitnitz.eu">Dear
        all, <br>
        I finished to integrate the Simcom 7670 modem into the OVMS
        code. <br>
        See <a class="moz-txt-link-freetext"
href="https://github.com/zbchristian/Open-Vehicle-Monitoring-System-3.git"
          moz-do-not-send="true">https://github.com/zbchristian/Open-Vehicle-Monitoring-System-3.git</a>
        branch update_cellular. <br>
        <br>
        Modem Powering <br>
        =============== <br>
        I had problems to get the 7670 working with the current code.
        The modem was stuck in a power cycle loop. <br>
        <br>
        I checked the Simcom documentation for the 4 models 5360, 7000
        series, 7600, 7670 and the powering procedure via the PWRKEY pin
        is the same, but with different on/off timing. Depending on the
        hardware, the PWRKEY can be inverted as well. This is the case
        for my Lilygo TCall board, but I think not for the OVMS HW
        versions. At least version 3.1 connects the corresponding
        MAX7317 pin directly to the modem. <br>
        <br>
        Assuming, that all hardware versions use the PWRKEY procedure
        for powering, I streamlined the code and moved the corresponding
        functions into separate files (simcom_powering.cpp and
        simcom_powering.h). This avoids the duplication of the code. <br>
        <br>
        All this leads to substantial changes in ovms_cellular and
        ovms_cellular_modem_driver as well. <br>
        <br>
        The code works now perfectly for the 7670, but testing is
        required for all other models. <br>
        If my assumptions about the OVMS HW versions are not correct, or
        the modems do not work as documented, some modifications might
        be needed. <br>
        <br>
        GNSS Location <br>
        ============ <br>
        The 7670 no longer accepts the currently used AT commands to
        obtain the location  as a GRMC sentence. So, I added code to the
        new 7670 class to request the location via the AT+CGNSSINFO
        command. <br>
        Since this has to be send explicitly again and again,  I
        implemented a corresponding call in the StatusPoller of the
        7670. <br>
        All the NMEA related code has been adapted to handle the
        corresponding CGNSSINFO response. <br>
        <br>
        <br>
        In conclusion, before doing a pull request, it would make sense
        that the code is tested with the other hardware and modem
        models. <br>
        <br>
        So, tell me what you think and if the general strategy of the
        mods make sense to you. <br>
        <br>
        Best regards <br>
          Christian <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        _______________________________________________ <br>
        OvmsDev mailing list <br>
        <a class="moz-txt-link-abbreviated moz-txt-link-freetext"
          href="mailto:OvmsDev@lists.openvehicles.com"
          moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a> <br>
        <a class="moz-txt-link-freetext"
          href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
          moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
        <br>
      </blockquote>
      <br>
      <pre class="moz-signature" cols="72">-- 
Michael Balzer * Am Rahmen 5 * D-58313 Herdecke
Fon 02330 9104094 * Handy 0176 20698926</pre>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre wrap="" class="moz-quote-pre">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated moz-txt-link-freetext"
      href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext"
      href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>