PWAR: PipeWire ASIO Relay
August 25, 2025 Β· View on GitHub
PWAR: PipeWire ASIO Relay
π΅ PWAR (PipeWire ASIO Relay) is a zero-drift, real-time audio bridge between Windows ASIO hosts and Linux PipeWire. It enables ultra-low-latency audio streaming across platforms, making it ideal for musicians, streamers, and audio professionals.
πΈ Demo
The Qt-based GUI provides an easy way to configure and monitor audio streaming
π¦ Installation
π Quick Install with Nix (Recommended)
The easiest way to try PWAR is using Nix with our pre-configured flake:
# Run GUI directly (no installation needed)
nix run github:ripxorip/PWAR
# Run CLI version
nix run github:ripxorip/PWAR#pwar-cli -- --ip YOUR_WINDOWS_IP
# Install permanently
nix profile install github:ripxorip/PWAR
π§ Linux Package Installation
Debian/Ubuntu (.deb package)
Download the latest .deb package from the releases page and install:
# Download the latest release
wget https://github.com/ripxorip/PWAR/releases/latest/download/pwar_*_amd64.deb
# Install the package (recommended)
sudo apt install ./pwar_*_amd64.deb
# Alternative: use dpkg + apt for dependencies
sudo dpkg -i pwar_*_amd64.deb
sudo apt-get install -f
The package includes:
- π₯οΈ PWAR GUI (
pwar_gui) - Graphical interface for easy setup - π» PWAR CLI (
pwar_cli) - Command-line interface for headless setups - π Shared library (
libpwar.so) for integration
Other Linux Distributions
Download the appropriate package for your distribution from the releases page, or build from source (see Building section below).
πͺ Windows
Download the Windows ASIO driver from the releases page:
- Download
PWARASIO.dllfrom the latest release - Register the driver by opening Command Prompt as Administrator and running:
regsvr32.exe "C:\path\to\PWARASIO.dll" - Configure by creating
%USERPROFILE%\pwarASIO.cfgwith your Linux server's IP:udp_send_ip=192.168.1.100
π Quick Start
Using the GUI (Recommended)
- Install PWAR on Linux using the .deb package (see Installation section)
- Launch the GUI:
pwar_guior find "PWAR" in your applications menu - Configure settings through the intuitive interface:
- Set your Windows host IP address
- Choose audio buffer size and sample rate
- Enable/disable oneshot mode and variable buffer sizes
- Start the relay with the click of a button
Using the Command Line
-
Run the Linux relay:
pwar_cli --ip 192.168.1.101Replace
192.168.1.101with your Windows machine's IP. -
Configure Windows ASIO (see Windows installation above)
-
Select PWAR ASIO in your Windows audio application
β¨ Features
- β‘ Ultra-low latency: Real-time, zero-drift audio streaming
- π Bidirectional audio: Stream audio both ways between Windows and Linux
- ποΈ Variable buffer sizes: Runtime adjustment of buffer size and latency
- π― Oneshot mode: Optimized single-packet transmission for minimal latency
- π₯οΈ Qt-based GUI: Intuitive graphical interface for easy configuration
- π» CLI support: Command-line interface for headless and scripted setups
- πͺ ASIO driver: Native Windows ASIO driver for maximum compatibility
- π§ PipeWire integration: Seamless Linux audio system integration
- π Real-time monitoring: Live latency and performance metrics
- π οΈ Easy configuration: Simple setup with automatic network discovery
βοΈ Advanced Configuration
Windows ASIO Configuration
Create or edit %USERPROFILE%\pwarASIO.cfg with the following options:
# Required: Linux server IP address
udp_send_ip=192.168.1.100
Linux CLI Options
pwar_cli [OPTIONS]
Options:
--ip IP_ADDRESS, -i IP_ADDRESS Target Windows host IP address (default: 192.168.66.3)
--port PORT, -p PORT UDP port to use (default: 8321)
--buffer_size SIZE, -b SIZE Audio buffer size in frames (default: 64)
--oneshot Enable oneshot mode
--passthrough_test, -pt Enable passthrough test mode
ποΈ Key Features Explained
Oneshot Mode
Oneshot mode optimizes for ultra-low latency by sending audio in single packets rather than streaming continuously. This significantly reduces latency but may increase CPU usage.
Variable Buffer Sizes
Allows runtime adjustment of buffer sizes to balance between latency and stability. Smaller buffers = lower latency but require more CPU and stable network.
Real-time Monitoring
The GUI provides live feedback on:
- Current latency measurements
- Packet loss statistics
- Audio level meters
- Network performance metrics
ποΈ Building from Source
πͺ Windows (CMake)
π¦ Fetching the ASIO SDK
- Download the Steinberg ASIO SDK.
- Extract the contents so that the folder structure is:
<project-root>/third_party/asiosdk/ βββ ASIO SDK 2.3.pdf βββ changes.txt βββ readme.txt βββ asio/ βββ common/ βββ driver/ βββ host/
π οΈ Building the ASIO Driver
- Install CMake and a supported compiler (e.g., Visual Studio).
- Open a terminal and run:
mkdir build cd build cmake .. -G "Visual Studio 17 2022" # or your version cmake --build . --config Release - The ASIO driver DLL will be in
build/windows/asio/PWARASIO.dll.
π§ Linux (CMake)
- Install dependencies:
# Ubuntu/Debian sudo apt-get install cmake build-essential libpipewire-0.3-dev qtbase5-dev qtdeclarative5-dev # Or use Nix (recommended) nix develop - Build using CMake:
mkdir build cd build cmake .. make -j$(nproc) - The binaries will be in
build/linux/(e.g.,pwar_cli,pwar_gui,libpwar.so).
π§ͺ Protocol Unit Tests
To build protocol unit tests:
cd protocol/test
mkdir build
cd build
cmake ..
make
Test binaries will be in protocol/test/build/.
π οΈ Troubleshooting
Common Issues
- No audio streaming: Ensure both machines are on the same network and firewall allows UDP traffic on port 8321
- High latency: Try enabling oneshot mode and reducing buffer sizes
- Audio dropouts: Increase buffer size or check network stability
- ASIO driver not found: Make sure you've registered the DLL with
regsvr32.exe
Performance Tips
- Use wired network connections for best results
- Match sample rates between Windows and Linux (48kHz recommended)
- Close unnecessary applications to reduce CPU load
- Consider using oneshot mode for minimal latency scenarios
πΊοΈ Roadmap
- β Variable buffer sizes: Runtime adjustment of buffer size and latency
- β Cross-platform GUI: Qt-based interface for easy configuration
- β Package binaries: .deb packages and Windows ASIO driver releases
- π Enhanced monitoring: More detailed performance metrics and visualization
- π Auto-discovery: Automatic network discovery of PWAR instances
- π Reduce jitter for VM setups: Explore virtio-vsock or shared memory for inter-VM communication
π Support the Project
PWAR is free and open source. If you find it useful, consider supporting its development:
Every bit helps me keep improving PWAR β thank you! π
π€ Contributing
I have limited time to spend on this project, so contributions are very welcome! If you have improvements, bug fixes, or new features, please open a Pull Request (PR). I appreciate your help in making PWAR even better!
β If you like this project, please consider giving it a star on GitHub to show your support!
π License
π GPL-3 β See LICENSE