Repository navigation
[New Plugin]: Espressif #377
Copy link
Copy link
Closed
Description
Plugin Description
Espressif chip support: Xtensa architectures for the ESP8266, ESP32, ESP32-S2 and ESP32-S3 (GNU objdump-syntax disassembly and lifting of the whole Xtensa ISA, windowed and call0 calling conventions), and loading of firmware images, flash dumps, ELF files, mask ROM symbols/types and SVD peripheral registers for those and the RISC-V ESP32-C2, C3, C5, C6 and H2.
Things worth knowing before listing it:
- Native library behind a Python loader. The plugin is a Rust native library. Following the "Submitting to the extension manager" advice for native plugins, the extension manager installs only a small python3 loader (plugin.json
api: ["python3"]). In the UI, the loader asks before downloading the prebuilt library for the host (Linux x86_64, Windows x86_64, macOS universal) from this repo's GitHub release. Headless, it downloads only ifespressif.loader.autoDownloadis enabled. It accepts the file only if its size and SHA-256 matchbinja_espressif_loader/manifest.jsonat the release tag, copies it into the user plugin folder, and asks for a restart. It doesn't touch a library the user built themselves. Plugins > Espressif > Remove Native Library removes it. All of this is inlongdescription. - Dev builds only, for now. Release libraries are built against the dev-channel API (core ABI 189), so
minimumbinaryninjaversionis 10874, the first dev build that accepts that ABI. Stable 6.0 (10601) should not be offered it. If a dev build's core ABI moves past the release's, the loader logs that no prebuilt library matches and installs nothing. I'll cut releases as the dev ABI moves, and add stable builds later. - Optional ROM download. To decompile the mask ROM, the plugin offers, with consent and only once, to download Espressif's ROM ELF files (about 5 MB) from the pinned espressif/esp-rom-elfs release (Apache-2.0). The download is size- and SHA-256-checked. An existing ESP-IDF install's copy is used without downloading.
- Licence. The plugin is MIT. It bundles Espressif's SVD files (Apache-2.0); an ESP8266 SVD generated from esp-rs/esp-pacs (MIT or Apache-2.0); ROM symbol tables and type libraries derived from ESP-IDF and ESP8266 SDK sources (Apache-2.0 and the Espressif MIT License); and newlib headers (BSD-style). Licence texts are included; see the README's License section.
- Relation to existing listings. It registers its own architectures (
xtensa-esp8266,xtensa-esp32,xtensa-esp32s2,xtensa-esp32s3) and an "ESP" view, so it can be installed alongside zackorndorff/binja-xtensa, nicabi/binja-xtensa2 and psifertex/bnesp32.
Filed from the GitHub CLI, so the new plugin label (and the validator workflow) may be missing; validate_json.py --repo-url https://github.com/jrozner/binja-espressif reports: OK: Remote plugin.json is valid for jrozner/binja-espressif at tag 'v0.1.0'.
Plugin Repository URL
Repo URL: https://github.com/jrozner/binja-espressif
Real Release
- I have made a real release
Creation and Validation of plugin.json
- I have created a valid
plugin.jsonfile
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
psifertex commentedon Oct 15, 2026
Added, thanks!