Your ESP8266 Needs More Memory

We just got through reviewing MicroPython on the ESP8266, and one of the main takehomes is that our ESP modules need more flash memory. You may be in the same boat — the earliest (and cheapest) modules on the market only had 512 kB of flash. For over-the-air programming, or to give you some more space for fancier programs, you’re going to want 1 MB or even 4 MB.

The solution? Just buy a new flash chip and solder it on. This is especially easy if you’ve got an ESP-01, ESP-03, or ESP-11 modules where the flash chip is exposed. Desolder, resolder, done. It can be a little trickier for those modules with a tin can around chips, but that’s nothing that a little hot air can’t fix. See the video embedded below for a good walk-through.

When ordering parts, don’t confuse 4 Mb (megabits = 512 kB) with 4 MB (megabytes = 32 Mb). Most manufacturers of flash will specify the bits number, so the part you want will have a 32 (for Mb) somewhere in its name.

With the price of flash being even cheaper than the cost of the ESP-01s that are cluttering up your junk drawer, you’ve got very little to lose by giving it a try.

44 thoughts on “Your ESP8266 Needs More Memory

    1. Just noticed my esp-201 “clone” has a Berg Micro flash chip BG 25Q80A SICG – 1550, which is an 8Mb (1MB) chip also. Not sure what the max memory the esp can handle is, ordered some W25Q64FVs and W25Q128FVs. Will try both.

  1. I have a ready source of 64Mbit spi Flash (Winbond 25Q64FVSIG) scavenged from discarded prototype boards. Thus, when I started using the ESP-12 (which has a tin shield) on projects, it was a natural to swap out the flash. I don’t have an immediate need for the 8MB of flash, but it is comforting knowing the added capacity is there.

    1. It’s good to know I can use the 25Q64 SOP8 chips I purchased to replace the Lattepanda firmware chip, now that I returned the LP piece of junk for refund those 25Q64 chips need a home!

      1. My OCD brain says no, it’s actually KB and MB in upper case.

        The way I learned it:
        Lower case k=kilo=1000
        Upper case K=Kilo=1024
        Lower case m=milli=1/1000
        Upper case M=Mega=1000000 or 1048576 depending on context
        Lower case b=bits
        Upper case B=bytes

        And yeah, the need for that much memory for a microcontroller blows my mind. My first computer had 8KB (64Kb) RAM. You kids with your modern Python crap, get off my lawn! :-)

        1. I also initially learned data units in the same way, but it’s not correct any more. For example MegaByte (MB) was being used to represent 2^20 (1024 kilobytes), however the SI prefix mega is supposed to represent 10^6 (1000, not 1024). Therefore now the correct way to represent 2^20 KiB (kibibyte) is with the suffix MiB, or mebibyte. More details with a useful table:

          https://en.m.wikipedia.org/wiki/Kibibyte

          1. Intel SDK-80: 8080 Processor with 256bytes RAM, later upgraded to 1024bytes via a 2102 RAM chip. Connected to outside world via Teletype with punch cards and paper tape. Still working, with original documentation from Intel.
            Got a Trash-80 too. Serial # 0000111.
            You should see my valve collection…
            Young pups indeed!

          2. HA! 8031 with 128 bytes of ram, SDK are for wimps. Wire wrap your first computer,

            Now get off my lawn!

            PS: 803x/805x are actually pretty nice processors though I do like the current line of toys we have. :-)

    1. I have to agree that people needing more than 512 MB for micro hurts my head. Think about the Commodore 64, Apple II line, and the Atari line of computers as well as all the CPM machines. Heck my Amiga 1000 only had 512k until I had and Starboard with 2MB on it. Lots of memory is good but my gosh has it gotten big and cheap.

      1. You miss some points.

        Most of the flash will be used as “hard drive” to store files.

        And your 512k computer had an ethernet+ip-stack? wifi/wpa2-support? Access point functions? Some sort of rich real time multi tasking os?

        1. The thing here is that they are not programmed in python or similar script languages. Because today’s computers have so much memory and speed, people get lazy, so we need a lot of kilobytes of flash and few megahertz just to blink a led.

          1. I could understand this if he was flashing less but it appears, at least from his other videos, that the intention is to program robots without needing to connect a USB cable to it. In the video previous to this one he described using pogo pins to program one of his other projects, and while it worked it was a pain because disassembly was required.

  2. A valuable thing to remember here is that there are different “SOIC” packages – JEDEC and EIAJ versions. So SOIC isn’t actually enough for a concrete footprint specification.

    Pin-bending, bodgy-soldering hacking is possible, but for a professional look, if you’re fabbing boards, it pays to check first.

    Although the smaller devices (e.g. 8kb on the older ESP-01 modules) are usually the smaller, more common 8-pin JEDEC SOIC, the larger flash chips (e.g. 32Mb) are usually the larger (EIAJ) package.

  3. I did multitasking on a Z80 using the alternate registers . I used to use 805x micros every where even the 84 pin plcc made by Semens down to the 18 pin. Does anyone remember the 8052-BASIC with a basic interpreter.. machine language takes up way less memory than high level language compilers.

Leave a Reply to sudo robot destroyCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.