About a year ago, I ran into a problem where I wished I could connect to a Serial port over the internet. It made me wonder: why hasn’t anyone turned an ESP32 into a Serial and I2C gateway over WiFi? Soon after I found the JetKVM and as you can see from my relative post I solved my issue with the Serial port. Two weeks ago, on a reddit post I discovered ESP32 Bus-Pirate which I believe has the potential to grow to something amazing.
In this post I will describe how I compiled the code for the ESP32-S3Devkit which is already supported by the maintainer of the repository but unfortunately no binaries are provided. At the end of the post, you can download the compiled Bus Pirate binary for the ESP32-S3 DevKit, updated as of July 31, 2025.
Compiling the code [optional]
To compile the project with full functionality, a Linux distribution is required because FastLED fails to compile on Windows. While the project can be successfully built on Windows, the LED mode will be unavailable. This was my setup:
- Operating System: Kali Linux 2024.4
- Visual Studio Code: 1.102.3
- PlatformIO IDE for VSCode: 3.3.4
Procedure
1) Clone the repository:
git clone https://github.com/geo-tp/ESP32-Bus-Pirate
2) Open the folder in Visual Studio, from a terminal in the ESP32-Bus-Pirate directory type
code .
3) Select Trust the authors of all files in the parent folder 'esp32_bus-pirate'
and click Yes I trust the authors
4) Edit platformio.ini
in the root of the folder and under the [env:s3-devikt] or the version you want to built uncomment the line (remove the 😉 -D ENABLE_FASTLED_PORTOCOL_SWITCHES // Only possible if you build it on linux
, remove the comment following the flag // Only possible if you build it on linux
and save the file
Warning: After uncommenting the line don’t forget to remove the comments after the flag // Only possible if you build it on linux
, otherwise you will face the following error:
File "/home/novamostra/.platformio/penv/lib/python3. 12/site-packages/platformio/builder/tools/piobuild.py", line 195:
for key, value in env. ParseFlags (str(raw) ) . items ( )
File "/home/novamostra/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Environment.p", line 1034:
do_parse(arg)
File "/home/novamostra/. platformio/packages/tool-scons/scons-local-4. 8. 1/SCons/Environment.py", line 950:
mapping[ 'LIBS' ] . append(self.fs. File(arg)
File "/home/novamostra/.platformio/packages/tool-scons/scons-local-4.8. 1/SCons/Node/FS.py", line 1458:
return self. lookup(name, directory, File, create)
File "/home/novamostra/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Node/FS.py", line 1437:
return root. lookup_abs(p, fsclass, create)
File "/home/novamostra/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Node/FS.py", line 2480:
result.must_be_same(klass)
File "/home/novamostra/. platformio/packages/tool-scons/scons-local-4.8.1/SCons/Node/FS.py", line 644:
raise TypeError("Tried to lookup %S '%s' as a %S." %\
5) Click on Platformio icon and select Build
for the Specific Board.
6) After building successfully the code, in ESP32-Bus-Pirate
directory, navigate to .pio/build/s3-devkit
and locate the following three files:
- bootloader.bin
- firmware.bin
- partitions.bin
Those are the required files to build the final combined firmware. I tried to merge the binaries using both ESPtool 4.91 and 5.02 and the esptool merge-bin command, but while the operation was successful my ESP32-S3DevKit was always stack in a boot loop after flashing the combined firmware. So I finally combined the final firmware on Windows using the official FlashDownload Tool V3.9.9_R2 (using the CombineBin
Button).
Flash Compiled Firmware to ESP32S3-DevKit using Windows
After compiling the code and combining the three firmware parts to the final firmware it’s time to flash it. If you skipped the compilation process, you can grab the final firmware for the 16MB ESP32-S3 DevKit from here
Then download the official Espressif Flash Download Tool which you from Espressif web page, exctract it and after launching it select ESP32-S3 as ChipType.
In the main window, load the combined firmware downloaded you downloaded before and set the address to 0x000
. Connect your ESP32-S3Devkit using the USB
port to your computer, select the appropriate COM
port and click Start.
When flashing finish the Download indicator will turn Blue.
Your device is ready. Open a new Serial connection to the device (I am using Baud Rate 115200 but the device automatically detect any baud rate selected) and you are ready to go:
If you’re using your ESP32-S3 DevKit for the first time and it’s based the ESP32-S3 DevKitC-1 module, make sure to short the RGB header pins (as shown in the image below) to connect the RGB LED to GPIO 48 and enable it.
Thanks for that mate