项目简介
将 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)
compatibilityCardputer ADV 搭配 M5Stack LoRa Cap SX1262 使用时,LoRa 模式是否可用?
是的。将 LoRa cap 连接到 Cardputer ADV,并使用默认引脚配置;所需的引脚已预先配置好。
故障排除如何修复 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 构造函数并修复对象生命周期是更优的解决方案。
故障排除如何为 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() 是一种已知的解决方法。
故障排除如何修复 M5StickS3 在使用默认 TX 引脚时 IR 信号接收或录制无法正常工作的问题?
通过 RMT 外设使用 M5StickS3 的内置 IR 接收器,而非默认的 TX 引脚。请更新到包含 M5StickS3 IR 接收实现的库/固件版本,然后按照 M5Stack 的 M5StickS3 IR NEC 示例,配置 IR 接收以使用 RMT 进行读取和解码。重新构建后,使用兼容 NEC 的遥控器测试录制功能。