-
-
Notifications
You must be signed in to change notification settings - Fork 107
DAX Virtual Audio
DAX (Data Audio Exchange) creates virtual audio devices on your PC that digital mode applications (WSJT-X, VARA, fldigi, JS8Call, etc.) can use as their audio input/output. Audio flows between the radio and the app through AetherSDR — no physical audio cables needed.
When DAX is enabled, AetherSDR creates virtual audio devices that appear in your system's audio device list:
| Device | Direction | Purpose |
|---|---|---|
| AetherSDR DAX 1 | Capture (input) | RX audio from Slice A |
| AetherSDR DAX 2 | Capture (input) | RX audio (available for 2nd slice) |
| AetherSDR DAX 3 | Capture (input) | RX audio (available for 3rd slice) |
| AetherSDR DAX 4 | Capture (input) | RX audio (available for 4th slice) |
| AetherSDR TX | Playback (output) | TX audio to radio |
RX path: Radio → VITA-49 UDP → AetherSDR → DAX virtual device → your app reads audio TX path: Your app writes audio → DAX TX device → AetherSDR → VITA-49 UDP → radio transmits
- Open the CAT applet (right-side applet panel)
- Click the DAX Enable button
- The virtual devices appear immediately in PulseAudio/PipeWire
To auto-start DAX on every connection: Settings → Autostart DAX with AetherSDR
Uses module-pipe-source and module-pipe-sink from PulseAudio. Works with both PulseAudio and PipeWire (via pipewire-pulse compatibility). The devices appear in:
- PulseAudio apps: visible as capture/playback devices
- PipeWire apps: visible as nodes
- JACK apps: visible via PipeWire's JACK compatibility layer
Verify devices are visible:
# List DAX capture devices
pactl list sources short | grep aethersdr
# List DAX playback device
pactl list sinks short | grep aethersdrStale devices from crashed sessions are automatically cleaned up on the next DAX start.
Uses a CoreAudio HAL plugin (AetherSDRDAX.driver) installed in /Library/Audio/Plug-Ins/HAL/. The devices appear in System Settings → Sound and in any app's audio device picker.
DAX virtual audio is not yet available on Windows. Use SmartSDR's DAX or a third-party virtual audio cable. See issue #87 for tracking.
Each DAX channel has an independent gain slider combined with a level meter (MeterSlider widget) in the CAT applet:
- RX channels (1–4): Adjust the output level sent to the virtual device. The level meter shows the current RMS audio level.
- TX channel: Adjust the input gain from the virtual device. Level meter shows real-time TX audio level with no smoothing for responsive feedback.
Gain settings persist across restarts via AppSettings.
The radio assigns DAX channels to slices based on each slice's dax setting:
-
Slice A with
dax=1→ audio appears on AetherSDR DAX 1 -
Slice B with
dax=2→ audio appears on AetherSDR DAX 2 - etc.
Set the DAX channel for a slice in the RX applet → DAX dropdown, or via the VFO widget → DAX tab.
AetherSDR uses mode-aware gating to route the correct audio source during TX:
| Mode | Audio Source |
|---|---|
| USB, LSB, AM, FM (voice) | PC microphone |
| DIGU, DIGL, RTTY, DFM (digital) | DAX TX virtual device |
| RADE (digital voice) | RADE modem engine |
This is automatic — when you TX in DIGU mode, your digital app's audio flows through the DAX TX device. When you TX in USB mode, your microphone is used. No manual switching needed.
All DAX channels use:
- Sample rate: 24,000 Hz
- Channels: 1 (mono)
- Format: signed 16-bit integer (s16le)
Ham radio DAX audio is inherently mono — SSB, CW, and digital modes are all single-channel. AetherSDR converts stereo radio audio to mono before feeding the DAX devices, and duplicates mono TX audio back to stereo for the radio.
PipeWire/PulseAudio automatically resamples if your app requests a different rate (e.g., WSJT-X at 48kHz).
- Connect to your radio in AetherSDR
- Enable DAX in the CAT applet (or auto-start via Settings)
- Enable rigctld in the CAT applet (or auto-start via Settings)
- Verify your slice is in DIGU mode (for FT8/FT4)
- Set the slice's DAX channel to 1 (VFO widget → DAX tab)
- Open WSJT-X → File → Settings → Audio tab
- Soundcard Input: Select AetherSDR DAX 1
- Soundcard Output: Select AetherSDR TX
- Click OK
Tip: If "AetherSDR DAX 1" doesn't appear, make sure DAX is enabled in the CAT applet and check with
pactl list sources short | grep aethersdr.
- Go to Settings → Radio tab
-
Rig:
Hamlib NET rigctl -
Network Server:
127.0.0.1:4532 - Click Test CAT — should turn green
-
PTT Method:
CAT(rigctld handles PTT)
- You should see FT8 signals decoding in the WSJT-X waterfall
- The DAX 1 level meter in AetherSDR's CAT applet should show activity
- To test TX: click Tune in WSJT-X — the radio should key up and you'll see power on the TX applet gauge
-
No audio in WSJT-X waterfall: Check that the slice has
dax=1set and is in DIGU mode. Verify withpactl list source-outputsthat WSJT-X is connected to the correct source. - TX audio not reaching radio: Ensure WSJT-X output is set to "AetherSDR TX", not your speakers. Check that the TX slice is in DIGU mode (not USB).
- Duplicate devices showing: If AetherSDR crashed previously, stale pipe modules may remain. Restart AetherSDR — it cleans up stale modules automatically on DAX start.
- WSJT-X says "Error in Sound Input": The PipeWire/PulseAudio node may have been destroyed (DAX toggled off). Re-enable DAX and restart WSJT-X.
The same pattern works for any digital mode app:
| Application | Input Device | Output Device | CAT Port |
|---|---|---|---|
| WSJT-X | AetherSDR DAX 1 | AetherSDR TX | 4532 |
| VARA HF | AetherSDR DAX 1 | AetherSDR TX | 4532 |
| fldigi | AetherSDR DAX 1 | AetherSDR TX | 4532 |
| JS8Call | AetherSDR DAX 1 | AetherSDR TX | 4532 |
| VARA FM (2nd slice) | AetherSDR DAX 2 | AetherSDR TX | 4533 |
For SO2R (two radios/slices simultaneously), use different DAX channels and CAT ports for each app.
- Panadapter Controls
- VFO Widget
- RX Controls
- TX Controls
- Aetherial Audio
- Multi-Slice Operation
- Diversity and ESC
- TNF (Tracking Notch Filters)
- Memory Channels
- Profile Management
- Slice Colors
- XVTR (Transverters)
- CWX Panel
- CW Decoder
- DVK Panel
- RTTY Operation
- RADE Digital Voice
- DAX Virtual Audio
- DAX IQ Streaming
- WSJT-X Integration
- CAT Control
- TCI Server