ESP32-DIV Full Guide | WiFi, BLE, RF, RFID and Every Feature Explained

Published on

 

ESP32-DIV started as a personal tool. Something I built because I wanted one device that could handle WiFi, Bluetooth, Sub-GHz, IR, RFID, and GPS all from a single handheld board. I never expected it to grow the way it did. People started building it. Then selling it. And some just grabbed the code and called it their own. That’s open source. But the real community the people opening PRs, reporting bugs, actually contributing that’s what kept this project alive and moving forward. This post is the complete guide. Hardware, flashing, every feature, and where the project is going next.

 


πŸ”© The Hardware

ESP32-DIV comes in three configurations. v1 is the original. Compact, all-in-one, good entry point. v2 is the current main board. Better layout, more reliable connections, and it supports the shield expansion system. This is what I’m using throughout this guide. CYD Cheap Yellow Display is a pre-made ESP32 development board with a built-in touchscreen. If you want to try the firmware without building your own hardware, the CYD is the easiest and cheapest way in.

Β 
Main Board

The core is the ESP32-S3 dual-core, plenty of flash, handles WiFi and Bluetooth natively. On top of that:

  • ILI9341 TFT with XPT2046 touch the display and touch controller
  • IP5306 battery charging and protection
  • CP2102 USB to serial for flashing and debugging
  • PCF8574 I/O expander for the physical buttons
  • WS2812 NeoPixels status LEDs
  • External antenna connector and buzzer

Β 

The Shield

The shield connects underneath the main board and adds the RF hardware:

  • 3x NRF24L01 modules 2.4GHz scanning and spoofing
  • CC1101 Sub-GHz capture, replay, and jamming
  • IR transceiver capture and replay remote control signals
  • PN532 RFID and NFC (added in the new hardware revision)
  • NEO-6M GPS module (also new)
  • Multiple antennas for extended range

The new shield design comes in two versions. The first is straightforward solder the modules in place, files are already on GitHub. The second is more complex and still in progress, but it opens the door for a lot of new features down the line.

 


⚑ Flashing the Firmware

Three ways to get the firmware on the board.

Β 

Web Flasher (recommended)

Go to cifertech.github.io/ESP32-DIV in Chrome or Edge. Select your board version, plug in via a USB data cable (not a charge-only cable, that’s the most common problem), click Flash, select your serial port, and watch the progress bar. About 30-60 seconds and you’re done. No drivers, no IDE, no terminal. If nothing shows up in the port list: try a different cable first, then install the CH340 or CP2102 driver for your OS.

 

DIV Flasher Desktop App

A Windows GUI app built specifically for this project. Download it from the repo and run ESP32-DIV-Flasher.bat. Select your COM port and board preset, hit Refresh List under the Toolbox tab, pick your firmware version, and click Download Release. It pulls the .bin straight from GitHub and fills the path in automatically. Check Erase entire flash before write on first install, then hit Flash Firmware. The activity log shows everything in real time. Ctrl+Enter to flash.

 

Arduino IDE

Full walkthrough is in the wiki. Short version: install Arduino IDE, add the ESP32 board package at v2.0.10 specifically, replace platform.txt with the one from the repo’s Flash File folder, and copy the Libraries folder from the repo into your Arduino libraries directory. Do not use the Library Manager versions, they will not work correctly with DIV. Select ESP32 S3 Dev Module, Partition Scheme: Minimal SPIFFS, upload speed 921600. Hold BOOT and press RESET if it does not enter download mode automatically.

 


πŸ—ΊοΈ Navigation

The menu is organized by protocol WiFi, Bluetooth, 2.4GHz, Sub-GHz, IR, RFID, GPS, System. Status bar at the top shows WiFi state, BLE state, SD card presence, and battery.

 


πŸ“‘ WiFi

Packet Monitor live waterfall graph of wireless traffic across all 14 channels. WiFi Scanner lists nearby networks with SSID, signal strength, encryption type, and channel. Beacon Spammer floods the air with fake SSIDs. Load a custom list from SD or go random. Deauth Attack sends disconnect frames to kick clients off a network. Broadcast mode hits all clients, targeted mode goes after one device. There’s also a Deauth Detector that flips it around and alerts you if someone is running a deauth near you. Captive Portal clones a network name and serves a fake login page to anyone who connects. Probe Flood hammers access points with probe requests.

 


πŸ“Ά Bluetooth

BLE Scanner discovers hidden and visible BLE devices around you. BLE Sniffer tracks MAC, RSSI, and packet count over time. BLE Spoofer broadcasts fake BLE advertisements. Sour Apple floods Apple devices with AirDrop-style popups. BLE Jammer disrupts both BLE and classic Bluetooth. BLE Rubber Ducky the board pairs as a Bluetooth keyboard and types out scripts from the SD card. Write a .txt script using DELAY, STRING, ENTER, GUI syntax drop it in the /ducky folder on the SD, select it from the menu, and it runs.

 


