Can't get local speaker audio from RTLSDR-Airband

cvthompson

Member
Joined
Jul 7, 2025
Messages
18
I'm having trouble getting audio from RTLSDR-Airband on my Raspberry Pi. I'm pretty sure I'm receiving audio scrolling display after start the app shows a signal when I key a local handheld. This is when I PTT a local handheld I see a value of 0 (dB?). I'm trying to route that to a local USB speaker on the same Raspberry Pi.

Here is what I think I know.
* It is a Raspberry Pi 4.
* Started by installing Debian Bookworm 64-bit.
* I built the RTL-SDR app from source.
* I'm using an RTLSDR Blob V4. I built the drivers for that from source. The dongle works when I connect it to my Windows 11 desktop, use SDRSharp, and tune to the local Seattle Approach.
* The speakers work when I play a YouTube video.
* I think I need to route the audio through PulseAudio. I think PulseAudio server is running.

Here is my "rtl_airband.conf" file:
<snip on>
devices:
({
type = "rtlsdr";
index = 0;
gain = 25;
centerfreq = 122.725;
correction = 0;
channels:
(
{
freq = 122.725;
squelch_threshold = -60;
outputs: (
{
type = "pulse";
}
);
}
);
}
);
<snip off>
 

cvthompson

Member
Joined
Jul 7, 2025
Messages
18
Dongle can work in windows. Do you have correct driver for Linux?
I built the custom version of librtlsdr for Linux (Debian) with the instructions here:
RTL-SDR Blog V4 Users Guide

When I start the RTLSDR-Airband program it indicates that it has found and connected to the dongle. The numeric (scrolling) display in the console window goes from "-40" to about "0" when I key an airband handheld and do a test.

Curtis
 

PDXh0b0

Active Member
Premium Subscriber
Joined
Mar 31, 2020
Messages
895
Location
Woodland, WA
My issue was pulseaudio/alsa, never did get it working, had to go the icecast route
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
I just took a deep dive into getting a USB sound card to work on a Raspberry Pi B3+

There are a lot of CLI trouble shooting that can be down. Let me try and put something together from my history.
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
I just took a deep dive into getting a USB sound card to work on a Raspberry Pi B3+

There are a lot of CLI trouble shooting that can be down. Let me try and put something together from my history.
The main issue I had was the built in audio (head phone jack) being the default and steeling the audio.

Here are some of the CLI commands to look into.

105 lsmod | grep snd_usb_audio (list the usb audio devices)
106 aplay -l
107 cd /etc/modprobe.d
108 sudo nano alsa-base.conf (change the settings)

153 sudo raspi-config (can configure the audio)

156 speaker-test -t wav -c 2 -D hw:1 (neat built in sound test, hw:0 or 1)

183 htop (quick way to see what is running)

184 vcgencmd measure_temp (how well is the cooling? )

208 systemctl --user status pulseaudio (is pulseaudio running? )

Somewhat advanced stuff, let me know if any questions.
 

cvthompson

Member
Joined
Jul 7, 2025
Messages
18
Does this mean that pulseaudio is not working?

<snip on>
charlievictor102@n701gt:~ $ systemctl --user status pulseaudio
○ pulseaudio.service - Sound Service
Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; preset:>
Active: inactive (dead)
TriggeredBy: ○ pulseaudio.socket
<snip off>

Curtis
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
Does this mean that pulseaudio is not working?

<snip on>
charlievictor102@n701gt:~ $ systemctl --user status pulseaudio
○ pulseaudio.service - Sound Service
Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; preset:>
Active: inactive (dead)
TriggeredBy: ○ pulseaudio.socket
<snip off>

Curtis
Correct, it is not running. Run systemctl --user start pulseaudio and then rerun the command above.

You should see active not dead.

BTW - I did not need pulseaudio to get my Raspberry Pi 3B+ to play audio out of the USB card (CM 108)
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
Maybe start with running a couple of commands:

cd /etc/modprobe.d

then

less alsa-base.conf (or cat) will display the contents of the file

Here is what is working on my Pi

options snd_usb_audio index=0
options snd_bcm2835 index=1
options snd slots=snd_usb_audio,snd_bcm2835

