FT991/A DSP in Linux

Using the FT-991/A USB audio port for voice input in Linux PC

Project goals

  • Replicate the functionality of VoiceMeeter configuration (Windows) using Linux OS

  • Use any standard USB computer headset or microphone connected to the computer to process voice audio before sending to radio

  • Use the radio hands-free and PTT via CAT, Vox, or external switch

  • Playback pre-recorded CQ calls

  • Record and playback sound from the radio

Software used

  • Jack (Jack Audio Connection Kit)

  • Carla (fully-featured modular audio plugin host, with support for many audio drivers and plugin formats)

  • Calf Studio Gear (one of the first projects to bring graphical audio plugins to Linux)

  • ALSA (Advanced Linux Sound Architecture - provides audio and MIDI functionality to the Linux operating system)

  • Pulseaudio (general purpose sound server intended to run as a middleware between your applications and your hardware devices)

Connections diagram

Linux audio configuration

Obtain PLAYBACK audio devices [Outputs] (card names in bold):

$ aplay -l

**** List of PLAYBACK Hardware Devices ****

card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog [ALC269VC Analog]

Subdevices: 0/1

Subdevice #0: subdevice #0

card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]

Subdevices: 1/1

Subdevice #0: subdevice #0

card 1: headset [Sennheiser USB headset], device 0: USB Audio [USB Audio]

Subdevices: 0/1

Subdevice #0: subdevice #0

card 2: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]

Subdevices: 0/1

Subdevice #0: subdevice #0


Obtain RECORDING audio devices [Inputs] (card names in bold):

$ arecord -l

**** List of CAPTURE Hardware Devices ****

card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog [ALC269VC Analog]

Subdevices: 0/1

Subdevice #0: subdevice #0

card 1: headset [Sennheiser USB headset], device 0: USB Audio [USB Audio]

Subdevices: 0/1

Subdevice #0: subdevice #0

card 2: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]

Subdevices: 0/1

Subdevice #0: subdevice #0

card 3: Microphone [Logitech USB Microphone], device 0: USB Audio [USB Audio]

Subdevices: 0/1

Subdevice #0: subdevice #0


Starting JACK and audio devices with jack_start.sh script (using card names from the above lists):

-> CODEC is the FT-991A sound card <-

#!/bin/sh

# starting JACK dbus

jackdbus auto >/dev/null &

# starting JACK server

sleep 3

/usr/bin/jackd -m -dalsa -dhw:0 -r44100 -p512 -n2 -H -M -Xraw >/dev/null &

# creating and connecting the default jack sinks

sleep 3

pactl load-module module-jack-sink channels=2 connect=yes

pactl load-module module-jack-source channels=2 connect=yes

sleep 3

pacmd set-default-sink jack_out

pacmd set-default-source jack_in

# creating the audio inputs using card names instead of ids

sleep 3

alsa_in -j HeadsetMic -d hw:CARD=headset -r 48000 >/dev/null &

alsa_in -j Microphone -d hw:CARD=Microphone -r 44100 >/dev/null &

alsa_in -j FromRadio -d hw:CARD=CODEC -r 44100 >/dev/null &

# creating the audio outputs using card names instead of ids

sleep 3

alsa_out -j ExtSpk -d hw:CARD=PCH -r 44100 >/dev/null &

alsa_out -j HeadsetSpk -d hw:CARD=headset -r 48000 >/dev/null &

alsa_out -j ToRadio -d hw:CARD=CODEC -r 44100 >/dev/null &

Carla patchbay

Carla rack

Mike equaliser settings

FT-991/A Menu settings

These are the settings needed to accept mike audio via USB port and use VOX PTT activation (if turned on via F-key or CAT.)
Alternatively PTT can be achieved via CAT (FLrig)

  • 045 AM MIC SELECT -> REAR

  • 048 AM PORT SELECT -> USB

  • 074 FM MIC SELECT -> REAR

  • 077 FM PORT SELECT -> USB

  • 106 SSB MIC SELECT -> REAR

  • 109 SSB PORT SELECT -> USB

  • 142 VOX SELECT -> DATA

  • 146 DATA VOX GAIN -> 90

  • 147 DATA VOX DELAY -> 1000msec