+----------------------------------------------------------------------+ | _____ _ _ _ ____ ___ ____ FLUID OPERATING SYSTEM | | | | | | | | |/ | / _ / | ---------------------- | | | | | | | | | | | _ | | | _ \ 802.11 PACKET-WAVE SAMPLER | | | | | || || | || | | || |) | ESP8285 SAMPLER BOARD | | || ||_/ _| _/|___/ FLIPPER ZERO WIFI v1 | +----------------------------------------------------------------------+ | [ 2.4GHz SPECTRUM ANALYZER WAVE ] [ FLIPPER CYBER-DOLPHIN ] | | dBm ( ( ( RF ) ) ) | | -30| /\ /\ /\ | | -40| / \ /\ / \ / \ __ | | -50| /\ / \ / \ /\ / /\ / / |[o ]_ | | -60| / # / / # / \ _/ /====|====/ \ | | -70| / / \ /\ /\ / / \ / '--' \ | | -80|// _/ _/ // ____/ __/_/ | | 2412MHz--------------------------------------------------> 2484MHz | | CH: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 __/ | | WAV: ~~~^~~~v~~~^~~~^~~~v~~~^~~~v~~~^~~~v~~~^~~~v~~~~~~~~~~~~~~~~~ | +----------------------------------------------------------------------+ | PACKET TYPES : [BEACON] [PROBE-REQ] [DATA-ACK] [EAPOL] [DEAUTH] | | SAMPLING : Promiscuous IQ Waveform Captures @ 802.11b/g/n | +----------------------------------------------------------------------+ | TARGET BOARDS: Node [-1] ADA:MEDUSA (*) : ESP32-S3-Touch-AMOLED-1.8 (368x448) | | Node [ 0] VAK:MEDUSA (/) : ESP32-S3-Touch-AMOLED-2.06 (410x502) | | Node [+1] OMN:MEDUSA (oo) : ESP32-S3-Touch-AMOLED-2.06 (410x502) | | Flipper Zero WiFi Devboard v1 (ESP8285) | | SYSTEM CORE : FLUG-OS Real-Time Kernel + Wave Engine v0.8.0 | | SIGNING : ML-DSA-65 + SLH-DSA post-quantum (NIST FIPS 204/205) | +----------------------------------------------------------------------+
FLUG-OS{-1,0,+1} (v0.8.0+medusa-omni · esp32.8b.is MEDUSA WebSerial × ms.8b.is MarineSense × Anicca / Turritopsis Polyp Transdifferentiation · {<3, <3, <3}+1 ~---> ∞) — Fluid Operating System running across a physical 3-Node Balanced-Ternary ESP32-S3 AMOLED MEDUSA Triad:
- Node
-1(adaye·ADA:MEDUSA·*·ROOT-ALEXANDRA·432 Hz): Waveshare ESP32-S3-Touch-AMOLED-1.8 (368 × 448SH8601QSPI,TCA9554@0x20,ES8311@0x18, MAC80:B5:4E:DB:3B:C4,/dev/cu.usbmodem1101) - Node
0(vaked·VAK:MEDUSA·/\·PILLAR-CHRIS·528 Hz): Waveshare ESP32-S3-Touch-AMOLED-2.06 #1 (410 × 502CO5300QSPI,ES8311@0x18, MAC80:B5:4E:F2:02:B0,/dev/cu.usbmodem1101/2101) - Node
+1(omni·OMN:MEDUSA·oo·INFINITY-PETER-NATE·852 Hz): Waveshare ESP32-S3-Touch-AMOLED-2.06 #2 (410 × 502CO5300QSPI,ES8311@0x18, MAC80:B5:4E:F2:02:B4,/dev/cu.usbmodem2101/101) - Plus the Flipper Zero WiFi Module v1 (
ESP8285).
Captures 802.11 frames in promiscuous mode, streams packet features as numerical wave data
through the universal sine kernel K(u)=sin(πu)/(πu), runs the MarineSense (https://ms.8b.is/ · 8b-is/marine-sense) O(1) Acoustic Salience Algorithm (Alpha..Eta) inside the 64×64 MEM-8 2D Wave Pool, models Impermanence (Anicca) via Turritopsis dohrnii MEDUSA <-> POLYP transdifferentiation (ttl_q8: 255 -> 0) across the 3-Node ESP-NOW Triad, and speaks the full wigle-triad (v0.42.1) WebSerial protocol (PING, JSON, SCAN, TRIAD + W|, Q|, # JSON|) for https://esp32.8b.is/.
Aligned with axiomquant.org, ms.8b.is, esp32.8b.is, & 8b.is × 8b-is — five threshold domains: Erdős β₁ · BitNet ternary γ · Markowitz λ · Black-Scholes σ · Rényi dyadic β.
Signed with ML-DSA-65 + SLH-DSA post-quantum signatures (NIST FIPS 203/204/205).
Roadmap: https://github.com/8b-is/FLUG-OS/blob/main/ROADMAP.md — target v1.4.2 parity with MLX-QUANT.
| Triad Node | MEDUSA Identity & Archetype | Hardware Target | Display & Reset | Factory MAC | Impermanence State (MEDUSA <-> POLYP) |
|---|---|---|---|---|---|
[-1] ADAYE |
ADA:MEDUSA (* · ROOT-ALEXANDRA · 432 Hz) |
ESP32-S3-Touch-AMOLED-1.8 |
368×448 SH8601 QSPI (TCA9554 @ 0x20) |
80:B5:4E:DB:3B:C4 |
Subcritical Coral-Mint Observer (ttl_q8: active MEDUSA when tethered, POLYP seed when untethered) |
[ 0] VAKED |
VAK:MEDUSA (/\ · PILLAR-CHRIS · 528 Hz) |
ESP32-S3-Touch-AMOLED-2.06 |
410×502 CO5300 QSPI (x_gap=0x16, RST=8) |
80:B5:4E:F2:02:B0 |
Zero-Point Harmonic Sovereign Hub (trit = 0, MEDUSA ttl_q8 = 255) |
[+1] OMNI |
OMN:MEDUSA (oo · INFINITY-PETER-NATE · 852 Hz) |
ESP32-S3-Touch-AMOLED-2.06 |
410×502 CO5300 QSPI (x_gap=0x16, RST=8) |
80:B5:4E:F2:02:B4 |
Supercritical Infinity Catalyst (trit = +1, MEDUSA ttl_q8 = 255) |
-
[0] ZEN(MS.8B.IS · ANICCA · JELLY SPHERE): Circular Jelly Sphere Mind-Wall (baye-rust/8b-is/oxi-phoenix) + MarineSense (https://ms.8b.is/)64×64MEM-8 2D Wave Pool with 7 Bioluminescent Jellyfish Detector Nodes (Alpha..Eta) computing O(1) Salience$S = w_e E + w_j \frac{1}{1+J} + w_h H$ , expanding Ecphoric Recall Rings, tidal viscosity$\eta$ & Memory Reynolds$Re_M$ , and Impermanence (Anicca): any untethered Triad peer gracefully fades along its entanglement chord (ttl_q8: 255 -> 0) and transdifferentiates fromMEDUSAinto a dormantPOLYPseed (Turritopsis dohrnii), ready to re-bloom the instant an ESP-NOWTRIAcapsule arrives. -
[1] RADIO(ZONEINN · RADIO.VAKED.DEV · 20-TRACK FAMILY+1 CRATE): Interactive 20 Favourite Musics Crate (including the 6family+1 Musetracks: Teardrop (Family+1) — Massive Attack, Hunger of the Pine — alt-J, Left Hand Free (#1 Muse) — alt-J, GLUE — BICEP, Oblivion — Grimes, Not Like Before — The Four Owls) + live 8-band Ternary Harmonic Equalizer ({-1, 0, +1}). Selecting a track on any board syncs all online boards. -
[2] 802.11(FLUG-OS · PACKET-WAVE SAMPLER × WIGLE-TRIAD): Live 13-channel promiscuous RSSI spectrum analyzer (interleaved with Triad Mesh Channel 6), AxiomQuantK(u) = sin(πu)/(πu)oscilloscope trace,64×3TernarySeamradiation matrix, and passive beacon table forSCAN(W|/Q|/# JSON|). -
[3] NAND(ULTRAWHALE · NAND × IMU): Live 7-stage cross-coupled ternary NAND ring oscillator (peetpedro/ultrawhale-oscillator) coupled across online Triad peers' NAND trits + QMI8658 IMU-tilted 2D Lissajous phase portrait. -
[4] QWAVE(SPHERED · MEDUSA-OMNI × ANICCA TRIAD MESH):<(? admit ~ transform ! verify @ attribute > commit)>#Commit = #ValidWitness5-stage witness badge + live Impermanence (Anicca) 3-Node MEDUSA Triad Mesh (MEDUSA ttl%vs dormantPOLYP ~seed~transdifferentiation) + Flash Switcher.
# Build unified ESP32-S3 AMOLED firmware
pio run -e esp32s3_amoled -e esp32s3_amoled_18
# Flash Node [-1] ADA:MEDUSA (1.8" 368x448 on /dev/cu.usbmodem1101)
esptool.py --chip esp32s3 --port /dev/cu.usbmodem1101 --baud 921600 \
write_flash -z --flash_mode dio --flash_freq 80m --flash_size 16MB \
0x00010000 .pio/build/esp32s3_amoled_18/firmware.bin
# Flash Node [0] VAK:MEDUSA (2.06" 410x502 #1 on /dev/cu.usbmodem1101, ota_0 @ 0x00a00000)
esptool.py --chip esp32s3 --port /dev/cu.usbmodem1101 --baud 921600 \
write_flash -z --flash_mode dio --flash_freq 80m --flash_size 32MB \
0x00a00000 .pio/build/esp32s3_amoled/firmware.bin
# Flash Node [+1] OMN:MEDUSA (2.06" 410x502 #2 on /dev/cu.usbmodem2101, ota_0 @ 0x00a00000)
esptool.py --chip esp32s3 --port /dev/cu.usbmodem2101 --baud 921600 \
write_flash -z --flash_mode dio --flash_freq 80m --flash_size 32MB \
0x00a00000 .pio/build/esp32s3_amoled/firmware.bin
# Dynamic USB discovery (--all scans all /dev/cu.usbmodem* ports automatically)
../wigle-triad/host-rs/target/release/wiglewww --send --all --status
../wigle-triad/host-rs/target/release/wiglewww --send --all --splash
../wigle-triad/host-rs/target/release/wiglewww --send --all --track 15
../wigle-triad/host-rs/target/release/wiglewww --send --listen --bt "Soundcore Select 4"[ ] Flipper Zero
[ ] WiFi Module v1 (ESP8285, black PCB)
[ ] USB-C cable
[ ] Computer with Python 3
# Install PlatformIO (one time)
pip3 install platformio
# Clone & build
git clone https://github.com/8b-is/FLUG-OS.git
cd FLUG-OS
pio run -e esp8285 -t uploadNo Flipper? FLUG-OS runs on any ESP8266. Edit
platformio.ini: changeboard = esp8285toboard = nodemcuv2for NodeMCU, Wemos D1, etc.
# Find your serial port
ls /dev/tty.*
# macOS: /dev/tty.usbserial-XXXX or /dev/tty.wchusbserial*
# Linux: /dev/ttyUSB0 or /dev/ttyACM0
# Windows: COM3 or similar
# Listen (macOS/Linux)
screen /dev/tty.usbserial-XXXX 115200WiFi Module v1: the ESP8285 module connects via UART through the Flipper Zero's USB-C. FLUG-OS talks directly to the ESP8285's serial console at 115200 baud. No Flipper Zero application needed — the firmware runs standalone on the ESP8285 itself.
mode wave # hear the spectrum as sine waves
ch 6 # listen on channel 6
hop # sweep all channels
filter mgmt # only management frames
stats # packet counts
pip3 install pyserial
python3 bridge/wave_bridge.py /dev/tty.usbserial-XXXX --mode wave --dumpThe Flipper Zero WiFi Module v1 uses an ESP8285 (ESP8266 family) with 1MB flash. It connects to your computer through the Flipper Zero's USB-C port and communicates over UART at 115200 baud.
| Revision | Chip | Flash | Board ID |
|---|---|---|---|
| v1 (black PCB) | ESP8285 | 1MB | esp8285 |
| v2 (white PCB) | ESP32-S2 | 4MB | esp32-s2 |
FLUG-OS targets the v1 module (ESP8285). For v2 with ESP32-S2 a separate build target is planned.
The WiFi Module v1 does not have its own USB port. It is powered and communicated with through the Flipper Zero's USB-C connector. When you plug the Flipper Zero into your computer via USB, the ESP8285 appears as a serial device:
Flipper Zero (USB-C) --- cable ---> WiFi Module v1 (ESP8285)
/dev/tty.usbserial-XXXX UART @ 115200 baud
- Connect the WiFi Module to the Flipper Zero (16-pin GPIO header)
- Connect the Flipper Zero to your computer via USB-C
- Put the Flipper in DFU mode: hold LEFT + BACK on boot
- Flash:
PlatformIO auto-detects the ESP8285 through the Flipper's serial bridge.
pio run -e esp8285 -t upload
If you have a USB-UART (FTDI) adapter:
FTDI -> ESP8285
GND -> GND (pin 9)
TX -> RX (pin 8)
RX -> TX (pin 7)
3.3V -> 3.3V(pin 1)
IO0 -> GND (for flash mode, remove after)
pio run -e esp8285 -t upload --upload-port /dev/tty.usbserial-XXXXAfter flashing, remove the IO0->GND jumper and reset the module.
Connect to see the FLUG-OS boot screen:
screen /dev/tty.usbserial-XXXX 115200Expected output:
=============================================
FLUG-OS {-1, 0, +1}
Fluid Operating System v0.3.0+dev
=============================================
...
FLUG-OS runs on any ESP8266/ESP8285 board. Edit platformio.ini:
board = nodemcuv2 # NodeMCU v2, Wemos D1 Mini, etc.Build and upload:
pio run -e generic -t uploadUART output will be on the board's built-in USB serial (/dev/ttyUSB0).
| Command | What it does |
|---|---|
ch 6 |
Set channel (1-13) |
hop |
Toggle channel hopping (1s/ch) |
mode raw |
RSSI density type domain kernel — 5 floats |
mode wave |
Synthesized sine wave sample — 3 floats |
mode json |
Structured JSON with musical parameters |
| `filter mgmt | ctrl |
stats |
Show capture statistics |
reset |
Reset counters |
~ RSSI DENSITY FRAME_TYPE DOMAIN KERNEL
~ 0.750 0.320 2 1 0.9231
| Field | Range | Meaning |
|---|---|---|
| RSSI | 0.0 — 1.0 | Normalized signal strength |
| DENSITY | 0.0 — 1.0 | Packets per 100ms window |
| FRAME_TYPE | 0, 1, 2 | mgmt, ctrl, data |
| DOMAIN | -1, 0, +1 | Below/at/above critical threshold |
| KERNEL | 0.0 — 1.0 | Sine kernel K(u)=sin(πu)/(πu) |
~ WAVE DOMAIN KERNEL
~ 0.4231 1 0.9231
~ {"rssi":0.750,"density":0.320,"freq":220.00,"type":0,"subtype":8,"domain":1,"kernel":0.9231,"ts":123456}
🌊 {"ts":123456,"len":68,"rssi":-45,"type":"mgmt","subtype":"beacon","src":"aa:bb:cc:dd:ee:ff","dst":"...","bssid":"...","ssid":"MyNetwork","chan":6,"bi":100}
| Node | What | Layer |
|---|---|---|
| HF-MAC{-1,0,+1} | Native macOS Hugging Face client | App |
| entheai | Agent with MEM8 wave memory | Agent |
| ayeOS | Ternary matrix inference daemon | Inference |
| MLX-QUANT | Metal GPU ternary kernels | GPU |
| FLUG-OS | 802.11 packet-wave sampler | Hardware |
| axiomquant.org | Universal threshold kernel research | Math |
All ternary. All aligned. {-1, 0, +1}
pio run -e esp32s3_amoled # Waveshare ESP32-S3-Touch-AMOLED-2.06 (410x502 QSPI)
pio run -e esp8285 # Flipper Zero WiFi v1
pio run -e generic # Generic ESP8266
pio run -e debug # Debug build with serial outputFLUG-OS/
├── src/
│ ├── flugos.cpp # Main firmware entrypoint (ESP8285 + ESP32-S3 AMOLED)
│ ├── s3_amoled_hal.h # SH8601 QSPI AMOLED, AXP2101 PMIC, FT3168 Touch, QMI8658 IMU, S3Canvas
│ ├── s3_amoled_app.h # 4-Tab Sovereign Cockpit (RADIO / 802.11 / NAND / QWAVE)
│ ├── ternary_seam.h # Radiation-transfer ternary matrix seam + sine kernel weighting
│ ├── wave_output.h # Sine kernel wave sonification
│ ├── matrix_decoder.h # 1:1 packet→ternary matrix decoder
│ └── version.h # Semantic versioning + CI commit
├── bridge/
│ ├── wiglewww --send (Rust) # ESP32-S3 AMOLED <-> zoneInn & Mac host serial bridge
│ └── wave_bridge.py # Serial → HTTP/MIDI wave bridge
├── .github/workflows/
│ └── ci.yml # Blacksmith CI + PQC signing
├── platformio.ini # Build config (esp8285, generic, debug, esp32s3_amoled)
└── README.md # This file
Firmware releases are signed with post-quantum signatures:
| Algorithm | Standard | Purpose |
|---|---|---|
| ML-DSA-65 | FIPS 204 (CRYSTALS-Dilithium) | Primary firmware signature |
| SLH-DSA-SHAKE-128s | FIPS 205 (SPHINCS+) | Backup signature |
Public keys published with each release. Verify:
openssl dgst -verify flugos-signing-mldsa65.pub \
-signature firmware.bin.mldsa65.sig firmware.binReference: NIST FIPS 203/204/205 — August 13, 2024
MIT — educational/defensive security research only.
Built by the 8b-is constellation. 🜂 {-1, 0, +1} — ennyi elég.