MicroPython downloads

MicroPython is developed using git for source code management, and the master repository can be found on GitHub at github.com/micropython/micropython.

The full source-code distribution of the latest version is available for download here:

Daily snapshots of the GitHub repository (not including submodules) are available from this server:

Firmware for various ports are built automatically on a daily basis and can be found below:

Firmware for the pyboard D-series

For the pyboard D-series you must enter the mboot DFU bootloader by holding down the USR button, pressing and releasing the RST button, and continuing to hold down USR until the LED is white (4th in the cycle), then let go of USR while the LED is white. The LED will then flash red once per second to indicate it is in USB DFU mode. You can then program the firmware using a DFU programmer, eg dfu-util or pydfu.py.

Firmware for the pyboard D-series (check which model you have by the sticker on the top):

Firmware for the original pyboard

Daily builds of the code (the stm32/ directory) are available below. The hardware version of the board that you have should be written on your pyboard; eg boards with PYBv1.0 written on them should use pybv10_xxx.dfu files.

For each board there are various firmwares available with different options compiled in. The "standard" build is listed first and is the default firmware that the pyboards are shipped with. Use this firmware if you are uncertain. The "double FP" builds use double-precision floating point instead of the standard single precision. The "threading" builds contain the _thread module and allow multithreading. The "network" builds have network drivers for CC3000 and WIZ820io included. All these different firmware are completely interchangeable and you can freely change from one to the other without losing the filesystem on your pyboard.

For each firmware group there are various versions of the software available. The latest version is listed first in the line, followed by older, and possibly more stable, versions. A overview of changes for each software version can be found here.

One you have downloaded the appropriate DFU file it can be flashed directly to your pyboard using a DFU programmer. For information about DFU programming on Windows see this PDF. For Linux and Mac see here.

Firmware suitable for PYBv1.0 boards:

Firmware suitable for PYBv1.1 boards:

Firmware suitable for PYBLITEv1.0 boards:

Firmware suitable for hand-made PYBv3 boards:

Firmware for the WiPy

The following files are firmware for the WiPy. The zip file contains mcuimg.bin which should be copied via ftp to the /flash/sys directory on the WiPy.

Firmware for ESP8266 boards

The following files are stable firmware for the ESP8266. Program your board using the esptool.py program as described in the tutorial.

The following are daily builds of the ESP8266 firmware. They have the latest features and bug fixes, WebREPL is not automatically started, and debugging is enabled by default.

The following are daily builds of the ESP8266 firmware tailored for modules with only 512kbytes of flash. Certain features are disabled to get the firmware down to this size.

The following are Over-The-Air (OTA) builds of the ESP8266 firmware, for modules with at least 1MByte of flash. The first time you use this build you need to flash one of the "initial image" images using esptool.py as described above. After that, you can update the firmware over the air using the "OTA update" file in conjunction with the ota-client script from yaota8266. The "OTA update" files are digitally signed and will only work with the provided "initial image" files, and vice versa. (Note: this feature is work-in-progress.)

Firmware for ESP32 boards

The following files are daily firmware for ESP32-based boards, with separate firmware for boards with and without external SPIRAM. Non-SPIRAM firmware will work on any board, whereas SPIRAM enabled firmware will only work on boards with 4MiB of external pSRAM.

Program your board using the esptool.py program, found here. If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash

From then on program the firmware starting at address 0x1000:

esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20190125-v1.10.bin

Firmware built with ESP-IDF v3.x, with support for BLE, LAN and PPP:

Firmware built with ESP-IDF v4.x, with support for BLE, but no LAN or PPP:

Firmware for other boards

These boards are not officially supported but should be fully functional:

For programming an Espruino Pico see the "Advanced Reflashing" section of this page.