Got to make sure the audio is getting set to the correct device:

aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 2: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
bogus@mainframe:~ $

As you can see the 3B+ has two other built in audio devices. I would think the Pi 4 would be similar.

Hope this helps
 

cvthompson

Member
Joined
Jul 7, 2025
Messages
18
Thanks dkcorlfla.

I ran "systemctl --user start pulseaudio" and there were no adverse indications.

Then I ran "systemctl --user status pulseaudio" and get this:
<snip on>
charlievictor102@n701gt:/etc/modprobe.d $ systemctl --user status pulseaudio
● pulseaudio.service - Sound Service
Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; preset:>
Active: active (running) since Wed 2025-07-09 16:05:12 PDT; 6min ago
TriggeredBy: ● pulseaudio.socket
Main PID: 1989 (pulseaudio)
Tasks: 4 (limit: 3920)
CPU: 2.722s
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pulsea>
└─1989 /usr/bin/pulseaudio --daemonize=no --log-target=journal

Jul 09 16:05:08 n701gt pulseaudio[1989]: The decibel volume range for element '>
Jul 09 16:05:08 n701gt pulseaudio[1989]: The decibel volume range for element '>
Jul 09 16:05:08 n701gt pulseaudio[1989]: The decibel volume range for element '>
Jul 09 16:05:08 n701gt pulseaudio[1989]: The decibel volume range for element '>
Jul 09 16:05:08 n701gt pulseaudio[1989]: The decibel volume range for element '>
Jul 09 16:05:08 n701gt pulseaudio[1989]: Failed to find a working profile.
Jul 09 16:05:08 n701gt pulseaudio[1989]: Failed to load module "module-alsa-car>
Jul 09 16:05:12 n701gt systemd[730]: Started pulseaudio.service - Sound Service.
Jul 09 16:05:12 n701gt pulseaudio[1989]: Could not find org.bluez.BatteryProvid>
Jul 09 16:05:12 n701gt pulseaudio[1989]: org.bluez.ProfileManager1.RegisterProf>
lin
<snip off>

I don't think I have a file "alsa-base.conf" but I have a directory "/etc/modprobe.d".

I ran "aplay-l" and I get this:
<snip on>
charlievictor102@n701gt:/etc/modprobe.d $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: AUDIO [USB AUDIO], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
<snip off>

I ran "rtl_airband" but still no audio when I key the handheld. There is a "*" to the right of the scrolling display of signal values when I key the handheld. I have the squelch configured for something like -40. This leads me to believe I'm receiving. YouTube videos play with audio.

Curtis
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
Perhaps the next thing to try is to run the built in speaker test:

First just for kicks plug in a headphone or an amplified speaker pair - (a set of standard computer speakers) into the built in headphone jack on the raspberry pi then run:speaker-test -t wav -c 2 -D hw:0

With a little luck you will hear left speaker then right speaker and so on.

Ctrl - c to stop.

If this pans out then everything is working. You will just need to configure the audio to use card 3 instead of card 0
 

cvthompson

Member
Joined
Jul 7, 2025
Messages
18
@dkcorlfla,

Thank you for spending the time to help me.

I hooked up a speaker to the 3.5mm jack on the RPi 4 in addition to the original USB speakers.

I do a fresh power on. I don't think "rtl_airband" is automatically running yet.

Like before, I do the "systemctl --user status pulseaudio" and get the "inactive (dead)" indication like before.

I do the "aplay -L" command and get a list of a bunch of audio devices. I get a different kind of list than when I run "aplay -l". I think these might be the most significant entries:
<snip on>
charlievictor102@n701gt:~ $ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
default
Playback/recording through the PulseAudio sound server
* * *
jack
JACK Audio Connection Kit
* * *
pulse
PulseAudio Sound Server
* * *
hw:CARD=Headphones,DEV=0
bcm2835 Headphones, bcm2835 Headphones
Direct hardware device without any conversions
* * *
<snip off>

Audio from playing a Youtube video on Chrome goes to the USB speakers.

Running the "speaker-test -t wav -c 2 -D hw:0" command produces audio on the 3.5mm jack speaker. I think this confirms that the 3.5mm jack is working.

