Understanding the VBAN audio streaming protocol, using VB-CABLE for virtual audio routing, and combining them to build powerful audio workflows on Windows.
VBAN (VB-Audio Network) is a lightweight network protocol designed for real-time transport of audio streams over IP-based networks. It was created by Vincent Burel of VB-Audio Software and introduced in June 2015 as part of the Voicemeeter virtual audio mixer for Windows.
Think of VBAN as a "radio transmitter/receiver" for your local network. A sender (transmitter) pushes audio packets onto the network, and one or more receivers (listeners) pick them up and play them back — all in real time, with latency that can stay below 30 ms on a well-configured LAN.
Unlike more complex network audio protocols (such as Dante, AES67, or AVB), VBAN is designed to be simple, infrastructure-free, and immediately usable on any standard Ethernet or Wi-Fi network. There is no clock synchronization, no discovery service, and no special switch configuration required. The protocol works with regular consumer-grade routers and switches.
VBAN is based on the UDP protocol. This means it prioritizes low latency over delivery guarantee — packets are sent once and not re-transmitted. On a stable local network, packet loss is typically negligible, but VBAN is not designed for transmission over the public internet without additional infrastructure (e.g. a VPN).
VBAN supports sample rates from 11,025 Hz to 96 kHz, bit depths of 16 or 24 bits in PCM format, and up to 8 audio channels (mono through 7.1 surround). Each VBAN packet consists of a 28-byte header followed by audio payload data, and the total packet size never exceeds 1,472 bytes to avoid IP fragmentation.
Every stream is identified by a stream name (up to 16 ASCII characters) and the sender's IP address. The receiver filters incoming packets by matching these two identifiers. Multiple independent streams can coexist on the same network, each with a different name.
The protocol is free to use as a base protocol. The official specification is public and VB-Audio encourages third-party implementations. An open-source Linux implementation is available on GitHub, and community-built libraries exist for Python, C, and other languages.
VBAN follows a strict transmitter/receiver model inspired by traditional radio broadcasting. The sender is always the master: it determines the sample rate, bit depth, number of channels, and stream name. The receiver is always the slave: it must adapt to whatever the sender transmits.
Every VBAN packet starts with the four ASCII characters VBAN as a magic identifier, followed by a 24-byte header that encodes the stream parameters, and then the raw audio payload.
| Field | Size | Description |
|---|---|---|
| VBAN | 4 bytes | Magic identifier — always the ASCII string "VBAN" |
| Sample Rate | 5 bits | Index into a predefined table (0 = 6000 Hz … 20 = 96000 Hz) |
| Sub Protocol | 3 bits | Identifies the data type: Audio, Serial, Text, Service, or Frame |
| Samples/Frame | 1 byte | Number of samples per channel in this packet (value + 1, so 0 = 1 sample) |
| Channels | 1 byte | Number of channels (value + 1, so 0 = 1 channel) |
| Format | 1 byte | Bit resolution and codec (PCM 16-bit, PCM 24-bit, etc.) |
| Stream Name | 16 bytes | Null-padded ASCII name to identify the stream |
| Frame Counter | 4 bytes | Unsigned 32-bit counter, incremented with each packet |
| Payload | variable | Raw audio samples in the format described by the header |
The data is in little-endian byte order (x86 architecture). The default UDP port is 6980, though this can be changed in both sender and receiver.
Transmitter sends UDP packets to the receiver's IP on port 6980
The sender transmits packets to the IP address of the intended receiver. VBAN does not use broadcast or multicast by default — each outgoing stream is directed to a specific IP. However, a sender can transmit the same stream to multiple receivers by configuring multiple outgoing streams, each pointing to a different IP address.
Because VBAN uses no synchronization protocol, the receiver must build a small jitter buffer to absorb network timing variations. VBAN Receptor and Voicemeeter provide a Network Quality setting (from "Optimal" to "Very Slow") that adjusts this buffer size — trading latency for stability.
While VBAN is primarily known for audio transport, the protocol specification actually defines five different sub-protocols, each identified by 3 bits in the packet header.
| Sub-Protocol | Value | Purpose |
|---|---|---|
| AUDIO | 0x00 | PCM audio in various sample rates and bit depths — the primary and most common use |
| SERIAL | 0x20 | Serial port data (COM port emulation over the network), with configurable baud rate and framing |
| TEXT | 0x40 | UTF-8 text messages — used to send remote commands to Voicemeeter (e.g. mute a strip, change a gain) |
| SERVICE | 0x60 | Service discovery and identification, allowing devices to announce themselves on the network |
| FRAME | 0x80 | Frame-based data for images, video, or arbitrary binary payloads — an extension for future use |
For most users, the AUDIO sub-protocol is the only one that matters. The TEXT sub-protocol is particularly useful for developers who want to remotely control Voicemeeter parameters from a script or application — for example, muting a strip or adjusting a gain slider via a simple UDP packet.
The SERIAL sub-protocol is notable because it allows virtual COM port communication over the network. This has interesting implications for remote control scenarios — including, potentially, bridging serial-based radio control protocols across machines on a LAN.
VB-CABLE is a virtual audio device driver for Windows (and macOS) developed by VB-Audio. It creates a pair of virtual audio endpoints on your system: a CABLE Input (playback device) and a CABLE Output (recording device). Any audio sent to the CABLE Input is immediately available at the CABLE Output — like a virtual wire connecting two applications together.
Audio flows from the playback device to the recording device
In practical terms: Application A sets its audio output to "CABLE Input (VB-Audio Virtual Cable)", and Application B sets its audio input to "CABLE Output (VB-Audio Virtual Cable)". Whatever A plays is captured by B.
VB-CABLE supports all standard Windows audio interfaces (MME, DirectSound, WDM, KS, WASAPI) and sample rates from 8 kHz to 192 kHz. It works transparently with any audio application — no special integration is needed.
The first VB-CABLE is free (donationware — VB-Audio accepts optional donations). If you need more than one virtual cable pair, additional cables (VB-CABLE A+B and VB-CABLE C+D) are available for a small donation on the VB-Audio website. This gives you up to three independent virtual audio paths on the same system.
VB-CABLE vs. Voicemeeter: VB-CABLE is a simple point-to-point virtual cable — one input, one output, no mixing. If you need to mix multiple audio sources, apply EQ, compression, or routing matrix logic, use Voicemeeter (which includes virtual cables built in). VB-CABLE is the right tool when you just need a clean, zero-configuration audio pipe between two applications.
Download the VB-CABLE driver from the official VB-Audio page:
The download is a ZIP archive containing the installer for both 32-bit and 64-bit versions of Windows.
Extract the ZIP archive, then right-click on VBCABLE_Setup_x64.exe (for 64-bit Windows) and select "Run as administrator". This is important — the installer needs elevated privileges to register the audio driver in the system.
Click Install Driver when prompted. The installation takes a few seconds. When it completes, reboot your computer — the virtual audio device will not appear in the system until after a restart.
After rebooting, open Windows Settings → System → Sound. You should see two new devices:
If they appear, VB-CABLE is installed and ready. You can now route audio between applications by selecting these devices as output and input in the relevant applications.
Sample rate mismatch: Make sure the sample rate configured for the CABLE Input and CABLE Output matches what your applications expect. You can check and set this in the Advanced tab of each device's properties in the Windows Sound control panel. A mismatch can cause pitch distortion or silence.
VBAN and VB-CABLE can be combined in many creative ways. Here are some practical scenarios, with a particular focus on amateur radio and SDR workflows.
You have an SDR application running on your desktop (e.g. SDRUno, SDR#, SDRconnect, HDSDR) and you want to listen to its audio output from a laptop, tablet, or phone in another room — without running long audio cables.
Use VB-CABLE to capture the SDR application's audio output into a virtual device, then use Voicemeeter to pick up that virtual device and transmit it as a VBAN stream. On the other device, run VBAN Receptor (available for Windows, iOS, and Android) to receive and play the audio.
This is a natural evolution of Scenario 01. If your SDR software is also controllable via Hamlib / rigctld (see our Hamlib tutorial), you can combine VBAN audio reception with rigctld-based frequency and mode control — all from a single iOS app on your iPhone or iPad.
The setup on the PC side: SDR software → VB-CABLE → Voicemeeter → VBAN stream, plus rigctld running as a network daemon on port 4532. On the iOS side, a single app connects to both services over Wi-Fi.
Digital mode applications like WSJT-X, fldigi, or JS8Call need to receive the demodulated audio from your SDR software. Instead of using a physical audio cable loopback, use VB-CABLE to pipe the audio internally: set your SDR application's output to CABLE Input, and set the digital mode software's input to CABLE Output.
This gives you a clean, lossless, zero-latency digital audio path between the two applications, without any analog conversion.
You want several people in the same building to listen to the same radio receiver simultaneously — for example, during a contest, a DX event, or a training session. Voicemeeter can send the same VBAN stream to multiple IP addresses on the network. Each listener runs VBAN Receptor (or Voicemeeter) and receives the audio independently.
VBAN supports up to 255 destination IP addresses per stream, so you can serve a large audience from a single source machine.
You want to record long sessions of a radio receiver's audio (for spectrum monitoring, signal intelligence, or archiving) without loading your SDR machine. Send the audio via VBAN to a second computer on the LAN, and use any audio recording software (Audacity, OBS, or even a simple command-line tool) on the receiving machine to capture the stream to file.
The most common workflow combines VB-CABLE as the local audio routing tool with VBAN as the network transport. Here is a step-by-step example of streaming SDR audio from a Windows PC to another device over the local network.
Local audio capture → Virtual cable → Mixer → Network stream → Remote device
In your SDR software (SDRUno, SDR#, SDRconnect, HDSDR, etc.), go to the audio settings and set the audio output device to CABLE Input (VB-Audio Virtual Cable).
The SDR application will now send its demodulated audio to the virtual cable instead of your speakers. You will not hear it locally — this is expected. The audio is now flowing into the virtual pipe.
Open Voicemeeter (Standard, Banana, or Potato — any version works). In the Hardware Input 1 strip, select CABLE Output (VB-Audio Virtual Cable) as the input device. You should see the level meters moving when the SDR application is producing audio.
Make sure the strip is routed to Bus A1 (your physical speakers or headphones) if you also want to hear the audio locally. This step is optional but useful for monitoring.
In Voicemeeter, go to Menu → VBAN (or press the VBAN button in the top-right corner). In the Outgoing Streams section, configure a stream:
Stream1)6980 (default)2 (stereo) or 1 (mono)The stream will start transmitting immediately.
On the receiving device, launch VBAN Receptor (available for Windows, iOS, Android, and Linux). Configure:
Stream1)6980Press Start. You should hear the SDR audio playing on the remote device.
If you don't need Voicemeeter: Voicemeeter itself has built-in virtual audio inputs that can replace VB-CABLE in some configurations. When you install Voicemeeter, it creates virtual audio devices (Voicemeeter Input and Voicemeeter Aux Input) that you can use directly as the SDR application's output. This eliminates the need for a separate VB-CABLE installation. However, VB-CABLE remains useful if you want an independent audio path that does not depend on Voicemeeter being running.
Windows Firewall: VBAN uses UDP on port 6980. If the receiving device is on a different machine, make sure Windows Firewall on the sending machine allows outgoing UDP traffic on this port. Also, the network profile should be set to Private — Windows may block LAN communication on Public networks.
The VBAN protocol is well documented and the community around VB-Audio tools is active. Here are the most important resources for studying the protocol in depth and getting help with your setup.
For developers interested in implementing VBAN in their own applications (including iOS apps in Swift), the official PDF specification is the definitive reference. The protocol is straightforward enough that a basic receiver can be implemented in a few hundred lines of code — parse the 28-byte header, buffer the PCM payload, and feed it to your audio output pipeline.