<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Mark, Steve,<br>
      <br>
      that's really a great relief!<br>
      <br>
      I also doubt the fix will be backported. I tried applying the idf
      v3 commits involved in the fix you also commented on some weeks
      ago, but the issue wasn't solved. I got the impression it's not an
      isolated issue of the driver. We should go idf-3.x anyway.<br>
      <br>
      Regarding last hardware fixes, please don't forget…<br>
      <br>
          5. Support active GPS antennas<br>
      <br>
      I hope we can use the Wroom module.<br>
      <br>
      Regards,<br>
      Michael<br>
      <br>
      <br>
      Am 08.01.2018 um 03:37 schrieb Mark Webb-Johnson:<br>
    </div>
    <blockquote type="cite"
      cite="mid:BEA67D09-B05F-4DD3-8737-46E8324CF6DC@webb-johnson.net">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <div class="">
        <div class=""><br class="">
        </div>
        <div class="">Using Espressif standard SD CARD example program,
          modified to write "Hello\n” 10 million times, and then read it
          back 10 million times...</div>
        <div class=""><br class="">
        </div>
        <div class="">Here is what I get with OVMS v3 developer-release
          hardware using release version of ESP IDF v2.1:</div>
        <div class=""><br class="">
        </div>
        <blockquote style="margin: 0px 0px 0px 40px; border: none;
          padding: 0px;" class="">
          <div class="">
            <div class=""><span style="font-size: 18px; font-family:
                "Andale Mono";" class="">I (50) boot: ESP-IDF
                v2.1.1-8-g5ae2c0d0 2nd stage bootloader</span></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (51) boot: compile
                  time 08:28:36</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (83) boot:
                  Enabling RNG early entropy source...</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (84) boot: SPI
                  Speed      : 40MHz</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (84) boot: SPI
                  Mode       : DIO</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (94) boot: SPI
                  Flash Size : 16MB</span></font></div>
          </div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">…</span></font></div>
          <div class="">
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (910) cpu_start:
                  Pro cpu start user code</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (967) cpu_start:
                  Starting scheduler on PRO CPU.</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (972) example:
                  Initializing SD card</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">I (972) cpu_start:
                  Starting scheduler on APP CPU.</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">E (1112) sdmmc_cmd:
                  sdmmc_card_init: send_scr returned 0x107</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span
                  style="font-size: 18px;" class="">E (1112) example:
                  Failed to initialize the card (263). Make sure SD card
                  lines have pull-up resistors in place.</span></font></div>
          </div>
        </blockquote>
      </div>
      <div class=""><br class="">
      </div>
      <div class="">Using latest (bleeding edge, not released) ESP IDF
        v3.1, using 1 line mode:</div>
      <div class=""><br class="">
      </div>
      <blockquote style="margin: 0 0 0 40px; border: none; padding:
        0px;" class="">
        <div class="">
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (31) boot: ESP-IDF
                v3.1-dev-168-ga1b59679 2nd stage bootloader</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (31) boot: compile
                time 08:35:38</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (42) boot: Enabling
                RNG early entropy source...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (42) boot: SPI Speed
                     : 40MHz</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (42) boot: SPI Mode
                      : DIO</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (45) boot: SPI Flash
                Size : 16MB</span></font></div>
        </div>
        <div class=""><font class="" face="Andale Mono"><span
              style="font-size: 18px;" class="">…</span></font></div>
        <div class="">
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (195) cpu_start: Pro
                cpu up.</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (199) cpu_start:
                Starting app cpu, entry point is 0x40080e38</span></font></div>
          <div class=""><span style="font-size: 18px; font-family:
              "Andale Mono";" class="">I (0) cpu_start: App
              cpu up.</span></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (209) heap_init:
                Initializing. RAM available for dynamic allocation:</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (216) heap_init: At
                3FFAE6E0 len 00001920 (6 KiB): DRAM</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (222) heap_init: At
                3FFB2A48 len 0002D5B8 (181 KiB): DRAM</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (228) heap_init: At
                3FFE0440 len 00003BC0 (14 KiB): D/IRAM</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (235) heap_init: At
                3FFE4350 len 0001BCB0 (111 KiB): D/IRAM</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (241) heap_init: At
                40089270 len 00016D90 (91 KiB): IRAM</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (247) cpu_start: Pro
                cpu start user code</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (265) cpu_start:
                Starting scheduler on PRO CPU.</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (0) cpu_start:
                Starting scheduler on APP CPU.</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (267) example:
                Initializing SD card</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (267) example: Using
                SDMMC peripheral</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Name: SB16G</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Type: SDHC/SDXC</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Speed: default speed</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Size: 15193MB</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">CSD: ver=1,
                sector_size=512, capacity=31116288 read_bl_len=9</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">SCR: sd_spec=2,
                bus_width=5</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (347) example:
                Opening file</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (347) example: write
                count = 0 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (25397) example:
                write count = 1000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (50417) example:
                write count = 2000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (75737) example:
                write count = 3000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (101277) example:
                write count = 4000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (127417) example:
                write count = 5000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (154087) example:
                write count = 6000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (180247) example:
                write count = 7000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (206977) example:
                write count = 8000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (232807) example:
                write count = 9000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (259647) example:
                File written</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (259647) example:
                Renaming file</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (259657) example:
                Reading file</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (259657) example:
                read count = 0 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (278507) example:
                read count = 1000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (297367) example:
                read count = 2000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (316427) example:
                read count = 3000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (335347) example:
                read count = 4000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (354327) example:
                read count = 5000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (373157) example:
                read count = 6000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (391637) example:
                read count = 7000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (410097) example:
                read count = 8000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (428517) example:
                read count = 9000000 ...</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (446807) example:
                Read from file: 'Hello'</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">I (446807) example:
                Card unmounted</span></font></div>
        </div>
      </blockquote>
      <div class=""><br class="">
      </div>
      <div class="">and using v3.1 with 4-line mode:</div>
      <div class=""><br class="">
      </div>
      <blockquote style="margin: 0 0 0 40px; border: none; padding:
        0px;" class=""><font class="" face="Andale Mono"><span
            style="font-size: 18px;" class="">I (247) cpu_start: Pro cpu
            start user code<br class="">
            I (265) cpu_start: Starting scheduler on PRO CPU.<br
              class="">
            I (0) cpu_start: Starting scheduler on APP CPU.<br class="">
            I (267) example: Initializing SD card<br class="">
            I (267) example: Using SDMMC peripheral<br class="">
            Name: SB16G<br class="">
            Type: SDHC/SDXC<br class="">
            Speed: default speed<br class="">
            Size: 15193MB<br class="">
            CSD: ver=1, sector_size=512, capacity=31116288 read_bl_len=9<br
              class="">
            SCR: sd_spec=2, bus_width=5<br class="">
            I (347) example: Opening file<br class="">
            I (357) example: write count = 0 ...<br class="">
            I (24187) example: write count = 1000000 ...<br class="">
            I (47637) example: write count = 2000000 ...<br class="">
            I (71277) example: write count = 3000000 ...<br class="">
            I (94927) example: write count = 4000000 ...<br class="">
            I (119567) example: write count = 5000000 ...<br class="">
            I (143517) example: write count = 6000000 ...<br class="">
            I (168297) example: write count = 7000000 ...<br class="">
            I (192597) example: write count = 8000000 ...<br class="">
            I (216847) example: write count = 9000000 ...<br class="">
            I (240587) example: File written<br class="">
            I (240727) example: Renaming file<br class="">
            I (240727) example: Reading file<br class="">
            I (240737) example: read count = 0 ...<br class="">
            I (257697) example: read count = 1000000 ...<br class="">
            I (274507) example: read count = 2000000 ...<br class="">
            I (291327) example: read count = 3000000 ...<br class="">
            I (308117) example: read count = 4000000 ...<br class="">
            I (325157) example: read count = 5000000 ...<br class="">
            I (341647) example: read count = 6000000 ...<br class="">
            I (358397) example: read count = 7000000 ...<br class="">
            I (375097) example: read count = 8000000 ...<br class="">
            I (391787) example: read count = 9000000 ...<br class="">
            I (408247) example: Read from file: 'Hello'<br class="">
            I (408247) example: Card unmounted</span></font></blockquote>
      <div class=""><br class="">
      </div>
      <div class="">Smiling so much my face hurts... This has been such
        a PITA, but it looks like Espressif have finally solved it with
        their latest pre-release SDK.</div>
      <div class=""><br class="">
      </div>
      <div class="">Very little performance difference between 1 line
        and 4 line modes (4 line is about 8% faster), so probably not
        worth using up those GPIO lines for that.</div>
      <div class=""><br class="">
      </div>
      <div class="">I’m working with Espressif to see if this fix can be
        back-ported to v2.1. I doubt it, but no harm asking…</div>
      <div class=""><br class="">
      </div>
      <div class="">
        <div class="">This all, of course, brings into top priority the
          work Steve and I are doing trying to get OVMS v3 firmware
          working against ESP IDF v3.x. Here’s a hastily hacked together
          kludge based on bleeding edge ESP IDF v3.1:</div>
      </div>
      <div class=""><br class="">
      </div>
      <blockquote style="margin: 0 0 0 40px; border: none; padding:
        0px;" class="">
        <div class="">
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">OVMS > metrics list
                m.version</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">m.version            
                                   3.0.0/factory/main build (idf
                v3.1-dev-168-ga1b59679) Jan  8 2018 10:09:53</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class=""><br class="">
              </span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">OVMS > sd mount</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Name: SB16G</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Type: SDHC/SDXC</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Speed: default speed</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Size: 15193MB</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">CSD: ver=1,
                sector_size=512, capacity=31116288 read_bl_len=9</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">SCR: sd_spec=2,
                bus_width=5</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">Mounted SD CARD</span></font></div>
        </div>
        <div class=""><font class="" face="Andale Mono"><span
              style="font-size: 18px;" class=""><br class="">
            </span></font></div>
        <div class="">
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">OVMS > vfs ls /sd</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">.Spotlight-V100</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">.fseventsd</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">component.mk</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">sd_card_example_main.c</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">FOO.TXT</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class=""><br class="">
              </span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">OVMS > vfs cp
                /sd/FOO.txt /sd/FOO2.txt</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">VFS copy complete</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class=""><br class="">
              </span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">OVMS > vfs ls /sd</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">.Spotlight-V100</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">.fseventsd</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">component.mk</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">sd_card_example_main.c</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">FOO2.TXT</span></font></div>
          <div class=""><font class="" face="Andale Mono"><span
                style="font-size: 18px;" class="">FOO.TXT</span></font></div>
        </div>
      </blockquote>
      <div class=""><br class="">
      </div>
      <div class="">That FOO.TXT file is about 60MB in size.</div>
      <div class=""><br class="">
      </div>
      <div class="">Now finalising hardware with the china manufacturer.
        I think at this point, it is worth:</div>
      <div class=""><br class="">
      </div>
      <div class="">
        <ol class="MailOutline">
          <li class="">Use 1 line SD CARD (which frees up GPIOs
            SD_DATA1/SD_DATA2/SD_DATA3, but also avoids the conflict
            between GPIO12/SD_DATA2 and VDD_SDIO bootstrap pin).</li>
          <li class="">Add some capacitors for power line smoothing, as
            per Espressif’s example in their test board.</li>
          <li class="">Double-check power on SIMCOM module, to ensure it
            is as expected (following issues reported with low-amperage
            USB ports).</li>
          <li class="">Change to use Analog Lamb WROOM-32 module and
            their 16MB flash + 4MB ram.</li>
        </ol>
      </div>
      <div class=""><br class="">
      </div>
      <div class="">Change #4 should be the only controversial one. It
        has the advantages of much more RAM, and no need for external
        flash, but the disadvantage is that we would have to move GPIOs
        for simcom async (as those are using by Analog Lamb for their
        chip). It also depends on Analog Lamb’s lead time, and future
        plans for this module.</div>
      <div class=""><br class="">
      </div>
      <div class="">Regards, Mark</div>
      <div class=""><br class="">
      </div>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="144">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
  </body>
</html>