ESP32 Bus Pirate 0.5 – A hardware hacking tool that speaks every protocol

github.com

151 points by geo-tp 2 days ago

ESP32 Bus Pirate is an open-source firmware that turns your device into a multi-protocol hacker's tool, inspired by the legendary Bus Pirate.

It supports sniffing, sending, scripting, and interacting with various digital protocols (I2C, UART, 1-Wire, SPI, etc.) via a serial terminal or web-based CLI.

Modes for:

- HiZ (default) - I2C (scan, glitch, slave mode, dump) - SPI (flash, sdcard, slave mode) - UART / Half-Duplex UART (bridge, read, write) - 1-WIRE (ibutton, temp sensor) - 2WIRE (smartcard) / 3WIRE (eeprom) - DIO (Digital I/O, read, pullup, set) - Infrared (device-b-gone, send and receive) - USB (HID, mouse, keyboard, gamepad, storage) - Bluetooth (BLE HID, scan, spoofing, sniffing) - Wi-Fi (scan, AP, connect, sniff, deauth) - JTAG (scan pinout, SWD) - LED control (animations, set LEDs) - I2S - CAN

https://github.com/geo-tp/ESP32-Bus-Pirate

myself248 a day ago

Is it a derivative of the original Bus Pirate in some way, or just reusing the name?

  • geo-tp a day ago

    Both in a way. Bus Pirate, both the hardware and the software, is completely open source. It's not the same version, things are different, but it's largely inspired by it.

    However, the entire implementation is new, it's not a copy

    • Brian_K_White a day ago

      Then you should not use their name.

      • schoen a day ago

        Maybe it could be called "Bus-caneer"?

      • geo-tp a day ago
        • Brian_K_White a day ago

          Nothing there adresses the problem. No one should have to tell you why it's wrong to use someone elses (reconized earned) name, or how "prefixed by esp32" does not change anything. Do what you want but don't delude yourself that you're in the right.

          • flowerthoughts a day ago

            Plus this assumes the reader knows the actual Bus Pirate doesn't use ESP32.

            • Brian_K_White 16 hours ago

              Not to mention, what if the original bus pirate developers wanted to support esp32? It's just wrong all around.

              Tomorrow I'm going to make one based on pi pico, and I want to sell them. But I have 2 problems:

              1 I suck at embedded code and electronics design so my product barely works. It isn't reliable, accurate, or safe for the device under test.

              2 there are already a ton of cheap mcu logic analyser projects and products...

              How can I get mine to be popular instantly despite those problems? I'll just use someone else's popular recognized and well-regarded name that they earned the hard way. I'll call it the "Flipper Bus Pirate". This is totally ok because "Flipper Bus Pirate" is not "Bus Pirate" and it's also not "Flipper Zero". I don't understand why you are yelling at me.

          • 47282847 20 hours ago

            I generally agree, and also do in this particular case, but one could argue that bus pirate is so successful that it turned into a genericide (Kleenex, Hoover, Thermos, Zipper, …).

yjftsjthsd-h a day ago

Hm, maybe this will finally let me network my IR-controlled AC units. There are a bunch of ESP/IR projects, but for some reason I haven't gotten them to work (pretty sure it's a problem with my hand-assembled hardware, in fairness)

  • jasongill a day ago

    I recently converted all of my (5 in 3 buildings) mini splits on my property to be controlled by Home Assistant. It took some research but all I ultimately needed was:

    https://cloudfree.shop/product/ductless-hvac-wi-fi-module/

    this USB ESP32 module which works out of the box on Midea-produced units (Carrier, Electrolux, Pioneer). I have a few units that are other generic brands which apparently are rebranded "Aux" brand units, so I re-flashed the ESP32 board above to work with Aux units by doing `brew install esphome` and then `esphome run auxminisplit.yaml --device /dev/tty.usbserial-210` where auxminisplit.yaml is https://gist.github.com/jasongill/35a13e458b6d109ca2bbefeab4...

    That worked perfectly for me and should cover like 90% of all minisplits (Midea and Aux make a ton of brands units), let me know if that works for you.

  • baby_souffle a day ago

    > (pretty sure it's a problem with my hand-assembled hardware, in fairness)

    Certainly could be the case. I've spent more time than I want to admit chasing down what was ultimately a loose wire.

    For what it's worth, you can get a cheap ESP32 module and basic IR sensor modules for a few bucks on amazon [0]. As long as you have a basic USB <-> TLL/Serial adapter, you should be able to install ESPHome on that. The module that's on that particular board does not have a ton of room so keep the ESPHome config simple and to the point.

    It's a few dozen lines of yaml total to get a basic IR signal decode/dump tool: [1]

    [0]: https://www.amazon.com/HiLetgo-Infrared-Transmitter-Receiver...

    [1]: https://esphome.io/guides/setting_up_rmt_devices#remote-sett...

    • yjftsjthsd-h a day ago

      Thanks; $17 is much cheaper than the time it would take me to fix mine:) And limited space is fine, for my use case I just need to turn MQTT or HTTP POSTs into like three different signals.

  • geo-tp a day ago

    The firmware supports about 83 IR protocols, but even with that, it's not mandatory that it works with all existing devices.

  • lostlogin a day ago

    What is it about AC that makes it impossible to control?

    I live in New Zealand where we pretend that it’s never particularly cold or particularly hot. This might be a factor in how sloppy all the installs seem to be.

  • roger_ a day ago

    ESPHome is good for that.

  • nullc a day ago

    It can be informative to drop an oscilloscope probe on the transmitter.

    I recently found a remote that doesn't to the 30kHz modulation-- good luck to me controlling that with anything.

konraditurbe 2 days ago

bought a t embed cc1101 and stickc2 plus boards to try out your project, arrives in a couple days!

  • geo-tp a day ago

    That's nice, give me some feedback what you thought once you've used it

petre a day ago

Too bad ir doesn't do CAN-bus, either using ESP32's integrated TWAI controller and a hardware interface with a transciever or a MCP2515 controller. The M5 has a CAN-bus transciever¹. Thay way it would be really useful on cars and more recent e-bikes.

1. https://docs.m5stack.com/en/unit/can

  • geo-tp 18 hours ago

    already supported

jnurmine a day ago

No I3C though :)

  • geo-tp a day ago

    Fork it and implement it then

    • 4gotunameagain a day ago

      Sass Pirate 0.5

      • geo-tp a day ago

        It might have been poorly worded, English is not my native language, but there was nothing mean in my message. To put it more clearly, I meant: fork it and make a pull request to help me implement it.

        • jnurmine 14 hours ago

          Don't worry, at least I didn't think it was mean or anything.

          The "joke" was that implementing bitbanged I3C on an ESP32 (!) sounds absurd. Like doing raytracing on C64. (Of course some crazy folks have done it though)