This repository contains the reworked firmware platform for generic ESP32-based hardware devices.
badge.team firmware has been used by many event badges, such as:
- SHA2017
- HackerHotel 2019
- Disobey 2019
- CampZone 2019
sudo apt-get install make unzip git libncurses5-dev flex bison gperf python-serial libffi-dev libsdl2-dev libmbedtls-dev perl
First, make sure you pull the submodules in the project:
git submodule update --init --recursive
Next, copy the xtensa build toolchain for your OS (currently supporting Linux and Mac OS) from /toolchains/, and unpack and save it as /xtensa-esp32-elf/ in the project root folder:
unzip -p toolchain/xtensa-esp32-elf-linux64.zip xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar | tar xv
Copy the relevant config file from /firmware/configs/<badge>_defconfig to /firmware/sdkconfig:
cp firmware/configs/sha2017_defconfig firmware/sdkconfig
Set the path to esp32-toolchain (you have to repeat that on every new terminal) (usually it is located in your ESP32-platform-firmware directory):
export PATH="$PATH:/path/to/my/toolchain/xtensa-esp32-elf/bin"
To build and flash the basic generic firmware:
./build.sh
./flash.sh
Make sure you have downloaded the appropriate driver for the USB UART chip on your device. Below are some from popular badges.
- SHA2017 / HackerHotel 2019: CP2102 driver
- CampZone 2019: CH340C driver
If you have this issue with flashing:
serial.serialutil.SerialException: [Errno 2] could not open port : [Errno 2] No such file or directory: ''
Then you need to copy the python2 command that ./build.sh suggests, and make sure the --port argument has the right value.
By default, the badge.team firmware activates a simple python shell or serial menu after booting. You can interact with it by running:
./monitor.sh
You can use badge.team firmware for your own-designed badge or device. The workflow for this is described below.
- Run
./config.sh, configure theFirmware & device configurationsubmenu (for the folder option in theHardware descriptionsection, think of any name. We will use it later.), and set up the drivers that your hardware will use in theComponentssubmenu. - If you need to write drivers of your own, take a look at the driver documentation.
- Create a directory with the folder name you configured in the first step in
/firmware/python_modules, and copy/firmware/python_modules/generic/*into it. - In this directory, you can write Python code that will be built into the firmware image. The files
_boot.pyandboot.pyare executed after each other on boot, and from there you can launch your own things. - Build and flash, and you're done!
Copyright (C) 2017-2019 BADGE.TEAM
Uses the Micropython port for ESP32 by Loboris
Uses ESP-IDF by Espressif