Repository navigation
Releases
NRSuite Firmware 1.0.0-rc.1
Release type: Release candidate
FW_VERSION: 1.0.0-rc.1
Authorized testing only. Use NRSuite firmware only with devices and networks
you own or have explicit written permission to test.
Compatibility
Firmware: 1.0.0-rc.1
Android: 1.0.0-rc.1 (recommended)
Protocol: 1.0
Changes
- Firmware RC version bump to
1.0.0-rc.1. - Release workflow validates and classifies alpha, beta, RC, and stable tags.
FW_VERSIONis injected without the leadingv.- RC builds produce
rc-nrsuite-*.binassets inrc-release/. - Stable builds use
release/nrsuite-*.bin. - Alpha/beta builds use
beta-release/beta-nrsuite-*.bin. - RC and prerelease builds are marked GitHub pre-releases.
Target matrix
| Target | Environment |
|---|---|
| ESP32-C3 | esp32-c3 |
| ESP32-C5 | esp32-c5 |
| ESP32-S3 | esp32-s3 |
| ESP32-S3 PSRAM | esp32-s3-psram |
| ESP32-S2 | esp32-s2 |
| ESP32 classic | esp32-devkit |
All images are merged and flashed at offset 0x0.
Install / upgrade
- Download the matching
rc-nrsuite-*.binfile from the firmware release. - Open the NRSuite Android app.
- Open Firmware Flasher.
- Select the matching target board.
- Choose the downloaded firmware file under local firmware selection.
- Confirm the target and tap Flash firmware.
Firmware flashing uses the USB connection from the Android app. ADB and a
desktop computer are not required for normal installation.
Automated verification
Firmware environments: 6/6 built successfully
Native tests: 15 passed, 0 failed
FW_VERSION string: 1.0.0-rc.1 present in all six merged images
Built environments:
esp32-c5
esp32-c3
esp32-s3
esp32-s3-psram
esp32-s2
esp32-devkit
Matching Android app
Hardware validation
The maintainer confirmed on 2026-11-09 that the physical RC hardware
verification matrix was completed against the RC candidate.
v1.0.0-beta.3.2.0
Authorized testing only. Active Wi-Fi, BLE, WPS, deauthentication,
capture, portal, IR, BadUSB, flashing, and related features must only be used
on devices and networks you own or have explicit written permission to test.
Highlights
- Dual native USB CDC/JTAG and UART0 transport support in one firmware image.
- Pull-based
SCAN_RESULTSwith CRC32 validation, offsets, bounded snapshots,
and retry support for lossy UART links. - WPS hybrid discovery: active Wi-Fi scan candidates with passive WPS-IE
enrichment and optional non-WPS candidates. - Expanded STATUS telemetry: heap, PSRAM, CPU, flash, SDK, active transport,
and optional internal chip/die temperature. - New
esp32-s3-psramimage for ESP32-S3 N4R2-class boards, with PSRAM-backed
sniffer queues and internal-RAM fallback. - Captive Portal forced routes, DHCP/wildcard DNS, and optional plaintext IPv4
UDP custom-resolver interception. - BLE HID heap guard, structured low-memory errors, and HID session tracking
through pairing. - ESP32-S2 builds intentionally exclude Captive Portal, Evil Twin, and NRuGochi.
- Pinned dependencies for reproducible builds:
- ArduinoJson 7.4.3
- AsyncTCP 3.5.0
- ESPAsyncWebServer 3.12.1
- Adafruit PN532 1.3.4
- NimBLE-Arduino 2.5.1
Firmware images
All images are merged full-flash binaries and must be written at offset 0x0.
| Board | Environment | Image |
|---|---|---|
| ESP32-C3 DevKitM-1 | esp32-c3 |
NRSuite-1.0.0-beta.3.2.0-esp32c3.bin |
| ESP32-C5 DevKitC-1 | esp32-c5 |
NRSuite-1.0.0-beta.3.2.0-esp32c5.bin |
| ESP32-S3 DevKitC-1 | esp32-s3 |
NRSuite-1.0.0-beta.3.2.0-esp32s3.bin |
| ESP32-S3 DevKitC-1 N4R2 | esp32-s3-psram |
NRSuite-1.0.0-beta.3.2.0-esp32s3-psram.bin |
| ESP32-S2 Saola-1 | esp32-s2 |
NRSuite-1.0.0-beta.3.2.0-esp32s2.bin |
| ESP32 DevKit | esp32-devkit |
NRSuite-1.0.0-beta.3.2.0-esp32classic.bin |
The C5 bootloader is included at 0x2000 inside the merged image, but the
image itself is written at 0x0.
ESP32-S2 feature exclusions
ESP32-S2 builds do not advertise or provide:
- Captive Portal
- Evil Twin
- NRuGochi / auto-handshake
The Android app disables the corresponding cards and shows
Not supported on ESP32-S2.
ESP32-C5 BLE HID limitation
BLE HID startup uses the release guard of 90 KiB free heap and 48 KiB
largest allocatable block. C5 runtime memory can fall below that threshold
depending on the build and active modules. When it does, firmware rejects BLE
HID startup with a structured low-memory error instead of risking an unstable
connection. The esp32-c5-ble-heap-diag profile is diagnostic-only and is not
included in this release.
Flashing
Use the NRSuite Android flasher or esptool with the matching chip and image:
esptool.py --chip esp32c3 --port /dev/ttyACM0 \
write_flash 0x0 NRSuite-1.0.0-beta.3.2.0-esp32c3.binv1.0.0-beta.3.1.2
NRSuite Firmware v1.0.0-beta.3.1.2
Binaries
Flash the merged binary for your board using the NRSuite Android app flasher or esptool:
esptool.py --port /dev/ttyUSB0 --baud 921600 write_flash 0x0 <binary>.bin| Board | Environment | Binary pattern |
|---|---|---|
| ESP32-C5 DevKitC-1 | esp32-c5 |
nrsuite-esp32c5-*.bin |
| ESP32-C3 DevKitM-1 | esp32-c3 |
nrsuite-esp32c3-*.bin |
| ESP32-S3 DevKitC-1 | esp32-s3 |
nrsuite-esp32s3-*.bin |
| ESP32-S2 Saola-1 | esp32-s2 |
nrsuite-esp32s2-*.bin |
| ESP32 DevKit | esp32-devkit |
nrsuite-esp32classic-*.bin |
Alpha/beta/RC tags use the same names with a
beta-prefix.
The C5 merged image starts at flash offset0x0and contains its
bootloader at0x2000.
Verification
Verify your download against checksums.txt before flashing:
# Linux/macOS
sha256sum -c checksums.txt
# Windows (PowerShell)
certutil -hashfile <binary>.bin SHA256Compatibility
Requires NRSuite Android app v1.0.0-beta.3.1.2. See the
firmware README
for the current compatibility table.
For authorized security testing use only. See LEGAL.md.
# NRSuite Firmware 1.0.0-beta.3.1.1 - Hotfix
NRSuite Firmware v1.0.0-beta.3.1.1
Binaries
Flash the merged binary for your board using the NRSuite Android app flasher or esptool:
esptool.py --port /dev/ttyUSB0 --baud 921600 write_flash 0x0 <binary>.bin| Board | Environment | Binary pattern |
|---|---|---|
| ESP32-C5 DevKitC-1 | esp32-c5 |
nrsuite-esp32c5-*.bin |
| ESP32-C3 DevKitM-1 | esp32-c3 |
nrsuite-esp32c3-*.bin |
| ESP32-S3 DevKitC-1 | esp32-s3 |
nrsuite-esp32s3-*.bin |
| ESP32-S2 Saola-1 | esp32-s2 |
nrsuite-esp32s2-*.bin |
| ESP32 DevKit | esp32-devkit |
nrsuite-esp32classic-*.bin |
Alpha/beta/RC tags use the same names with a
beta-prefix.
The C5 merged image starts at flash offset0x0and contains its
bootloader at0x2000.
Verification
Verify your download against checksums.txt before flashing:
# Linux/macOS
sha256sum -c checksums.txt
# Windows (PowerShell)
certutil -hashfile <binary>.bin SHA256Compatibility
Requires NRSuite Android app v1.0.0-beta.3.1.1. See the
firmware README
for the current compatibility table.
For authorized security testing use only. See LEGAL.md.
NRSuite Firmware 1.0.0-beta.3.1
Binaries
Flash the merged binary for your board using the NRSuite Android app flasher or esptool:
esptool.py --port /dev/ttyUSB0 --baud 921600 write_flash 0x0 <binary>.bin| Board | Environment | Binary pattern |
|---|---|---|
| ESP32-C5 DevKitC-1 | esp32-c5 |
nrsuite-esp32c5-*.bin |
| ESP32-C3 DevKitM-1 | esp32-c3 |
nrsuite-esp32c3-*.bin |
| ESP32-S3 DevKitC-1 | esp32-s3 |
nrsuite-esp32s3-*.bin |
| ESP32-S2 Saola-1 | esp32-s2 |
nrsuite-esp32s2-*.bin |
| ESP32 DevKit | esp32-devkit |
nrsuite-esp32classic-*.bin |
Alpha/beta/RC tags use the same names with a
beta-prefix.
The C5 merged image starts at flash offset0x0and contains its
bootloader at0x2000.
Verification
Verify your download against checksums.txt before flashing:
# Linux/macOS
sha256sum -c checksums.txt
# Windows (PowerShell)
certutil -hashfile <binary>.bin SHA256Compatibility
Requires NRSuite Android app v1.0.0-beta.3.1. See the
firmware README
for the current compatibility table.
For authorized security testing use only. See LEGAL.md.
NRSuite Firmware 1.0.0-beta.3
NRSuite Firmware v1.0.0-beta.3
Binaries
Flash the merged binary for your board using the NRSuite Android app flasher or esptool:
esptool.py --port /dev/ttyUSB0 --baud 921600 write_flash 0x0 <binary>.bin| Board | Environment | Binary pattern |
|---|---|---|
| ESP32-C5 DevKitC-1 | esp32-c5 |
nrsuite-esp32c5-*.bin |
| ESP32-C3 DevKitM-1 | esp32-c3 |
nrsuite-esp32c3-*.bin |
| ESP32-S3 DevKitC-1 | esp32-s3 |
nrsuite-esp32s3-*.bin |
| ESP32-S2 Saola-1 | esp32-s2 |
nrsuite-esp32s2-*.bin |
| ESP32 DevKit | esp32-devkit |
nrsuite-esp32classic-*.bin |
Alpha/beta/RC tags use the same names with a
beta-prefix.
The C5 merged image starts at flash offset0x0and contains its
bootloader at0x2000.
Verification
Verify your download against checksums.txt before flashing:
# Linux/macOS
sha256sum -c checksums.txt
# Windows (PowerShell)
certutil -hashfile <binary>.bin SHA256Compatibility
Requires NRSuite Android app v1.0.0-beta.3. See the
firmware README
for the current compatibility table.
For authorized security testing use only. See LEGAL.md.
NRSuite Firmware 1.0.0-beta.2 - BLE Recon & Defense Support
NRSuite Firmware 1.0.0-beta.2
Authorized testing only. Use only on networks and devices you own or have explicit permission to test. See the firmware LEGAL.md.
Firmware beta.2 adds Wi-Fi/BLE defense support, BLE recon, hidden AP detection, client detection, and persistent device identity.
Firmware highlights
- Wi-Fi scan, monitor-mode packet capture, EAPOL filtering, deauth, beacon spam, captive portal, and Evil Twin.
- Deauth Detector: passive deauth/disassoc detection with async events.
- Client Detector: probe/assoc/reassoc/auth monitoring with optional active reconnect trigger.
- Hidden AP Revealer: hidden AP detection, candidate SSIDs, and association-based SSID resolution.
- BLE Scanner: address, name, RSSI, manufacturer data, service UUIDs, and raw payload.
- BLE GATT Profile: read-only service and characteristic enumeration.
- BLE HID: keyboard, mouse, realtime input, and DuckyScript payloads.
- BadUSB and USB Mass Storage on ESP32-S2/S3.
- Persistent
NRxxxxxxxdevice ID in NVS, exposed throughSTATUS.device_id.
Board support
| Board | Wi-Fi | BLE HID / Scanner / GATT | MSC / BadUSB |
|---|---|---|---|
| ESP32-C3 | Yes | Yes | No |
| ESP32-S3 | Yes | Yes | Yes |
| ESP32-S2 | Yes | No | Yes |
| Classic ESP32 devkit | Yes | Yes | No |
Firmware binaries
| File | Target |
|---|---|
beta-nrsuite-esp32c3.bin |
ESP32-C3 |
beta-nrsuite-esp32s3.bin |
ESP32-S3 |
beta-nrsuite-esp32s2.bin |
ESP32-S2 |
beta-nrsuite-esp32-generic.bin |
Classic ESP32 devkit |
Local draft hashes:
587daf7eef74950bbc9b9626201e74fdde31396090f737f1d1102dac87d5e72f beta-nrsuite-esp32c3.bin
c050780b538cc2a005286c3242f7d34528e881e0990aa59c47c2e322ef5b3b6d beta-nrsuite-esp32s3.bin
351be41dac13c94728d31d0e9cf35870194fef064c04503df5486d6450464e87 beta-nrsuite-esp32s2.bin
e192377b182c301fa302123521516f4b70d2f364fafb23a2d0c9b7043167544d beta-nrsuite-esp32-generic.bin
Final release hashes will be generated by the tagged firmware release workflow.
Flashing
Recommended: use the in-app Firmware Flasher with the matching merged .bin.
Manual:
esptool.py --port /dev/ttyUSB0 --baud 921600 write_flash 0x0 beta-nrsuite-esp32c3.binReplace the filename with the binary for your board.
Compatibility
| Firmware | Android app | Protocol |
|---|---|---|
| 1.0.0-beta.2 | 1.0.0-beta.2 | 1.0 |
Android release: https://github.com/7wp81x/NRSuite-Android/releases/tag/v1.0.0-beta.2
Known limitations
- WPA/WPA2 verification supports descriptor v2; v3/AES-CMAC is not supported.
- Captive Portal and Evil Twin share one firmware AP resource.
- BLE GATT is read-only.
- ESP32-S2 has no BLE.
- ESP32-C3 and classic ESP32 have no native USB-OTG, so MSC/BadUSB are unavailable.
- Full-image USB reflashing only; OTA is not planned for 4 MB boards.
Next
- Deferred: FastPair ID, KARMA/MANA detection, extra export actions.
- v2: ESP-NOW mesh, mesh chat, distributed sensing, triangulation.
- Later: IR, Sub-GHz, nRF24, RFID/NFC, LoRa, ESP32-CAM.
Draft firmware release note. Generate final hashes after the tagged CI build.
NRSuite Firmware 1.0.0-beta.1
NRSuite Firmware 1.0.0-beta.1
First public beta release of the NRSuite ESP32 firmware.
Pairs with NRSuite Android v1.0.0-beta.1: protocol version 1.0.
Authorized use only. For security research and testing on networks and devices you own or have explicit written permission to test. See LEGAL.md.
What's in this release
| Module | Boards | Description |
|---|---|---|
| Wi-Fi Scan | All | Active AP scan: SSID, BSSID, channel, RSSI, security type |
| Packet Sniffer | All | Monitor-mode PCAP capture, fixed channel or hopping, EAPOL-only filter |
| Deauthentication | All | Raw 802.11 deauth frame injection, broadcast or targeted |
| Deauth + Capture | All | Deauth followed by immediate EAPOL capture for WPA handshake collection |
| Beacon Spam | All | Fake beacon injection, random BSSID, hidden SSID support |
| Captive Portal | All | SoftAP with async HTTP server and custom HTML upload |
| BLE HID | C3, S3, DevKit | Bluetooth keyboard/mouse emulation, DuckyScript execution |
| BadUSB | S2, S3 | USB HID keyboard injection via TinyUSB, DuckyScript from storage |
| Mass Storage | S2, S3 | USB MSC mode, FAT filesystem, file read/write/delete over USB |
| Heartbeat | All | Periodic uptime and free-heap event to the app |
Firmware files
| File | Board | MCU | Native USB | BLE | BadUSB / MSC |
|---|---|---|---|---|---|
beta-nrsuite-esp32c3.bin |
ESP32-C3 DevKitM-1 | ESP32-C3 | Yes (CDC) | Yes | No |
beta-nrsuite-esp32s3.bin |
ESP32-S3 DevKitC-1 | ESP32-S3 | Yes (TinyUSB) | Yes | Yes |
beta-nrsuite-esp32s2.bin |
ESP32-S2 Saola-1 | ESP32-S2 | Yes (TinyUSB) | No | Yes |
beta-nrsuite-esp32-generic.bin |
Classic ESP32 DevKit | ESP32 | No (CP2102/CH340) | Yes | No |
New to NRSuite? Start with the ESP32-C3: native USB CDC, BLE support, no external UART chip needed, and the cheapest widely-available board.
Each .bin is a merged flash image (bootloader + partition table + app) produced by merge_script.py. Always flash at offset 0x0.
Flashing
Option A: NRSuite Android app (recommended, no PC needed)
- Install NRSuite Android v1.0.0-beta.1
- Connect your ESP32 via USB OTG
- Open the app, go to the flasher screen, select your board and the firmware binary
Option B: esptool
esptool.py --port /dev/ttyUSB0 --baud 921600 write_flash 0x0 beta-nrsuite-esp32c3.binReplace the filename and port with your board and system. On Windows the port is COM3 or similar.
Option C: PlatformIO (build from source)
git clone https://github.com/7wp81x/nrsuite-firmware.git
cd nrsuite-firmware
pio run -e esp32-c3 --target uploadAvailable environments: esp32-c3, esp32-s3, esp32-s2, esp32-devkit.
Verify release artifacts
60152ea65676d2d3e8f1c6a99882184a1cf01055da4d217af35253367555078e beta-nrsuite-esp32c3.bin
d6e47d7cbb92971f2e048ca4d80441be130dfaf3b1b9ad4fbac4756a0f35b49b beta-nrsuite-esp32s3.bin
a9bf9457e29d8185a832527558a64a6dfcd2548b3b040f1c91d416cf40dca16f beta-nrsuite-esp32s2.bin
e02ed6dadfbf473dbbf0da4c9fb18d0b5258a68b11fea562741f43f1c763326e beta-nrsuite-esp32-generic.bin
sha256sum -c SHA256SUMSCompatibility
| Firmware | App | Protocol |
|---|---|---|
| v1.0.0-beta.1 | v1.0.0-beta.1 | v1.0 |
The app negotiates features with the firmware at connect time. Unsupported modules for your board are hidden automatically.
Known limitations (beta)
- Defense modules (deauth detector, rogue AP detector, AirTag detector) not yet implemented: planned for v1.0
- ESP-NOW mesh networking not yet implemented: planned for v2.0
- Classic ESP32 DevKit requires an external CP2102/CH340 USB-UART bridge (built into most DevKit boards)
What's next
See FEATURES.md for the full roadmap.
v1.0: defense modules (deauth detector, rogue AP detector, AirTag/tracker detector)
v2.0: ESP-NOW mesh, multi-node distributed sensing, triangulation, ESP32-CAM node
Reporting issues
- Bugs / flashing issues -> open an issue using the bug report template
- Security vulnerabilities in the firmware -> see SECURITY.md, report privately
Built: 2026-09-21: FW_VERSION: 1.0.0-beta.1: Protocol: v1.0