Поскольку способ, предложенный Adafruit, не работает из-за отсутствия Virtual Box и двух незначительных проблем — он предназначен для всех, кто работает на Mac с M1 и пытается собрать прошивку для устройства ESP8266. Если вы работаете на Mac без Silicon Processor или работаете на Mac, вы можете воспользоваться очень хорошим руководством от Adafruit.

Шаг 1. Установите UTM

UTM — это гипервизор для компьютеров Mac на базе кремния. Это бесплатное программное обеспечение, но вы можете поддержать разработчиков, купив его в Mac App Store. Бесплатную версию можно найти на их сайте. Скачайте и установите его.

Шаг 2. Загрузите Ubuntu версии 14.04

Перейдите к Ubuntu и скачайте версию Ubuntu 14.04. Сохраните его в нужном месте.

Шаг 3. Подготовьте виртуальную машину

Нажмите + Начать с нуля.

На вкладке «Система» выберите x86_64 в качестве архитектуры и установите объем памяти не менее 1024 МБ.

На вкладке дисков выберите «Импортировать диск» и импортируйте загруженный файл .iso из шага 2. Добавьте еще один диск с помощью кнопки «Новый диск» и создайте диск с адресом не менее 20 ГБ.

Сохраните все остальное и нажмите «Сохранить». В главном меню теперь вы можете нажать кнопку воспроизведения (или щелкнуть правой кнопкой мыши новую виртуальную машину) и запустить ее.

Шаг 4. Установите Ubuntu

Нажмите Enter на первом экране, чтобы начать процесс установки Ubuntu Server (или подождите 30 секунд).

В следующих настройках оставьте все как есть или настройте в соответствии с вашими предпочтениями и вашим локальным макетом.

Прокси не нужен, так что можете оставить его пустым.

Для более удобного способа выберите «Установить сервер OpenSSH». Это позволяет нам подключиться по ssh к нашей локальной машине и избежать ненужных шагов.

Сервер устанавливается сейчас и по завершении отображает следующий экран (это не должно занять более 5 минут):

Когда вы видите этот экран, вы готовы перейти к следующему шагу.

Введите ifconfig, чтобы увидеть свой IP

Шаг 5. Подключитесь к машине по протоколу SSH.

Чтобы немного упростить задачу, откройте свой терминал и введите ssh ‹yourusername›@192.168.64.5 (IP-адрес отображается выше по адресу eth0 inet addr) и введите yes, когда вас спросят об отпечатке пальца ECDSA.

Шаг 6. Установите все зависимости

Начните со следующей строки, чтобы войти в sudo в первый раз и обновить списки пакетов:

#Latest working setup for Ubuntu 14.04
#Based on https://github.com/adafruit/esp8266-micropython-vagrant
sudo apt-get update
sudo apt-get install -y build-essential git make unrar-free unzip autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python sed libreadline-dev libffi-dev pkg-config help2man python-dev python-serial wget linux-image-extra-$(uname -r)
cd ~
wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz 2> /dev/null
tar xvfz xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz
echo "PATH=/home/vagrant/xtensa-esp32-elf/bin:\$PATH" >> ~/.profile
git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
cd esp-open-sdk
cd crosstool-NG/.build/tarballs 
wget https://libisl.sourceforge.io/isl-0.14.tar.gz #Fixes isl timeout
wget https://github.com/libexpat/libexpat/releases/download/R_2_1_0/expat-2.1.0.tar.gz #Fixes expat issue
make #Can take up to 6 hours, depending on the system ressources given
echo "PATH=$(pwd)/xtensa-lx106-elf/bin:\$PATH" >> ~/.profile
source ~/.profile
cd ..
git clone --recursive https://github.com/espressif/esp-idf.git #Lot of modules
cd esp-idf
./install.sh
cd ..
git clone --recursive https://github.com/micropython/micropython.git #Lot of modules
cd micropython
make -C mpy-cross
cd ports
cd esp8266
make submodules

Шаг 7. Создайте собственную прошивку

В папке /micropython/ports/esp8266 вы должны увидеть что-то вроде этого:

В папку modules теперь можно добавлять свои собственные модули, чтобы заморозить их. Например, создайте новый файл с именем test.py:

def add(a, b):         
return a + b  
def subtract(a, b):         
return a - b

Итак, это должно выглядеть так:

Теперь вы можете создать новую прошивку с помощью:

cd - #Go back to the esp8266 folder
make

В процессе сборки вы должны увидеть следующие строки, указывающие с помощью MPY test.py, что ваш файл был встроен в прошивку:

Шаг 8. Установите собственную прошивку

Чтобы скопировать файл с сервера на ваш локальный хост, просто введите новый терминал:

scp [email protected]:/home/janco/micropython/ports/esp8266/build-GENERIC/firmware-combined.bin firmware-combined.bin

Прошивка теперь находится в вашей локальной папке пользователя. Вы можете найти его в Finder -> Перейти, а затем в папку пользователя.

Для прошивки вам понадобится файл esp-tool.py. Вставьте следующие строки в свой локальный терминал (убедитесь, что git установлен).

git clone https://github.com/themadinventor/esptool.git
cd esptool

Чтобы прошить устройство, вам сначала нужно найти правильный COM-порт. Это можно сделать через

cd /dev
ls /tty.*

Устройство будет иметь формат tty.usbserial-XXX:

Чтобы прошить устройство, сначала удалите данные прошивки на устройстве ESP:

esptool.py --port /dev/tty.usbserial-110 erase_flash

В случае успеха это должно выглядеть так:

После этого вы можете прошить кастомную прошивку сборки через

esptool.py --port /dev/tty.usbserial-110 --baud 1000000 write_flash --flash_size=4MB -fm dio 0 firmware-combined.bin

В случае успеха это должно выглядеть так:

Шаг 9. Подключитесь к ESP и проверьте зависший модуль

Для подключения к вашему устройству через REPL вы можете использовать picocom (см. здесь как установить)

picocom /dev/tty.usbserial-110 -b115200

Вы должны получить такой экран, введите Enter, чтобы получить «›››», который доказывает успешную установку Micropython:

Чтобы убедиться, что замороженный модуль работает, вы можете ввести

import test
test.add(1, 1)
test.subtract(1, 1)