Failure uploading ESP8266 firmware through Pico

Posted on
  • I have a Pico, an ESP8266-ESP1, and the rev2 shim. Actually, I have three of each, thankfully. But after hardware errors on the first batch, I've apparently botched the firmware on the ESP8266 twice.

    The behavior is the same on #2 and #3, and I was double-extra-careful with all my soldering by that point.

    Here's what I did. FWIW, I'm on windows 10, using Python 2.7.

    1. Update firmware on the Pico with web IDE.
    2. Test AT baud rate with code from tutorial, get back reasonable, but old version of ESP8266 firmware at 115200 baud

      AT+GMR\r\r\n00160901\r\n\r\nOK\r\n
      
    3. Load Espruino FTDI code (broken into functions so I can reset independently)

      digitalWrite(B9,1);
      digitalWrite(A1,0);
      digitalWrite(A10,0); // pulse reset
      digitalWrite(A10,1);
      
      Serial2.setup(115200, { rx: A3, tx : A2 });
      Serial2.on('data', function(d) { USB.write(d); });
      
      USB.on('data', function(d) { Serial2.write(d); });
      Serial1.setConsole();
      
    4. Disconnect IDE from COM port and run esptool.py to upload recommended v25

      esptool.py -p COM4 -b 115200 write_flash 0 "c:\Users\Joe\Downloads\ESP8266\ESP8266_AT25-SDK112-512k.bin" esptool.py v1.1 Connecting...
      Running Cesanta flasher stub...
      
      A fatal error occurred: Invalid head of packet ('\x13')
      
    5. Try initial AT test again. With NO valid result. Powercycling, reburning Espruino firmware has no effect. I can't recreate the initial firmware test. Although I do get visible output when toggling the reset GPIO.

    Note: I have tried with both 74480 and 115200 as the baud. With 74480 baud, the reset of the ESP8266 gave a readable output (although it seems a bit brief)

    ets Jan  8 2013,rst cause:2, boot mode:(1,7)
    

    If I change ath A1 setting to 0, I get something different at boot

     ets Jan  8 2013,rst cause:2, boot mode:(3,6)
     
    load 0x40100000, len 24444, room 16
    tail 12
    chksum 0xe0
    ho 0 tail 12 room 4
    load 0x3ffe8000, len 3168, room 12
    tail 4
    chksum 0x93
    load 0x3ffe8c60, len 4956, room 4
    tail 8
    chksum 0xbd
    csum 0xbd
    `jÔNø
    

    And a different error from esptool

    esptool.py -p COM4 -b 74880 write_flash 0 "c:\Users\Joe\Downloads\ESP 8266\ESP8266_AT25-SDK112-512k.bin"
    esptool.py v1.1
    Connecting...
    
    A fatal error occurred: Failed to connect to ESP8266 
    

    It didn't seem to help to set A1 to 1, but it was one of the few knobs I had to play with.

    I am powering solely through a USB port on my PC. I've tried both USB 2.0 and 3.0. Both give the same results.

    Suggestions?

  • Did you change ESP_RAM_BLOCK and ESP_FLASH_BLOCK in esptool.py first? That could be one cause of problems...

    If you've had the ESP8266 reporting version numbers then it looks like your wiring is absolutely fine, so it's just software that's the issue.

  • I did. Not before the first one, but by the time I got to the second one I had.

    I'll try with a direct FTDI link...

  • By default, all the Pico's pins will be floating - so if you do use an FTDI cable there's no need to disconnect the ESP8266 from the Pico - just tack RX, TX and GND wires on top of the module.

    It's annoying - I'm not really sure what could be causing the issue, as I've updated loads of ESP8266s this way... Unless there was some change to the uploader recently that broke things.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Failure uploading ESP8266 firmware through Pico

Posted by Avatar for JoeAndrieu @JoeAndrieu

Actions