ESP32-C5 Kismet firmware

Flash an ESP32-C5 board from this page and it becomes a capture source for Kismet on three radios: Wi-Fi on 2.4 and 5 GHz, IEEE 802.15.4 for Zigbee and Thread, and Bluetooth LE advertising. A board listens with one radio at a time, and Kismet's source definition picks it.

Install from the browser

Plug the board in by its native USB port, then press Install. Nothing to install on your computer.

This browser cannot talk to USB serial devices: it has no Web Serial. Open this page in Chrome or Edge 89 or newer on a computer, or flash the board with esptool, as below. The browser allows serial access only on an HTTPS page. Open https://oshri-almog.github.io/esp32c5-kismet-wifi-interface/.

The Install button needs JavaScript and the ESP Web Tools module from unpkg.com. If no button appears, flash the board with esptool, as below.

Needs a browser with Web Serial: Chrome or Edge 89 or newer on Windows, macOS or Linux, or another Chromium-based browser that has it, such as Opera. Safari has no Web Serial. Firefox added Web Serial in version 151, after you allow a site permission add-on it offers, and recent Chrome on Android has it too; this page has not been tried in either.

Installs version v0.1.0-3-gc5d3534, built from this project's source by GitHub Actions (details).

Before you press Install

Steps

  1. Plug the board into the computer by its native USB port.
  2. Press Install above.
  3. The browser lists serial ports. Choose the board's port and press Connect. It is a COM port on Windows, ttyACM on Linux and cu.usbmodem on macOS. If you are not sure which one it is, unplug the board and watch which entry goes away.
  4. In the window that opens, choose Install ESP32-C5 Kismet firmware.
  5. Erase device asks whether to erase the whole flash first. Either way works, and either way the board starts on Wi-Fi, because the image overwrites the place where the board keeps its last radio. Erasing takes longer and leaves nothing of the old contents; without it, flash beyond the firmware is left as it was, unused. Press Next.
  6. Confirm with Install.
  7. Wait until the window says Installation complete! Do not unplug the board while the progress bar runs. The board is then reset and starts the new firmware.
  8. Press Next, then close the window with its ×. While it is open, the browser keeps the port, and Kismet or a helper cannot open it.

After the install

The board boots in Wi-Fi mode and starts streaming over its USB port at once, ready for a Kismet source to open it. You do not set the radio here: Kismet's sources do. A Wi-Fi, Zigbee or Bluetooth LE source tells the board which radio to use, and the board reboots into it in about half a second if it was on another one. It remembers its last radio across resets and power cycles.

To check that the board captures, follow Check the result.

Known issue: a board that ran Zigbee can come up deaf to Wi-Fi

A board that was on 802.15.4 (Zigbee or Thread) when it was flashed can come up with a Wi-Fi radio that hears nothing. Its Wi-Fi source says it is capturing, but the packet count stays at 0 and no error follows. In the project's tests this happened both times a board was flashed while it was on 802.15.4, and not when it was flashed from Wi-Fi. An esptool reset did not cure it; the firmware's notes say unplugging the board does, which was not tried.

Troubleshooting has the details.

Next steps

The board is half of it. Kismet needs this project's esp32c5 source:

Nothing is uploaded

Your browser downloads the firmware image from this site and writes it to the board over USB. Nothing from the board or your computer is sent anywhere, and the page keeps no data.

Without the browser: esptool

This page's image is esp32c5-kismet-merged.bin, with its SHA-256 below. Releases from v0.1.0 on carry the same kind of image, built from their tag, as esp32c5-kismet-<version>-merged.bin with its SHA-256; see the releases. A release's image is a separate build of the same firmware, so its SHA-256 differs from this page's even for the same version: check it against the release's own .sha256 file. The image holds the bootloader, the partition table and the application, and is flashed at offset 0x0. With Python, in the folder where you saved the file (on Linux the port is /dev/ttyACM0 or similar):

python -m pip install esptool
python -m esptool --chip esp32c5 -p COM14 -b 460800 write_flash 0x0 esp32c5-kismet-merged.bin

Flashing the Firmware covers esptool, backups, flashing several boards, and building the firmware yourself with ESP-IDF 5.5.

This build

Version
v0.1.0-3-gc5d3534, as the board's log reports it (App version)
Commit
c5d3534
Image
firmware/esp32c5-kismet-merged.bin, 1,148,592 bytes, flashed at 0x0
SHA-256
09d049690122ed868e1cceb1e10d8b51b1afcb5b64334624a90598ac7e038b56
Built with
ESP-IDF v5.5.5, target esp32c5