-
-
Save lhammond/36a401d44b0cc9eff08566b6235d9d42 to your computer and use it in GitHub Desktop.
ALSA - Signalink USB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Use this file for a user-configurable ALSA soundcard setup. | |
# Place in the user's home folder (/home/ham/.asoundrc). | |
# This file is built for a Tigertronics Signalink USB, a USB | |
# soundcard designed to interface a computer with an amateur | |
# radio transceiver for digital mode operation. This | |
# configuration allows multiple programs to access the same | |
# sound device simultaneously without blocking the device. | |
# This configuration is built on a custom modprobe | |
# configuration file (/etc/modprobe.d/alsa-base.conf) to | |
# force consistent device labeling. While adjusting parameters, | |
# it is not necessary to reboot or log out to see changes. | |
# Simply save this file, restart the programs using the card | |
# and select the device in the software (if naming changed). | |
# Some notes about the Signalink USB: | |
# Different programs require different sampling rates, ie | |
# WSJT-X _requires_ 48 kHz sampling (thanks to K9YC for the tip!), | |
# while fldigi allows custom sampling rates (given the device | |
# supports them). The native sampling rate for the SLUSB is | |
# 44.1 kHz, but it supports up to 48 kHz. For this config, | |
# I used 48 kHz to satisfy WSJT-X, then adjusted fldigi to match. | |
# Other software requires various numbers of channels, ie qsstv. | |
# While the device has only 1 channel for each input and output, | |
# ALSA may split or join streams with plugins. | |
##################################################################### | |
# Software settings: | |
##################################################################### | |
# Fldigi: | |
# Mono or stereo io | |
# In stereo mode, tx audio is on right channel, so will require | |
# channels to be swapped in audio settings. | |
# WSJT-X: | |
# Mono or stereo io | |
# In stereo mode, tx audio is on right channel only. | |
# Rx audio may use either channel but not both or mono. | |
# QSSTV: | |
# Stereo-only io | |
# Rx audio pulls from one channel only, so splitting the stream to | |
# stereo mode results in audio in all cases. | |
# Tx audio is only one channel, likely right, so must be swapped in | |
# audio settings. | |
# Direwolf: | |
# Mono or stereo io, depending on the number of modems to run. | |
# Each modem requires its own tx and rx channel, so channel count | |
# must match. | |
# ARDOP: | |
# Modem requires a special 12ks/s rate, but is able to use mono or | |
# stereo io. | |
pcm.SIG { | |
type hw | |
card "SIGNALINK" | |
rate 48000 | |
channels 1 | |
nonblock 1 | |
hint.show on | |
hint.description "Signalink USB" | |
} | |
ctl.SIG { | |
type hw | |
card "SIGNALINK" | |
nonblock 1 | |
} | |
# Playback (Tx audio) | |
# Mix multiple audio streams into the final output stream sent to | |
# the device. This lets multiple programs transmit simultaneously. | |
# Most software is able to use smaller buffers, but ARDOP requires | |
# large buffers. | |
pcm.TX { | |
type dmix | |
ipc_key 1024 | |
slave { | |
pcm "SIG" | |
channels 2 | |
rate 48000 | |
buffer_size 32768 | |
} | |
bindings { | |
0 0 | |
1 0 | |
} | |
hint.show on | |
hint.description "Transmitter audio" | |
} | |
ctl.TX { | |
card 0 | |
device 0 | |
} | |
# Capture (Rx audio) | |
# Split receive channel into multiple streams. This | |
# allows multiple programs to monitor the sound device | |
# simultaneously (ie WSJT-X, fldigi and packet). | |
# Waterfall displays may run slowly with small buffers. | |
# Most software is able to use smaller buffers, but ARDOP requires | |
# large buffers. | |
pcm.RX { | |
type dsnoop | |
ipc_key 2048 | |
ipc_key_add_uid on | |
slave { | |
pcm "SIG" | |
channels 2 | |
rate 48000 | |
buffer_size 32768 | |
} | |
bindings { | |
0 0 | |
1 0 | |
} | |
hint.show on | |
hint.description "Receiver audio" | |
} | |
ctl.RX { | |
card 0 | |
device 0 | |
} | |
# Half-duplex IO device | |
# Present new stream mixers as a single device. Some software | |
# only recognizes a single device as the IO device, rather than | |
# allowing the user to select different input and output devices. | |
# DireWolf is one such program. | |
pcm.XCVR { | |
type asym | |
playback.pcm "TX" | |
capture.pcm "RX" | |
} | |
ctl.XCVR { | |
card 0 | |
device 0 | |
} | |
# ARDOP device | |
# ARDOP only supports 12ks/s so must use rate conversion module. | |
# Software that accesses this PCM is able to set a custom rate. | |
pcm.TX_ARDOP { | |
type rate | |
slave { | |
pcm "SIG" | |
rate 48000 | |
} | |
hint.show on | |
hint.description "TX audio device for ARDOP" | |
} | |
pcm.RX_ARDOP { | |
type rate | |
slave { | |
pcm "SIG" | |
rate 48000 | |
} | |
hint.show on | |
hint.description "RX audio device for ARDOP" | |
} | |
# SDR Loopback device | |
# This device consumes audio from SDR_IN and spits it out SDR_OUT. | |
# This allows local software to consume audio exactly as if it were | |
# coming from a physical card. As with the Signalink, use dmix and | |
# dsnoop plugins to allow multiple clients to use the device. Since | |
# there is no transmit capability in most SDRs, only one consumer | |
# is needed and no transmit audio is needed. | |
pcm.SDR_IN { | |
type hw | |
card "SDRLB" | |
device 0 | |
subdevice 0 | |
nonblock 1 | |
format "S16_LE" | |
channels 1 | |
rate 48000 | |
hint.show on | |
hint.description "Send nc packets here" | |
} | |
pcm.SDR_OUT { | |
type hw | |
card "SDRLB" | |
device 1 | |
subdevice 0 | |
} | |
pcm.SDR_OUT_TX { | |
type dmix | |
ipc_key 4090 | |
ipc_key_add_uid on | |
slave { | |
pcm "SDR_OUT" | |
channels 2 | |
rate 48000 | |
# buffer_size 4096 | |
} | |
bindings { | |
0 0 | |
1 0 | |
} | |
hint.show on | |
hint.description "SDR transmit feed" | |
} | |
pcm.SDR_OUT_RX { | |
type dsnoop | |
ipc_key 8190 | |
ipc_key_add_uid on | |
slave { | |
pcm "SDR_OUT" | |
channels 2 | |
rate 48000 | |
# buffer_size 4096 | |
} | |
bindings { | |
0 0 | |
1 0 | |
} | |
hint.show on | |
hint.description "SDR receive feed" | |
} | |
pcm.SDR_OUT_RX_ARDOP { | |
type rate | |
slave { | |
pcm "SDR_OUT_RX" | |
rate 48000 | |
} | |
hint.show on | |
hint.description "SDR device for ARDOP" | |
} | |
pcm.SDR_OUT_TX_ARDOP { | |
type rate | |
slave { | |
pcm "SDR_OUT_TX" | |
rate 48000 | |
} | |
hint.show on | |
hint.description "SDR device for ARDOP" | |
} | |
pcm.XONAR { | |
type hw | |
card "U5" | |
nonblock 1 | |
rate 192000 | |
hint.show on | |
hint.description "Xonar U5" | |
} | |
ctl.XONAR { | |
type hw | |
card "U5" | |
nonblock 1 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# udev rules for soundcard names. This file does nothing but make | |
# sound device names more human-readable. Place in: | |
# /etc/udev/rules.d/70-alsa-permanent.rules | |
SUBSYSTEM!="sound", GOTO="usb_audio" | |
ACTION!="add", GOTO="usb_audio" | |
ATTRS{idVendor}=="08bb", ATTRS{idProduct}=="2904", ATTR{id}="SIGNALINK" | |
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0a1f", ATTR{id}="G930" | |
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="081a", ATTR{id}="WEBCAM" | |
LABEL="usb_audio" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This is a configuration file for modprobe (/etc/modprobe.d/alsa-base.conf) | |
# to force specific device ordering and indexing. This then exposes the devices | |
# to ALSA in the proper order regardless of the number of devices plugged in or | |
# the order they were connected. | |
# 0: HDMI | |
# 1: G930: 046d:0a1f | |
# 2: SIGNALINK: 08bb:2904 | |
# 3: WEBCAM: 046d:081a | |
# Force snd-usb-audio to be second loaded sound module in modprobe | |
options snd slots=,snd-usb-audio | |
# Force index order of specific sound cards for predictable ordering and indexing | |
options snd-usb-audio index=1,2,3 vid=0x046d,0x08bb,0x046d pid=0x0a1f,0x2904,0x081a | |
# Hide on-board Intel audio chip (I don't use it) | |
options snd-hda-intel probe_mask=0xffff |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment