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 configuration
submenu (for the folder option in theHardware description
section, think of any name. We will use it later.), and set up the drivers that your hardware will use in theComponents
submenu. - 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.py
andboot.py
are 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