AB9IL.net

Chaining Audio Interfaces for Smooth Multichannel QSD Operation

Disclosure: AB9IL.net is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program such that this site earns advertising fees by linking to Amazon.com. If you make a qualifying purchase after clicking a link on this website, the associate affiliated with this site may earn a comission at no cost to you.


#Advert: Get your CPUs, GPUs, and Motherboards from GigaParts.

New Features: Global Quick Tune Internet SDR List Improve Your Radio Knowledge at "YouTube SDR School"
Article Index --- click here to unfold ---
Newest Pages NEW: Trumpists Kicking the Hornets Nest
NEW: Introduction to Catbird Linux
NEW: Skywave Linux Updated to ver 4.1
NEW: i3wm: Using i3-ipc to Float Windows
How to Record from WebSDR and OpenWebRX Sites
Programmatic RTL-SDR Frequency Claibration
Public KiwiSDR Lists
Malaysia Airlines Flight MH17: Simply Mass Murder
The Anonymous Cathay Pacific Employee Letter to Hong Kong
For For Cathay Crews Crossing Borders With Electronics
Photo Gallery 9: The New Life Movement in China, 1944
E Pluribus Unum: From Many, One, Dammit
HFGCS Quick Tune SDR List
The Robert Mueller Iron Triangle Speech
A Rant About One Party Rule
Best OpenWebRX and WebSDR Servers
SDR School via YouTube
ADALM-PlutoSDR on Linux Systems
MOFO Linux: Defeating State Censorship and Surveillance
Linux: Distros, Code, and Nifty Software NEW: Introduction to Catbird Linux
NEW: Skywave Linux Updated to ver 4.1
NEW: i3wm: Using i3-ipc to Float Windows
Skywave Linux: HPSDR, WebSDR, and RTL-SDR ready to run.
Siduction Linux with the Cinnamon Desktop
Siduction Linux with the LXQT Desktop
Andy's Ham Radio Linux 15 and QtRadio
Booting Multiple Linux Disc Images with Grub2
Porteus Linux Hard Drive Installation
UPDATED: MOFO Linux - For Unrestricted Internet
Aptosid with LXDE
Asus EeePC 1215N with Linux
Autostart Tweaks for KDE3 and KDE4
Broadband Speed Tweaks For Linux
Fixing the Firefox 3 Rendering Bug
Linux on Solid State Drives
Linux Wireless Interface Driver Updates
Setting Polkit to Automount USB Devices
Sidux with LXDE
Fixing Skype Inverted Video
SLAX Remix - kernel upgrades
Flash Drive Linux - Introduction
Flash Drive Knoppix 5.3 - Part 1
Flash Drive Knoppix 5.3 - Part 2
Flash Drive Knoppix 6.0 - Part 1
Flash Drive Knoppix 6.0 - Part 2
Flash Drive SLAX - Part 1
Flash Drive SLAX - Part 2
Flash Drive Bluewhite64 - Part 1
Flash Drive Bluewhite64 - Part 2
Flash Drive Linux - Basic Customization
SLAX Customization - Part 1
SLAX Customization - Part 2
Bluewhite64 Customization - Part 1
Bluewhite64 Customization - Part 2
Long Range Wi-Fi Basics of Long Range Wireless Networking
Linear Focus Parabolic Wi Fi Antenna
High Gain Wi Fi Dish Antenna
High Gain Helical Wi Fi Antenna
High Gain Yagi Wi Fi Antenna
High Power Wireless Adapters
Wi Fi Extender Antenna for Routers
Belkin F5D7050 External Wi Fi Antenna
Linksys WUSB54GC External Antenna Mod
Compat Wireless Linux Drivers
Installing WPA_Supplicant for Wi-Fi Security
Linux Wireless Interface Driver Updates
Linux Wireless Interface Driver Support
NetworkManager and Consolekit
RT73 Wireless Drivers for Linux Kernel 2.6.27+
RT2860 Wireless Drivers for Linux Kernel 2.6.27+
Radio: Amateur Radio, Aero Radio, Shortwave, etc NEW: Programmatic RTL-SDR Frequency Claibration
NEW: Public KiwiSDR Lists
NEW: GHFS Quick Tune SDR List
UPDATED: Best OpenWebRX and WebSDR Servers
UPDATED: Skywave Linux: HPSDR, WebSDR, and RTL-SDR ready to run.
CubicSDR on Debian, Ubuntu, and Linux Mint
Dump1090 for Linux Mint 17.1 and Siduction 2014.1
Software Defined Radio - An Introduction
QS1R Direct Sampling SDR
Chaining SDR Audio Interfaces
FLEX-6000 Direct Sampling SDR
UPDATED: RTL2832 Software Defined Radio
WebSDR Digimode Reception
Enabling FLASH in Jack Audio
Realtime Software Audio Processing
Liberation Technology MOFO Linux - For Unrestricted Internet
Veracrypt Encryption for Linux
Veracrypt Encryption for Windows
Using Google Within China
Popcorn Time and Flixtor for Uncensored Streaming Media
DNS Encryption using DNSCrypt
Galaxy Nexus Privacy and Robustness Enhancements
Galaxy SIII Privacy and Robustness Enhancements
Flash Drive Encryption for Linux
Flash Drive Encryption for Windows
Multihop VPN Connections for Strong Internet Privacy
Open and Free DNS Server List
OpenVPN Cloaking against Deep Packet Inspection The Serval Mesh Phone Project
Skype's Robust Security
Man in the Middle Wireless Security Risks
Wireless Security and Surveillance
Digital Audio Adjusting Audio Dynamics in VLC
Backing Track Prep Guide
Ipod Music Processing Guide
How To Record Record Live Music Performances
Realtime Software Audio Processing
Chaining SDR Audio Interfaces
Aerospace Radio, Aviation, Pontification, and Opinion NEW: Trumpists Kicking the Hornets Nest
NEW: The Anonymous Cathay Pacific Employee Letter to Hong Kong
NEW: For For Cathay Crews Crossing Borders With Electronics
NEW: E Pluribus Unum: From Many, One, Dammit
NEW: HFGCS Quick Tune SDR List
NEW: The Robert Mueller Iron Triangle Speech
NEW: A Rant About One Party Rule
Captains Authority Versus Autocratic Airline Management
Malaysia Airlines Flight MH17: Simply Mass Murder
Malaysia Airlines Flight MH370 - A Media Circus
High Gain Air Band Antennas
Apollo Unified S Band Communications
Chinese Anti-Stealth VHF Radar
Oceanic Communications - Procedures, Equipment, Voice and HFDL
Boeing 737NG Radio Equipment
Boeing 767 Radio Equipment
NAOC-TACAMO Monitoring
My Flight on 9/11
Joshua Chamberlain's Leadership Tips
Special Operations Forces Truths
TWA 800: Just Give Me Some Truth
Photo Gallery Aviation Photo Gallery 1: Snapshots From My Journeys
Aviation Photo Gallery 2: On the Road With ATA Airlines
Aviation Photo Gallery 3: More ATA Airlines
Aviation Photo Gallery 4: Southwest Airlines is the Borg Empire
Aviation Photo Gallery 5: Starting Over, Moving On...
Aviation Photo Gallery 6: More Viva Macau
Aviation Photo Gallery 7: Mainland China Airline Flying
Aviation Photo Gallery 8: Chinese Smog and Fog
NEW: Photo Gallery 9: The New Life Movement in China, 1944
Broadcasting BBC Radio Blooper - Adolf Merckle
TV DXing the World Trade Center
New York TV after 9/11
Live Music Recording Adjusting Audio Dynamics in VLC
Backing Track Prep Guide
Ipod Music Processing Guide
How To Record Record Live Music Performances
Radio Poetry and Arts In Distress, by David Wagoner
Just A Radio Operator, by Robert A. Wallace
Radio Circuit Modifications ATS-909 Modifications
ATS-909 Manuals
ATS-909 Alignment Procedure
ATS-909 Alignment Spectrograms
Very Low Frequency (VLF) Radio Internet Based VLF Radio Listening
Windows Tips Windows Performance Enhancement Tips
A Faster Windows 7
Windows 7 SSD Setup