πŸ“» 2.4GHz

Spectrum Analyzer live activity across all 128 channels covering WiFi, Zigbee, custom RF, and more. Protokill disrupts Zigbee, WiFi, and other 2.4GHz protocols on demand.

 


πŸ”‰ Sub-GHz

The CC1101 module handles everything below the 2.4GHz band garage doors, key fobs, RF remotes, alarm sensors. Replay Attack captures a raw signal and replays it. Point at your own remote, capture, replay, done. Sub-GHz Jammer disrupts Sub-GHz communication in range. Saved Profiles stores and manages captured signals on the SD card.

 


πŸ”΄ IR

IR Replay point any remote at the board, capture the signal, visualize it on screen, save it as a profile, replay it later. IR Saved Profiles browse and load captured remotes from SD. Universal IR Controller built-in brand profiles, SD imports, and a remote-style interface. Point at a TV and turn it off. Classic. Works every time.

 


πŸ’³ RFID / NFC

The PN532 handles all card operations. Supported types: Mifare Classic, Mifare Ultralight, NTAG, ISO14443A. Card Reader reads UID and tag data, displays on screen. Card Clone copies supported writable tags. Dump reads full sector data when keys are available. Decode Access interprets access bits from a card dump. Erase wipes a writable tag. Jam Reader disrupts a nearby RFID reader. Tag Disrupt / Disrupt Emulate advanced disruption flows for physical security testing.

 


πŸ›°οΈ GPS

The NEO-6M handles GPS. Connect it to the GPS header on the board. Wardriver logs GPS position alongside WiFi and BLE observations to SD in Wigle-compatible CSV format. Import into Wigle.net or Google Maps to see your results on a map. Satellite Scanner shows satellites in view, signal strength per satellite, and fix diagnostics. Cold start tip: give it 60-90 seconds outside with a clear view of the sky.

 


πŸ”§ System Tools

Serial Monitor mirrors serial output directly on the TFT. Debug in the field without a laptop. SD File Manager browse and manage files on the SD card from the device. Touch Calibrate recalibrates the touchscreen if tap targets feel off. Settings brightness, light and dark theme, NeoPixel behavior, background scanning options.

 


πŸ’Ύ SD Card

Format as FAT32, up to 32GB. The firmware expects this structure:

Without an SD card every feature still works nothing gets saved between sessions.

 


πŸ› οΈ Building from Source

Clone the repo and open the sketch. Feature modules are organized by protocol in separate .cpp files. BoardConfig.h at the root defines pin assignments for v1, v2, and CYD. To add a new feature: create a .cpp and .h in the right protocol folder, add a menu entry in the main sketch, reference BoardConfig.h for any hardware-specific pins. Keep it modular one feature per file. Full compile instructions and the arduino-cli commands are in the wiki.

 


❗ Troubleshooting

Device not detected swap the cable first. Then install the CH340 or CP2102 driver. Display not turning on wrong platform.txt or missing library replacement. Follow the wiki setup exactly. NRF24 not working check SPI wiring and confirm 3.3V power, not 5V. Counterfeit modules are common. GPS no fix go outside, wait 90 seconds, clear sky above. SD card not mounting format as FAT32, reseat the card, try a different brand. OTA failed move closer to your router and retry. Boot loop erase flash with esptool.py --chip esp32s3 erase_flash then reflash clean.

 


🀝 Contributing

Open a bug report with your board version, firmware version, and serial monitor output. Open a discussion before writing code for new features. Test on real hardware before submitting a PR compile-only checks aren’t enough. One feature per PR, keep it focused. All contributors are credited in the repo. If your code ships, your name is in it.

 


🧑 Sponsored by NextPCB

Thanks to NextPCB for supporting this project. If you’re building your own ESP32-DIV, upload the Gerbers from the repo and order directly. www.nextpcb.com Β 

Gerber files are in the GitHub repo. I use NextPCB upload the zip, default settings work fine, five boards cost just a few dollars and arrive in under two weeks. Order from NextPCB

 


πŸ’» Code and Files

Everything is open source. Firmware, schematics, Gerbers, and the web flasher are all on GitHub.

GitHub github.com/cifertech/ESP32-DIV
Web Flasher cifertech.github.io/ESP32-DIV
Wiki github.com/cifertech/ESP32-DIV/wiki

 


πŸš€ Final Thoughts

ESP32-DIV is the most complete version of this project so far. WiFi, Bluetooth, 2.4GHz, Sub-GHz, IR, RFID, NFC, GPS all from one board, all open source, all flashable from a browser in under a minute. The hardware will keep evolving. The new shield revision is still in progress and when it lands it’s going to open up a lot. The firmware has an active contributor community and new PRs come in regularly. If you build one, share it. If you find a bug, open an issue. If you want to add something, open a discussion first. That’s all for this one.