Skip to content

FreeFi — ESP32-S WiFi Mesh Network

FreeFi is an open-source firmware for ESP32-S2/S3 microcontrollers that turns them into autonomous WiFi mesh nodes with wallet-gated P2P IRC chat, real-time AP topology maps, and encrypted peer-to-peer communication — no internet required.

Features

  • Mesh Node-Net — Nodes auto-discover and form a peer-to-peer WiFi mesh. Each node extends the network coverage.
  • P2P Encrypted Chat — Wallet-gated IRC chat routed through the mesh via the TribeWarez IRC bridge. Messages encrypted between peers.
  • AP Node Map — Every node serves a real-time web UI showing mesh topology, signal strength, and connected peers.
  • ESP32-S Optimized — Built for ESP32-S2/S3. Low power, high performance. Flashes via USB with esptool.py.
  • Open Source — Fully MIT-licensed. Build your own nodes, contribute, fork.

Quick Start

  1. Flash the firmware onto an ESP32-S board:
    bash
    pip install esptool
    esptool.py --port /dev/ttyUSB0 erase_flash
    esptool.py --port /dev/ttyUSB0 write_flash 0x0 freefi-esp32s-v0.1.0.bin
  2. Power on the board — it creates a FreeFi access point.
  3. Connect to the mesh WiFi and open the node's web UI at http://freefi.local.
  4. Join the mesh IRC chat at irc.tribewarez.com.

Architecture

FreeFi nodes form a decentralized WiFi mesh using ESP32-S2/S3 in SoftAP + Station mode:

[ESP32-S Node A] ←→ [ESP32-S Node B] ←→ [ESP32-S Node C]
       ↓                     ↓
  [WiFi Client]        [WiFi Client]
  • Mesh Layer: Each node operates as both an AP (accepting connections) and a station (connecting to peers). Nodes auto-discover via mDNS and maintain a neighbor table with signal strength metrics.
  • Encryption Layer: P2P messages are encrypted using NaCl box (curve25519-xsalsa20-poly1305) between peer public keys. Each node generates a keypair on first boot.
  • Application Layer: Wallet-gated IRC chat routed through the TribeWarez IRC bridge at irc.tribewarez.com. Messages are signed by the sender's wallet key and verified by the receiving node.

In-Browser Flashing

The FreeFi portal includes a WebSerial-based firmware flasher at freefi.tribewarez.com/flash.html:

  1. Connect your ESP32-S board via USB
  2. Open the flasher page in Chrome/Edge (WebSerial required)
  3. Select the firmware release from the dropdown
  4. Click Flash — the firmware is written directly from the browser

The flasher communicates with the ESP32 via the ESP download protocol over WebSerial, fetches firmware binaries from the GitHub releases, and reports progress in real-time.

Flash Sequence:

  1. Sync with ESP32 at 115200 baud (auto-detects connected port)
  2. Switch to 921600 baud for data transfer
  3. Write firmware binary to flash at offset 0x0
  4. Verify CRC32 checksum
  5. Reset the board

Firmware Downloads

Pre-built firmware binaries are available at freefi.tribewarez.com/download.html:

BoardBinaryVersion
ESP32-S2freefi-esp32s2-v0.1.0.binv0.1.0
ESP32-S3freefi-esp32s3-v0.1.0.binv0.1.0

Flash via command line:

bash
pip install esptool
esptool.py --port /dev/ttyUSB0 write_flash 0x0 freefi-esp32s2-v0.1.0.bin

Mesh IRC Chat

The P2P encrypted chat is accessible through:

  • Web Client: irc.tribewarez.com — connects through the TribeWarez IRC bridge
  • Mesh Client: Direct P2P between mesh nodes without internet (local mesh only)
  • Mobile: Any IRC client pointed at irc.tribewarez.com:6697 (TLS)

Chat messages are:

  1. Signed by the sender's wallet key
  2. Encrypted to the recipient's public key (p2p) OR broadcast encrypted (group)
  3. Routed through the mesh hop-by-hop until they reach the destination
  4. Verifiable on-chain via the IRC bridge for public channels

Resources

TribeWarez Blockchain Ecosystem