- ESP-IDF v5.x (tested on v5.4.1) installed, typically at
~/esp/esp-idf. Follow Espressif's Get Started guide. - cmake and ninja on your
PATH(installed by ESP-IDF'sinstall.sh, orsudo apt install cmake ninja-build). - Python 3.11-3.13 (ESP-IDF v5.4.1 is not validated on 3.14).
- Pillow for the icon build step. Install it into the ESP-IDF virtualenv:
source ~/esp/esp-idf/export.sh pip install -r requirements.txt
git clone https://github.com/h0ru/NetrunnerFirmware.git
cd NetrunnerFirmwareConnect the T-Embed over USB, then:
./buildAndFlash_T-Embed.shIt sources ESP-IDF, sets the target on first run, builds, and flashes. Useful flags:
| Flag | Effect |
|---|---|
--port <device> |
Serial port (default: auto-detect /dev/ttyACM* on Linux, /dev/cu.usbmodem* on macOS) |
--monitor |
Open the serial monitor after flashing |
--build-only |
Build without flashing |
The ESP-IDF location can be overridden with ESP_IDF_EXPORT_SCRIPT, and the port
with the ESPPORT environment variable.
source ~/esp/esp-idf/export.sh
idf.py -B build_t_embed -DNETRUNNER_BOARD=lilygo_t_embed_cc1101 set-target esp32s3 # first time only
idf.py -B build_t_embed -DNETRUNNER_BOARD=lilygo_t_embed_cc1101 -p /dev/ttyACM0 build flash monitorIf the firmware is already built in build_t_embed/ and you just want to write
it again (e.g. flashing another unit):
source ~/esp/esp-idf/export.sh
cd build_t_embed
esptool.py --chip esp32s3 -p /dev/ttyACM0 -b 460800 \
--before default_reset --after hard_reset write_flash @flash_args"cmake" must be available on the PATH to use idf.py: cmake/ninja are not installed. Re-run./install.sh esp32s3inside your ESP-IDF folder (installs the bundled cmake/ninja) orsudo apt install cmake ninja-build, thensource ~/esp/esp-idf/export.shagain.Could not open /dev/ttyACM0, the port is busy/Input/output error(common on Kali/Debian):ModemManagergrabs the serial port. Stop it and retry:Also confirm your user is in thesudo systemctl stop ModemManager # or: sudo systemctl disable --now ModemManager sudo fuser -k /dev/ttyACM0 # free a port held by a stale monitor
dialoutgroup (sudo usermod -aG dialout $USER, then log out/in).- Port not found / device not responding: check the real node with
ls /dev/ttyACM* /dev/ttyUSB*anddmesg | tail. To force download mode: hold BOOT (IO0), tap RST, release BOOT, then flash. ModuleNotFoundError: No module named 'PIL': install Pillow (pip install -r requirements.txtinside the ESP-IDF venv).
Built on upstream work:
- Flipper Zero firmware: the original firmware and app framework.
- Flipper-Zero ESP32 Port: the ESP32 port this project is based on.
- LilyGO T-Embed CC1101: target hardware.
Distributed under the GNU General Public License v3.0. See
LICENSE. Upstream components retain their original authors and
licenses.