Skip to content
A virtual machine that simplifies building MicroPython for the ESP8266 microcontroller.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This project contains tools to simplify the building of the MicroPython firmware for the ESP8266 microcontroller.

Vagrant VM

The build environment is installed in a Vagrant VM. To be able to do this, you need to install Vagrant and VirtualBox.

To create the VM, simply run:

$ vagrant up

This command will create an Ubuntu VM, download and build the ESP8266 cross-compiler, and finally download and build MicroPython. This takes a long time. Just as a reference, the process takes about 20 minutes on a relatively modern Mac laptop.

When the command completes, you will find a micropython directory, which thanks to Vagrant is also accessible inside the VM as /vagrant/micropython. The firmware for the ESP8266 is stored in micropython/ports/esp8266/build.

To stop the VM without destroying it, enter:

$ vagrant halt

And then to restart it:

$ vagrant up

Note that on a restart, this command is fairly fast. You will need to also issue it if you restart your system without having properly halted the VM.

If you want to completely delete the VM, run:

$ vagrant destroy

Normally there is no need to do this, but if you need to log in to the VM, the command is:

$ vagrant ssh

Installing Packages from PyPI

The main reason why it is usually necessary to build a custom firmware is to install custom dependencies that are too big to be installed as source code directly on a device running a stock firmware.

To add a custom package to the firmware, run the following command:

$ ./upip install <package> ...

Note that only packages specifically written for MicroPython can be installed. The packages will be installed to the micropython/ports/esp8266/modules directory, which is pre-compiled and added to the firmware. After adding new packages, the firmware needs to be rebuilt.

Building the Firmware

If you need to build the firmware (typically after adding or removing custom packages), issue the following command:

$ ./build

Cloning MicroPython

If you want to start from scratch, you can delete the micropython directory and then clone it again with the command:

$ ./clone

This will get a fresh copy of the MicroPython repository and its dependencies, and leave it ready for the firmware to be built.

You can’t perform that action at this time.