{"id":4408,"date":"2025-12-14T13:50:45","date_gmt":"2025-12-14T13:50:45","guid":{"rendered":"https:\/\/m0aws.co.uk\/?p=4408"},"modified":"2025-12-15T08:03:22","modified_gmt":"2025-12-15T08:03:22","slug":"freedv-audio-routing-with-pihpsdr-and-hermes-lite-2","status":"publish","type":"post","link":"https:\/\/m0aws.co.uk\/?p=4408","title":{"rendered":"FreeDV audio routing with PiHPSDR and Hermes Lite 2"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I&#8217;ve recently been trying out the <a href=\"https:\/\/freedv.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">FreeDV<\/a> RADEv1 digital voice mode on the HF bands with great success. The audio quality is astounding when compared to the normal analog SSB mode. Using only 20w I&#8217;ve been surprised how successful I&#8217;ve been talking to stations in the UK and Europe as can be seen in my <a href=\"https:\/\/m0aws.co.uk\/Logs\/QRO\/M0AWS-FREEDV.html\" target=\"_blank\" rel=\"noreferrer noopener\">FreeDV Log<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FreeDV has been around for quite a few years with development being funded by an <a href=\"https:\/\/www.ardc.net\/apply\/grants\/2023-grants\/enhancing-hf-digital-voice-with-freedv\/\" target=\"_blank\" rel=\"noreferrer noopener\">ARDC<\/a> grant and financial sponsorship from the <a href=\"https:\/\/sfconservancy.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Software Freedom Conservancy.<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So what is <strong><em>FreeDV<\/em><\/strong>?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To quote the <a href=\"https:\/\/freedv.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">FreeDV website<\/a>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;<em>FreeDV is a suite of digital voice modes for HF radio. Our flagship mode is the Radio Autoencoder (<a href=\"https:\/\/freedv.org\/radio-autoencoder\/\">RADE)<\/a>. You can run RADE using a free GUI application for Windows, Linux and macOS that allows any SSB radio to be used for high quality digital voice.<\/em>&#8220;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And the most important part:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;<em>All software is open source, released under the (a) GNU Lesser Public License version 2.1 (GUI and legacy FreeDV modes) and two-clause BSD license (RADE).<\/em>&#8220;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/Freedv.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1643\" height=\"1260\" src=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/Freedv.png\" alt=\"FreeDV running under KDE-Plasma on Kubuntu PC\" class=\"wp-image-4420\" srcset=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/Freedv.png 1643w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/Freedv-300x230.png 300w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/Freedv-768x589.png 768w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/Freedv-1536x1178.png 1536w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">FreeDV running under KDE-Plasma on Kubuntu PC<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Looking at the digital voice (DV) community in the HAM Radio world, it&#8217;s stuffed full with proprietary DV modes from small software houses and black box transceiver manufacturers with no real <a href=\"https:\/\/opensource.com\/resources\/what-open-source\" target=\"_blank\" rel=\"noreferrer noopener\">OpenSource<\/a> alternatives, until now.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Installing FreeDV is pretty simple regardless of which operating system (O\/S) you use. Being a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linux\" target=\"_blank\" rel=\"noreferrer noopener\">Linux<\/a> user I grabbed the <a href=\"https:\/\/freedv.org\/download\/\" target=\"_blank\" rel=\"noreferrer noopener\">AppImage from the website<\/a> and set about reading up on how it works and how it is configured.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I decided to take the two sound card approach since I have 2 USB sound cards connected to my shack <a href=\"https:\/\/kubuntu.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Kubuntu Linux<\/a> PC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Configuring the audio routing isn&#8217;t straight forward as both the receive and transmit audio to\/from the radio needs to be routed via the FreeDV app. To make this even more complicated I am using my <a href=\"https:\/\/m0aws.co.uk\/?p=3624\" target=\"_blank\" rel=\"noreferrer noopener\">Hermes Lite 2 SDR transceiver<\/a> and <a href=\"https:\/\/m0aws.co.uk\/?p=3686\" target=\"_blank\" rel=\"noreferrer noopener\">PiHPSDR<\/a> software, a complete <strong><em>OpenSource\/OpenHardware <\/em><\/strong>Amateur Radio Station.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-PiHPSDR-Audio-Routing.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"985\" height=\"1313\" src=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-PiHPSDR-Audio-Routing.png\" alt=\"M0AWS FreeDV and PiHPSDR Audio Routing Diagram\" class=\"wp-image-4424\" srcset=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-PiHPSDR-Audio-Routing.png 985w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-PiHPSDR-Audio-Routing-225x300.png 225w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-PiHPSDR-Audio-Routing-768x1024.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">M0AWS FreeDV and PiHPSDR Audio Routing Diagram<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Trying to clearly describe the audio routing using words alone would be impossible and very confusing so, I put together the diagram above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Using two USB sound cards I&#8217;ve configured the system such that USB Sound Card 1 (an old Griffin iMic USB sound device) handles just the audio from\/to the headphones and microphone. All the audio at this point in the system is analogue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The second USB sound card, a cheap Plug and Play (PNP) USB audio device from Amazon, handles all the digitised signals from\/to FreeDV and PiHPSDR.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Taking this 2 sound card approach keeps confusion to a minimum and separates the analogue and digital components of the audio routing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, how does this translate to the FreeDV and PiHPSDR audio settings?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Transmit Audio Chain<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">FreeDV Transmit Audio Settings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Starting at the beginning of the transmit audio chain, let&#8217;s look at the <strong><em>transmit<\/em><\/strong> audio settings in <strong><em>FreeDV<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Looking at the FreeDV <strong><em>Transmit<\/em><\/strong> audio settings screenshot below we can see that the <br><strong><em>Input From Microphone to Computer<\/em><\/strong> device is set to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alsa_input.usb-Griffin_Technology_Inc_iMic_USB_audio_system-00.analog-stereo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is the microphone connection on the iMic USB device (USB Sound Card 1) and is the <strong><em>analogue transmit audio<\/em><\/strong> input to <strong><em>FreeDV<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong><em>Output From Computer to Radio<\/em><\/strong> device is set to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is the <strong><em>digitised audio output<\/em><\/strong> from <strong><em>FreeDV<\/em><\/strong> (via USB Sound Card 2) to <strong><em>PiHPSDR<\/em><\/strong> and is used as the transmit audio that is sent to the Hermes Lite 2 transceiver.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-TX-Audio-Settings.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1030\" height=\"679\" src=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-TX-Audio-Settings.png\" alt=\"FreeDV Transmit Audio Settings\" class=\"wp-image-4439\" srcset=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-TX-Audio-Settings.png 1030w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-TX-Audio-Settings-300x198.png 300w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-TX-Audio-Settings-768x506.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">FreeDV Transmit Audio Settings<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">PiHPSDR Transmit Audio Setting<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To complete the <strong><em>transmit<\/em><\/strong> audio path we next need to look at the <strong><em>PiHPSDR<\/em><\/strong> transmit audio setting.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-TX-Audio-Setting.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1069\" height=\"451\" src=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-TX-Audio-Setting.png\" alt=\"PiHPSDR Transmit Audio Settings\" class=\"wp-image-4440\" srcset=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-TX-Audio-Setting.png 1069w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-TX-Audio-Setting-300x127.png 300w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-TX-Audio-Setting-768x324.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">PiHPSDR Transmit Audio Settings<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">As can be seen in the screenshot above, the <strong><em>Local Microphone<\/em><\/strong> device in <strong><em>PiHPSDR<\/em><\/strong> is set to the <strong><em>Monitor of USB PnP Audio Device Analogue Stereo<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This effectively routes the digitised <strong><em>output<\/em><\/strong> audio from <strong><em>FreeDV<\/em><\/strong> (Output From Computer to Radio device) to the Input audio of PiHPSDR.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The reason for using the <strong><em>Monitor<\/em><\/strong> audio feed is because FreeDV does not recognise the <strong><em>Mic Input<\/em><\/strong> in <strong><em>PiHPSDR<\/em><\/strong> as a valid output device for FreeDV to use, hence we just need to monitor the FreeDV output device and use it as our input audio device in PiHPSDR.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This completes the <strong><em>transmit<\/em><\/strong> audio chain.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Receive Audio Chain<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">PiHPSDR Receive Audio Setting<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Starting at the beginning of the receive audio chain we first look at the PiHPSDR receive audio setting.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-RX-Audio-Setting.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"978\" height=\"276\" src=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-RX-Audio-Setting.png\" alt=\"PiHPSDR Receive Audio Setting\" class=\"wp-image-4453\" srcset=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-RX-Audio-Setting.png 978w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-RX-Audio-Setting-300x85.png 300w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/PiHPSDR-FreeDV-RX-Audio-Setting-768x217.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">PiHPSDR Receive Audio Setting<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the screenshot above we can see that the receive audio output from <strong><em>PiHPSDR<\/em><\/strong> is set to<br><strong><em>USB PnP Audio Device Analogue Stereo<\/em><\/strong> (USB Sound Card2). This is the DX station&#8217;s digitised audio as received by the Hermes Lite 2.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">FreeDV Receive Audio Settings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Next let&#8217;s look at the <strong><em>receive<\/em><\/strong> audio setting in <strong><em>FreeDV<\/em><\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-RX-Audio-Settings.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1030\" height=\"679\" src=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-RX-Audio-Settings.png\" alt=\"FreeDV Receive Audio Settings\" class=\"wp-image-4452\" srcset=\"https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-RX-Audio-Settings.png 1030w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-RX-Audio-Settings-300x198.png 300w, https:\/\/m0aws.co.uk\/wp-content\/uploads\/2025\/12\/FreeDV-RX-Audio-Settings-768x506.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">FreeDV Receive Audio Settings<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong><em>Input To Computer from Radio<\/em><\/strong> device is set to the <strong><em>monitor<\/em><\/strong> of the <br><strong><em>USB PnP Audio Output  Device<\/em><\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alsa_output_usb_0c76_USB_PnP_Audio_Device-00.analog-stereo.monitor<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This effectively routes the <strong><em>digitised<\/em><\/strong> audio output from the  <strong><em>PiHPSDR<\/em><\/strong> receiver to the digitised audio input of <strong><em>FreeDV<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once again we have to use the <strong><em>monitor<\/em><\/strong> of the USB PnP Audio Output device as FreeDV does not recognise the PiHPSDR output as a valid input device.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next, the <strong><em>Output From Computer To Speaker\/Headphones<\/em><\/strong> device is set to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alsa_output.usb-Griffin_Technology_Inc_iMic_USB_audio_system-00.analog-stereo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is the analogue audio output on the iMic USB Sound card (Sound Card 1) that routes the analogue audio to the headphones and completes the <strong><em>receive<\/em><\/strong> audio chain.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The audio routing required by FreeDV can appear very daunting when first attempting to configure it on the Linux platform but, hopefully the diagram and screenshots above will help in understanding the complete end-to-end audio chain that is required to make this mode work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PiHPSDR can of course be replaced by your black box radio CODEC entries that will appear in the device lists shown above if you have your radio connected via USB. The config is basically the same but, just uses a different device instead of USB sound card 2 shown in the diagram above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I hope this article is useful to those wanting to try FreeDV on the Linux platform and I look forward to hearing you on RADEv1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">More soon &#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve recently been trying out the FreeDV RADEv1 digital voice mode on the HF bands with great success. The audio quality is astounding when compared to the normal analog SSB mode. Using only 20w I&#8217;ve been surprised how successful I&#8217;ve been talking to stations in the UK and Europe as can be seen in my &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/m0aws.co.uk\/?p=4408\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;FreeDV audio routing with PiHPSDR and Hermes Lite 2&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[54,58,132,163,535,20,329,534,334,42,532,4,536,399,455,407,409,410,171,38,456,309,310,538,135,400,134,170,345,533,443,5,539,537,258,215],"tags":[],"class_list":["post-4408","post","type-post","status-publish","format-standard","hentry","category-audio","category-audio-codec","category-debian","category-devices","category-digil","category-digitalmodes","category-digitalvoice","category-digiu","category-dv","category-dx","category-freedv","category-ham-radio","category-headphones","category-hermeslite2","category-hfbands","category-hl2","category-kde","category-kde-plasma","category-kubuntu","category-linux","category-linuxmint","category-mic","category-microphone","category-openhardware","category-opensource","category-pihpsdr","category-projects","category-pulse-audio","category-pulseaudio","category-radev1","category-receiver","category-sdr","category-soundcard","category-speaker","category-ssb","category-ubuntu"],"_links":{"self":[{"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/4408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4408"}],"version-history":[{"count":67,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/4408\/revisions"}],"predecessor-version":[{"id":4486,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/4408\/revisions\/4486"}],"wp:attachment":[{"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/m0aws.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}