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
- 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 - Power on the board — it creates a FreeFi access point.
- Connect to the mesh WiFi and open the node's web UI at
http://freefi.local. - 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:
- Connect your ESP32-S board via USB
- Open the flasher page in Chrome/Edge (WebSerial required)
- Select the firmware release from the dropdown
- 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:
- Sync with ESP32 at 115200 baud (auto-detects connected port)
- Switch to 921600 baud for data transfer
- Write firmware binary to flash at offset 0x0
- Verify CRC32 checksum
- Reset the board
Firmware Downloads
Pre-built firmware binaries are available at freefi.tribewarez.com/download.html:
| Board | Binary | Version |
|---|---|---|
| ESP32-S2 | freefi-esp32s2-v0.1.0.bin | v0.1.0 |
| ESP32-S3 | freefi-esp32s3-v0.1.0.bin | v0.1.0 |
Flash via command line:
pip install esptool
esptool.py --port /dev/ttyUSB0 write_flash 0x0 freefi-esp32s2-v0.1.0.binMesh 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:
- Signed by the sender's wallet key
- Encrypted to the recipient's public key (p2p) OR broadcast encrypted (group)
- Routed through the mesh hop-by-hop until they reach the destination
- Verifiable on-chain via the IRC bridge for public channels
Resources
- Portal: freefi.tribewarez.com → defi.tribewarez.com
- IRC Chat: irc.tribewarez.com
- Source: GitHub — TribeWarez