Quadrature Sampling software defined radios are nifty proof-of-concept devices. Crystal controlled versions, such as the Softrock devices, are especially good for weak signal work, and are proven formidable DX grappers when paired with good SDR software and a skilled operator. Elaborate implementations, such as the SDR-1000 family of transceivers are expanding the limits of possibility with quadrature sampling software defined radio equipment.

Here is a method of running several of these radios simultaneously, using multiple audio interfaces. Running two or three separate A/D interfaces at once can be a very difficult task on some of the popular operating systems, and sometimes resembles the masochistic art of cat herding! It is not difficult to use multiple soundcards in Linux; they can be tied together as one multichannel virual device. Such a multichannel audio interface would be useful in a software defined radio monitoring station or club. Imagine handling a batch of eight different "softrock" receivers tuned to different hf aeronautical radio bands. Or consider an emergency communications station running several modes and frequency ranges at once. What is proposed here is using one computer system, suitable software, and several audio interfaces to create a software defined superstation.


multiple audio interfaces for software defined radio
A multichannel / multiband / multiuser SDR
system with a virtual mega-sound card


#Advert: Supercharge your computing on systems and parts from Eluktronics


Be aware that there are a number of direct sampling SDRs with multichannel capability. Using several quadrature sampling SDRs is a good option in many cases, considering up-front cost and ability to scale the system up or down. Also, the A/D converters in modern audio interfaces offer phenomenal quality 24 bit sound.

