Protocols

shoal speaks three layers of comms: acoustic across the fleet, optical at the dock, and standard IP from the dock to the cloud. All three are open standards, end-to-end.

Acoustic (always-on, fleet-wide)

Layer 0 — JANUS / STANAG 4748. NATO open standard for underwater acoustic comms. 80 bps baseline at 11.5 kHz. 64-bit packets, 34 bits user-defined. The lingua franca.

Layer 1 — shoal-link. Defined on top of JANUS user bits:

  • Discovery: fish-to-dock and fish-to-fish presence
  • Heartbeat: 1 packet per minute per fish (battery, MFC output, depth, dead-reckoned position)
  • Distress: low-battery, stuck, lost, anomaly
  • Command: dock-to-fish, operator-to-fish via dock

Layer 2 — shoal-mesh. Optional multi-hop relay through other fish for distant fish to reach the dock. Inspired by janus-consensus.

Optical (dock-local, high-rate)

Layer 0 — Blue-green LED + PIN photodiode. OOK at 1–10 Mbps, ~10 m line-of-sight at the bay.

Layer 1 — shoal-burst. Bulk data offload when a fish docks:

  • Telemetry log dump (typically <10 MB per visit)
  • Sensor data — camera frames, full electrochem traces
  • Updated mission parameters and model weights pushed to the fish
  • Software updates

Surface (dock-to-cloud)

LTE, satellite, or hardwired. Standard IoT patterns. Telemetry → cloud time-series DB. Pollution maps → tile server. Dashboard → web app.

Data schemas

Public schemas for water quality data, designed for interop with:

Every fish observation lands in a versioned, signed, append-only log.

Deeper

Architecture §4: The protocols


shoal is open source. Hardware: CERN-OHL-S 2.0. Software: Apache 2.0. Docs and data: CC-BY-SA 4.0. Datasets: CC0 1.0.

This site uses Just the Docs, a documentation theme for Jekyll.