baudy/README.md
2026-04-19 16:38:19 -07:00

1.7 KiB
Raw Permalink Blame History

Baudy WiFi Chirp Setup

A proof-of-concept for provisioning WiFi over sound with ggwave.

The phone and the server exchange short audio chirps to do a simple setup flow:

  1. Phone says hello over audio.
  2. Server scans nearby WiFi networks with nmcli.
  3. Server chirps the SSID list back to the phone.
  4. Phone selects a network and, if needed, enters the password.
  5. Phone chirps the password back to the server.
  6. Server tries to join the network and chirps the result.

This is aimed at Raspberry Pi / Linux-style setup flows where networking may not be available yet.

Current assumptions

  • WiFi scanning and joining are implemented for Linux via nmcli.
  • The phone UI is still served as a normal web page for this repo's demo flow.
  • Passwords are sent as plaintext audio payloads in this POC.
  • Audio is half-duplex: only one side should chirp at a time.

Run

bun install
bun run index.tsx

Open the shown URL on your phone.

For phone microphone access you need a secure origin:

  • macOS: the app serves local HTTPS directly
  • Linux: prefer tailscale serve <port> and open the resulting https://...ts.net URL

Notes

  • Nearby network lists are deduped by SSID and trimmed to the strongest entries.
  • The browser uses WebAudio + ggwave WASM for chirp encode/decode.
  • The server uses sox for audio capture/playback.
  • The server waits for the phone to switch back into listening mode before replying.

See docs/ggwave-gotchas.md for platform-specific lessons about iOS audio, macOS microphone permissions, Linux ALSA device selection, and ggwave WASM behavior.