The information to follow specifically describes how to operate multiple audio interfaces which use the Envy24 chipset. Under Linux, they use a driver known as ice1712. Chaining the interfaces requires editing of ALSA configuration files and sending proper start-up commands to the Jack Audio routing system.

ALSA .asoundrc Configures Your Audio

The ALSA pcm_multi plugin is used to merge several cards into one large virtual card. Note that the ICE1712 actually has 12 inputs and 10 outputs, and these must be defined in software, regardless of the number used on a particular make and model of audio interface. Therefore, separate devices will be defined in the .asoundrc file for capture and playback. For a 16 channel audio system, see the .asoundrc example for two M-Audio Delta 1010 interfaces:

# .asoundrc for two Delta 1010 audio interfaces
#
# Create a virtual multichannel device out of multiple soundcards.
# JACK must have MMAP_COMPLEX support enabled. 
# ICE1712 chip has 12 capture channels and 10 playback channels.
# Number of channels in slave devices must equal 12 for capture and 10 for playback
# otherwise "invalid argument" errors result.

pcm.multi_capture {
	type multi
	slaves.a.pcm hw:0 
	slaves.a.channels 12
	slaves.b.pcm hw:1
	slaves.b.channels 12

# First 8 channels of first soundcard (capture)
 	bindings.0.slave a
 	bindings.0.channel 0
 	bindings.1.slave a
 	bindings.1.channel 1
 	bindings.2.slave a
 	bindings.2.channel 2
 	bindings.3.slave a
 	bindings.3.channel 3
 	bindings.4.slave a
 	bindings.4.channel 4
 	bindings.5.slave a
 	bindings.5.channel 5
 	bindings.6.slave a
 	bindings.6.channel 6
 	bindings.7.slave a
 	bindings.7.channel 7
    
# First 8 channels of second soundcard (capture)
 	bindings.8.slave b
 	bindings.8.channel 0
 	bindings.9.slave b
 	bindings.9.channel 1
 	bindings.10.slave b
 	bindings.10.channel 2
 	bindings.11.slave b
 	bindings.11.channel 3
 	bindings.12.slave b
 	bindings.12.channel 4
 	bindings.13.slave b
 	bindings.13.channel 5
 	bindings.14.slave b
 	bindings.14.channel 6
 	bindings.15.slave b
 	bindings.15.channel 7

# S/PDIF section. Uncomment bindings if required.

# S/PDIF first soundcard (capture)
 	#bindings.16.slave a
 	#bindings.16.channel 8
 	#bindings.17.slave a
 	#bindings.17.channel 9
    
# S/PDIF second soundcard (capture)
 	#bindings.18.slave b
 	#bindings.18.channel 8
 	#bindings.19.slave b
 	#bindings.19.channel 9
}

ctl.multi_capture {
	type hw
	card 0
}