Running "speaker-test -t wav -c 2 -D hw:3" produces audio from the USB speakers.

Running "sudo /usr/local/bin/rtl_airband -f" starts but no audio to either speaker. I <ctrl>-C out of "rtl_airband".

Running the the "speaker-test" again proves that the speakers are still working.

I run "systemctl --user start pulseaudio" and then "systemctl --user status pulseaudio" and I get the "Failed to find a working profile." and other errors like before.

Running the the "speaker-test" again and the speakers are still working. I'm thinking that PulseAudio is automatically started at power up.

Where should I proceed from here?

Thanks again,
Curtis
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
@dkcorlfla,

Thank you for spending the time to help me.

I hooked up a speaker to the 3.5mm jack on the RPi 4 in addition to the original USB speakers.

I do a fresh power on. I don't think "rtl_airband" is automatically running yet.

Like before, I do the "systemctl --user status pulseaudio" and get the "inactive (dead)" indication like before.

I do the "aplay -L" command and get a list of a bunch of audio devices. I get a different kind of list than when I run "aplay -l". I think these might be the most significant entries:
<snip on>
charlievictor102@n701gt:~ $ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
default
Playback/recording through the PulseAudio sound server
* * *
jack
JACK Audio Connection Kit
* * *
pulse
PulseAudio Sound Server
* * *
hw:CARD=Headphones,DEV=0
bcm2835 Headphones, bcm2835 Headphones
Direct hardware device without any conversions
* * *
<snip off>

Audio from playing a Youtube video on Chrome goes to the USB speakers.

Running the "speaker-test -t wav -c 2 -D hw:0" command produces audio on the 3.5mm jack speaker. I think this confirms that the 3.5mm jack is working.

Running "speaker-test -t wav -c 2 -D hw:3" produces audio from the USB speakers.

Running "sudo /usr/local/bin/rtl_airband -f" starts but no audio to either speaker. I <ctrl>-C out of "rtl_airband".

Running the the "speaker-test" again proves that the speakers are still working.

I run "systemctl --user start pulseaudio" and then "systemctl --user status pulseaudio" and I get the "Failed to find a working profile." and other errors like before.

Running the the "speaker-test" again and the speakers are still working. I'm thinking that PulseAudio is automatically started at power up.

Where should I proceed from here?

Thanks again,
Curtis
I have not run rtl_airband before but a quick search says it is intended to be used with: Broadcastify or another icecast server.

Try researching the github page and see if there is anything there about using it local to playback on a sound card.

Install the icecast server???

Some commands to see if it is running or start and reload:
sudo systemctl status rtl_airband.service

sudo systemctl daemon-reload
sudo systemctl enable rtl_airband.service
sudo systemctl start rtl_airband.service

I live direct under the ILS to MCO and there is a lot of aircraft overhead. I might have to play around with this software. Seems very interesting.
 

cvthompson

Member
Joined
Jul 7, 2025
Messages
18
dkcorlfla,

Yes. I think Icecast is the normal way people do it. I read some stuff that indicated that it could go via PulseAudio.

Icecast is what I think most are using to serve up to "LiveATC.com". I was reluctant to go the Icecast route because there are many seconds of delay before it arrives from LiveATC. I want to set this up in my hangar and would like to have audio immediately.

I will try IceCast.

Curtis
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
dkcorlfla,

Yes. I think Icecast is the normal way people do it. I read some stuff that indicated that it could go via PulseAudio.

Icecast is what I think most are using to serve up to "LiveATC.com". I was reluctant to go the Icecast route because there are many seconds of delay before it arrives from LiveATC. I want to set this up in my hangar and would like to have audio immediately.

I will try IceCast.

Curtis
If you can't get the PulseAudio to work then running the IceCast server on the Pi and using it on a LAN should provide instant replay.

I'm going to look into this myself as having the Airband available on the Smartphone and Bluetooth would be nice when I'm outside with all the aircraft flying over.
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
Lots of info is available on the Home

" Streaming to PulseAudio Server
PulseAudio is a sound server which allows sharing audio equipment (sound cards and speakers) across many sound sources (applications). It is a default sound server in pretty much every mainstream Linux distribution.

RTLSDR-Airband can stream uncompressed audio to a PulseAudio server for real-time playback. The server may run on the same machine or on another one, reachable over your local network. Using PulseAudio you can, for example, play the sound via the soundcard of the Raspberry Pi where RTLSDR-Airband is running. Or you can stream the audio from a Pi located near the antenna to speakers connected to the desktop PC you are sitting at. Of course you can do the same thing with Icecast, but with PulseAudio it comes with less hassle - no need to set up a local Icecast server, no need to launch VLC or other audio player. And you get a per-stream volume slider in your desktop mixer. Audio quality is better (no compression) and latency is low (usually below half a second)."

Seems like a fun project. I'm going to try to get it working on my Pi3B+
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
Update - I have rtlsdr-airband playing audio on pulseaudio using a USB card on my Pi 3B+

Learned a lot and it's not trivial to setup but the audio sounds excellent and I learned the program can also do nfm. For now I just have it on airband AM

Will try to put something together.

There was a missing dependency during the compile and pulseaudio requires some config files changes.
 

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
Update - I have rtlsdr-airband playing audio on pulseaudio using a USB card on my Pi 3B+

Learned a lot and it's not trivial to setup but the audio sounds excellent and I learned the program can also do nfm. For now I just have it on airband AM

Will try to put something together.

There was a missing dependency during the compile and pulseaudio requires some config files changes.
Couple of SS. Not working the Pi 3 very hard, it would run on less.
 

Attachments

  • Screenshot From 2025-07-11 15-07-12.png
    Screenshot From 2025-07-11 15-07-12.png
    98.3 KB · Views: 4
  • Screenshot From 2025-07-11 15-07-50.png
    Screenshot From 2025-07-11 15-07-50.png
    33.2 KB · Views: 4

dkcorlfla

Member
Joined
Feb 12, 2023
Messages
482
Location
Orlando
Lots of good docs:



--
The first time I tried to compile I got:
bogus@mainframe:~/RTLSDR-Airband/build $ cmake -DMIRISDR=OFF -DSOAPYSDR=OFF -DSOAPYSDR=OFF -DPULSEAUDIO=ON -DNFM=ON ../
-- Build type not specified: defaulting to Release
-- Found lame includes: /usr/include/lame/lame.h
-- Found lame library: /usr/lib/arm-linux-gnueabihf/libmp3lame.so
-- Checking for module 'libpulse'
-- Package 'libpulse', required by 'virtual:world', not found

Turns out libpulse package name is: libpulse-dev

Try running:
sudo apt install libpulse-dev

Then run cmake again.

Next try running:
pacmd list-modules|grep protocol-tcp

What you want to see is: name: <module-native-protocol-tcp>

To get it working add: load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 to the config file:
sudo nano /etc/pulse/default.pa

Here is my working rtl_airband.conf
Note - the bottom half is not doing anything and I plan to clean it up but this should get you going.

devices: ({
type = "rtlsdr";
index = 0;
gain = 25.4;
correction = 0;
mode = "scan";
sample_rate = 2.4;
buffers = 10;
channels:
(
{
freqs = ( 118700000, 119400000, 121900000, 124200000 );
labels = ( "ExTower", "MCOApproach", "Ground", "N-Approach" );
outputs: (
{
disable = false;
type = "pulse";
server = "127.0.0.1";
stream_name = "Utility channels";
continuous = false;
description = "Local Pulse Server";
},
{
disable = true;
type = "icecast";
server = "audioXXXXXXXX.radioreference.com";
port = 80;
mountpoint = "XXXXXXXX";
name = "XXXXXXXX";
genre = "ATC";
username = "source";
password = "XXXXXXXX";
send_scan_freq_tags = false;
description = "XXXXXXXX";
}
);
}
);
});
~
(END)


The cmake options I used on the working system from the build dir were:
cmake -DPLATFORM=rpiv2 -DMIRISDR=OFF -DSOAPYSDR=OFF -DSOAPYSDR=OFF -DPULSEAUDIO=ON -DNFM=ON ../

Some reboots and it works :)
 
Top