ESP32-Bit-Pirate

命令行工具

geo-tp/ESP32-Bit-Pirate

ESP32 多协议硬件调试工具,支持网页命令行。

项目简介

将 ESP32-S3 开发板变为多协议分析调试工具,支持 I2C、SPI、UART、1-Wire、JTAG、CAN、红外、蓝牙、Wi-Fi、Sub-GHz 和 RFID 等协议。具备嗅探、脚本控制、EEPROM 读取及网页终端功能。

README 预览

# ESP32 Bit Pirate\n\n[](https://geo-tp.github.io/ESP32-Bit-Pirate/)\n\n\n**ESP32 Bit Pirate** is open-source firmware that turns your device into a multi-protocol development and analysis tool, inspired by the legendary Bus Pirate.\n\nIt supports sniffing, sending, scripting, and interacting with various digital protocols (I2C, UART, 1-Wire, SPI, etc.) via a serial terminal or web-based CLI. It also communicates with radio protocols like Bluetooth, Wi-Fi, Sub-GHz and RFID.\n\nThe official project website centralizes everything: [ESP32 Bit Pirate Website](https://geo-tp.github.io/ESP32-Bit-Pirate/).\n\nFrom there you can [install the firmware](https://geo-tp.github.io/ESP32-Bit-Pirate/webflasher/), open the [web tools](https://geo-tp.github.io/ESP32-Bit-Pirate/web-tools/), follow [hardware guides](https://geo-tp.github.io/ESP32-Bit-Pirate/hardware/), explore [recipes](https://geo-tp.github.io/ESP32-Bit-Pirate/recipes/), and access the [documentation](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki).\n\n\n\n\n## Features\n\n- Interactive command-line interface (CLI) via **USB Serial or WiFi Web**.\n- **Modes for:**\n   - [HiZ](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/01-HiZ) (default)\n   - [I2C](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/05-I2C) (scan, glitch, slave mode, dump, eeprom)\n   - [SPI](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/06-SPI) (eeprom, flash, sdcard, slave mode)\n   - [UART](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/03-UART) / [Half-Duplex UART](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/04-HDUART) (bridge, read, write)\n   - [1WIRE](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/02-1WIRE) (ibutton, eeprom)\n   - [2WIRE](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/07-2WIRE) (sniff, smartcard) / [3WIRE](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/08-3WIRE) (eeprom)\n   - [DIO](https://github.com/geo-tp/ESP32-Bit-Pirate/wiki/09-DIO) (Digital I/O, read, pullup, set, pwm)\n   - [Infrared](https://github.com/geo-t

常见问题 (4)

compatibility
Cardputer ADV 搭配 M5Stack LoRa Cap SX1262 使用时,LoRa 模式是否可用?

是的。将 LoRa cap 连接到 Cardputer ADV,并使用默认引脚配置;所需的引脚已预先配置好。

来源 Issue #160
故障排除
如何修复 IRremoteESP8266 将空调遥控器的长原始信号拆分成多个帧并丢失 marks/spaces 的问题?

默认的原始捕获缓冲区太小。在 IRremoteESP8266 中,kRawBuf = 100 只能存储 99 个 mark/space 条目,因此像重复的 72-bit 帧这样的长 AC 遥控器信号可能会超出缓冲区,从而被拆分或截断。在 InfraredService.cpp 中,用更大的缓冲区分配 IRrecv,例如 512:

_receiver = new IRrecv(_rxPin, 512);

在每次调用 configure() 时重新分配之前,先释放之前的接收器,以避免泄漏更大的缓冲区:

if (_receiver != nullptr) {
  _receiver->disableIRIn();
  delete _receiver;
  _receiver = nullptr;
}
_receiver = new IRrecv(_rxPin, 512);

然后重新构建并烧录 ESP32 Bit Pirate 固件。一个临时的替代方案是修改库中 IRrecv.h 里的 kRawBuf,但将缓冲区大小传递给 IRrecv 构造函数并修复对象生命周期是更优的解决方案。

来源 Issue #154
故障排除
如何为 ESP32-S3-Zero 或搭载 ESP32-S3FH4R2、4 MB flash 和 2 MB PSRAM 的 ESP32-S3 SuperMini 添加支持?

使用基于 ESP32-S3 DevKit 的自定义 PlatformIO 环境/配置文件,并设置 board_build.flash_size = 4MB。创建一个 4 MB 的分区表,例如 partitions_s3_4m.csv:

# Name,     Type, SubType,   Offset,    Size,
nvs,        data, nvs,       0x9000,    0x6000,
phy_init,   data, phy,       0xF000,    0x1000,
factory,    app, factory,   0x10000,   0x390000,
spiffs,     data, spiffs,    0x3A0000,  0x60000,

通过 board_build.partitions = partitions_s3_4m.csv 引用该分区表,然后在新的 PlatformIO 环境中配置该开发板特定的 GPIO。此布局省略了 coredump 分区,并使用 384 KB 的 SPIFFS 分区,以适配 4 MB 的闪存。如果该专用环境触发了 issue #180 中与 memset 相关的崩溃,显式调用 ::memset() 是一种已知的解决方法。

来源 Issue #151
故障排除
如何修复 M5StickS3 在使用默认 TX 引脚时 IR 信号接收或录制无法正常工作的问题?

通过 RMT 外设使用 M5StickS3 的内置 IR 接收器,而非默认的 TX 引脚。请更新到包含 M5StickS3 IR 接收实现的库/固件版本,然后按照 M5Stack 的 M5StickS3 IR NEC 示例,配置 IR 接收以使用 RMT 进行读取和解码。重新构建后,使用兼容 NEC 的遥控器测试录制功能。

来源 Issue #161