pcm.multi_playback {
	type multi
	slaves.a.pcm hw:0
	slaves.a.channels 10
	slaves.b.pcm hw:1
	slaves.b.channels 10

# First 8 channels of first soundcard (playback)
 	bindings.0.slave a
 	bindings.0.channel 0
 	bindings.1.slave a
 	bindings.1.channel 1
 	bindings.2.slave a
 	bindings.2.channel 2
 	bindings.3.slave a
 	bindings.3.channel 3
 	bindings.4.slave a
 	bindings.4.channel 4
 	bindings.5.slave a
 	bindings.5.channel 5
 	bindings.6.slave a
 	bindings.6.channel 6
 	bindings.7.slave a
 	bindings.7.channel 7

# First 8 channels of second soundcard (playback)
 	bindings.8.slave b
 	bindings.8.channel 0
 	bindings.9.slave b
 	bindings.9.channel 1
 	bindings.10.slave b
 	bindings.10.channel 2
 	bindings.11.slave b
 	bindings.11.channel 3
 	bindings.12.slave b
 	bindings.12.channel 4
 	bindings.13.slave b
 	bindings.13.channel 5
 	bindings.14.slave b
 	bindings.14.channel 6
 	bindings.15.slave b
 	bindings.15.channel 7

# S/PDIF section. Uncomment bindings if required.

# S/PDIF first soundcard (playback)
 	#bindings.16.slave a
 	#bindings.16.channel 8
 	#bindings.17.slave a
 	#bindings.17.channel 9
    
# S/PDIF second soundcard (playback)
 	#bindings.18.slave b
 	#bindings.18.channel 8
 	#bindings.19.slave b
 	#bindings.19.channel 9
}

ctl.multi_playback {
	type hw
	card 0
}

It is also possible to use the ALSA route plugin to interleave the blocks of audio data channels so MMAP_COMPLEX isn\'t needed, but the route plugin will increase latency to unacceptable levels.

Starting the JACK Audio Routing System

Jack Audio is software used to route digital audio within a computer system. It can connect any source of audio data to any user of audio data on a system, including DSP applications, audio editors, media players, software defined receivers, speakers, headphone jacks, et cetera.

Jack Audio can be started, at a 48 kHz sampling rate, using the following command-line syntax:

$ jackd -d alsa -r 48000 -C multi_capture -P multi_playback
or with realtime privileges:
$ jackd -R -d alsa -r 48000 -C multi_capture -P multi_playback

If one of the graphical interfaces for jack, such as qjackctl are used, be sure to invoke the multicapture and multiplayback options at startup.

Synchronizing Audio Interfaces

Running multiple audio interfaces as one virtual multichannel device requires their word clocks operate in sync. This can be done by connecting the word clock output on the first interface to the word clock input on the second one, and so on. Alternatively, interfaces like the Delta 1010 can be linked via S/PDIF (connect the S/PDIF output on the first card to the S/PDIF input on the second card). In fact, it seems to be a more effective way to sync the clocks. Envy24control from the alsa-tools package should then be used to configure the first interface to use its internal clock and the other interfaces to use their word clock inputs or S/PDIF. Other audio interfaces without word clock connections can be synchronized via the SPDIF in/out.

Another excellent word clock synchronizing method is to use a splitter, and use first interface\'s S/PDIF clock signal to drive the others in parallel. The word clock on card 1 should be set to \'Internal\' and for all of the other cards, set to set the word clock to \'SPDIF in.\'

Once the data streams are synced and fed to the computer, any of the popular SDR software packages may be used to decode and display the received signals. For example, SDRmax, PowerSDR, or Linrad provide the functionality sought by the radio operator. The data may be made available to listeners globally using the innovative WebSDR software.

Using techniques and hardware originally developed for multichannel digital audio production, it is possible to use several inexpensive software defined radio frontends to create a high performance multiband monitoring station, capable of monitoring or recording signifigant segments of radio spectrum simultaneously. When the digital data is fed to a properly equipped web SDR server, remote users worldwide have access to the local radio environment.



Tags: Softrock SDR, Single Clock Multiple Soundcards, Interconnect Audio Interfaces

©2005 - 2020 AB9IL, All Rights Reserved.
About, Contact, Privacy Policy and Affiliate Disclosure, XML Sitemap.