Skip to content

[New Plugin]: Espressif #377

Closed
Closed

Description

@jrozner

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 if espressif.loader.autoDownload is enabled. It accepts the file only if its size and SHA-256 match binja_espressif_loader/manifest.json at 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 in longdescription.
  • Dev builds only, for now. Release libraries are built against the dev-channel API (core ABI 189), so minimumbinaryninjaversion is 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.json file

Activity

  1. psifertex commented on Oct 15, 2026

    @psifertex
    Member

    Added, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions