WiFi Audio Streaming
(WFAS)
Audio streaming over your local network. Experimental, open source, not security-audited.
WFAS is a personal project that streams your PC's audio to a smartphone, a Smart TV or a Raspberry Pi over your local Wi-Fi network, and can also use an Android device as a wireless microphone. It is free and open source. I am an engineering student and I work on it in my spare time, so please expect rough edges.
How it works
Install
Install the app on the device sending the audio (server) and the one receiving it (client). On Android, the app can be both.
Connect
Devices on the same network find each other automatically, or you can manually enter the IP.
Listen
Audio streams in real time, with configurable quality. Latency depends on your network and hardware.
What it does
No third-party audio drivers
On Windows and macOS, system audio is captured by a native engine inside the app, so no third-party virtual audio driver is needed. On Linux, a PulseAudio/PipeWire virtual sink is created for you.
Free
There are no paid tiers, time limits or ads. The code is open source.
The code is public
The source code is on GitHub, so you can read it, compile it yourself and check what it does. Reviews and bug reports are welcome.
Experimental security
Optional key authentication and ChaCha20-Poly1305 encryption, described in a public protocol specification. This is my own implementation and it has not been audited.
Command-line mode
A command-line mode with a spectrum visualizer, plus automation through URI, broadcast intents and ADB on Android.
Four platforms
Windows, macOS, Linux and Android, each using the platform's native audio API. Behavior may differ from one platform to another.
Security
Security features are part of the protocol and are all optional. They are an experimental implementation by a student and have not been audited; please read the disclaimer below before relying on them.
- Key authentication: devices show that they know the same key without sending the key itself over the network.
- ChaCha20-Poly1305 encryption: optional encryption of the audio stream. Not audited.
- Public specification: the protocol specification is on GitHub, open to review and criticism.
WFAS is a personal project by an engineering student. Its security features (key authentication, ChaCha20-Poly1305 encryption, anti-replay checks) are an experimental implementation that I wrote myself while learning. They have not undergone any formal security audit or independent review.
- Please do not rely on WFAS to protect sensitive, confidential or safety-critical audio or data.
- Please do not use it on public, corporate, school or otherwise untrusted networks.
- The encryption is a best-effort measure for a home network you trust. It is not a substitute for a vetted, audited solution.
- There may be vulnerabilities or design mistakes that I am not aware of.
The software is provided "as is", without warranty of any kind, under the terms of its licenses. If you find a problem, I would be grateful if you reported it on GitHub.
CLI Mode
A command-line mode is also available, with a real-time spectrum visualizer in the terminal.
Changelog
Release notes for the desktop and Android apps.
For Developers
The protocol library is separate from the apps and released under the MIT license. It is written in C99 with embedded targets in mind, avoids dynamic allocation, and its cryptographic primitives are checked against the test vectors published in the RFCs. Passing test vectors does not make the overall design secure.