SYSTEM ONLINE · ESP32-S3 N16R8 · 16MB / 8MB PSRAM

HANDHELD RED-TEAM
MULTITOOL

A DIY Flipper Zero running the Bruce firmware. Sub-GHz, NFC/RFID, IR, WiFi and BLE, NRF24, and a Si5351 signal generator — flashed straight from the browser.

Bruce But Better banner
09+
MODULES
300-928
MHz SUB-GHZ
1-CLICK
BROWSER FLASH
AGPL
OPEN SOURCE
// 01 — install

Flash from the browser

No toolchain, no esptool. Plug in over the left USB-C, click, done — powered by esp-web-tools.

READY_TO_FLASH

Pick a firmware version and your board, connect via the LEFT USB-C (UART), then flash. 50+ boards — ESP32-S3 & classic ESP32, straight from the browser.

Web Serial unsupported — use desktop Chrome or Edge. This page must be served over HTTPS.
[ 01 ]

CONNECT

Plug the ESP32-S3 into the LEFT USB-C (UART/programming).

[ 02 ]

SELECT_PORT

Run flash, pick the serial port, confirm connect.

[ 03 ]

INSTALL

Keep "erase device" checked for a clean write, then wait.

! won't start? hold BOOT while connecting (or BOOT+RESET) to force download mode. install CH34x / native-USB driver. desktop Chrome or Edge required.

every image is also on the releases page (per version) for manual esptool flashing. esp32-c5 / nesso-n1 build from source.

// 02 — capabilities

Nine modules, one binary

Hardware is probed at runtime. Flash a single image and use whatever chips you populated.

WIFI

WiFi 2.4 GHz

  • Deauth
  • Beacon spam
  • Evil Portal
  • Sniffer · Wardriving
  • ARP spoof / poison
  • Responder
BLE

Bluetooth LE 2.4 GHz

  • iOS / Windows spam
  • Samsung / Android spam
  • Bad BLE (Ducky)
  • Scan
CC1101

Sub-GHz 300-928 MHz

  • Jammer
  • Scan / Copy
  • Replay
  • Custom SubGhz
  • Spectrum
PN532

NFC / RFID 13.56 MHz

  • Read / Clone / Write
  • NDEF
  • Chameleon
  • Amiibolink
IR

Infrared 38 kHz

  • Jammer
  • TV-B-Gone
  • Receiver / decode
  • NEC · SIRC · RC5/6
NRF24 x2

NRF24 2.4 GHz

  • Jammer
  • Mousejack
  • 2.4G Spectrum
SI5351

Signal Gen 8k-160 MHz

  • Frequency gen
  • CLK0 / CLK1 / CLK2
  • Sweep
  • AM band
USB HID

Bad USB native

  • Ducky scripts
  • Keystroke injection
  • Right USB-C
TOOLS

Extras utility

  • JavaScript interpreter
  • WebUI
  • SD / LittleFS manager
  • QR · iButton
// 03 — hardware

The build

ESP32-S3 N16R8 core, shared SPI / I²C backbone, dual USB-C.

MODULES

PartFunction
CC1101Sub-GHz 300-928 MHz
PN532NFC 13.56 MHz + RFID
NRF24L01 x22.4 GHz · MouseJack · jammer
Si5351Signal gen 8 kHz-160 MHz
MicroSDFile storage
OLED 1.3" SH1106Display (SSD1106G)
VS1838BIR receiver 38 kHz
IR LED + 2N2222IR transmitter
Passive buzzerSound
6x buttonsNavigation

MAIN BOARD

ESP32-S3 N16R8 — 16 MB QSPI Flash, 8 MB OPI PSRAM.

  • Left USB-C — UART / programming & browser flashing
  • Right USB-C — native USB (Bad USB / HID)

Shared SPI (CC1101 + SD + 2x NRF24) and shared I²C (OLED 0x3C, PN532 0x24, Si5351 0x60) — unique CS / addresses, no conflicts.

full_bom →
// 04 — wiring

GPIO map

Pin assignments for the ESP32-S3 N16R8. The reserved range will brick the board — keep it clear.

BUSES & MODULES

# I2C (shared) IO8 = SDA IO18 = SCL # SPI (shared bus) IO11 = MOSI IO12 = SCK IO13 = MISO # CS / control (unique) CC1101 GDO0=IO9 CS=IO10 MicroSD CS=IO14 NRF24 #1 CE=IO4 CSN=IO5 NRF24 #2 CE=IO6 CSN=IO7 IR RX=IO1 TX=IO2 Buzzer IO47 # Buttons (to GND, pull-up) UP=15 DOWN=16 LEFT=38 RIGHT=39 OK=40 BACK=41

RESERVED — DO NOT USE

GPIO 26-32 -> QSPI Flash GPIO 33-37 -> OPI PSRAM (forbidden, N16R8) GPIO 19-20 -> Native USB D+/D- (Bad USB) GPIO 45-46 -> Strapping pins GPIO 43-44 -> UART0 TX/RX (debug)

driving flash/PSRAM pins locks the chip permanently.

// 05 — fallback

Manual flash (esptool)

Browser method failing? Pull the bins from Releases and flash by hand.

MERGED (ONE FILE)

esptool.py --chip esp32s3 --port COMx \ write_flash 0x0 Bruce-esp32-s3-N16R8.bin

linux/mac: /dev/ttyACM0 or /dev/ttyUSB0 instead of COMx

COMPONENT OFFSETS

FileOffset
Bruce-esp32-s3-N16R8.bin0x0
bootloader.bin0x0
partitions.bin0x8000
boot_app0.bin0xe000
firmware.bin0x10000
// 06 — help

FAQ

Before you flash.

Which browser is required?

Desktop Chrome or Edge — they support Web Serial. Firefox and Safari do not. Mobile browsers will not work.

Flashing won't start / no port appears

Hold BOOT while plugging in (or BOOT+RESET) to force download mode. Install the CH34x or native-USB serial driver, and use the left USB-C port.

Do I need every module populated?

No. Modules are probed at runtime — flash the single binary regardless of hardware. A missing chip shows a "not found" message instead of crashing.

Which USB-C port for what?

Left = UART / programming / browser flashing. Right = native USB for Bad USB / HID.

Is this legal?

For authorized security testing and education only. Jammers and deauth against gear you do not own are illegal in most jurisdictions. You assume all responsibility. AGPL licensed.

Build it. Flash it. Own the spectrum.

Open source · contributor-friendly · AGPL