Streaming audio over UDP

Starting with version 2.3 gqrx has an option to stream the audio over UDP to a remote host. This can be used to send the audio to external data decoders or for remote monitoring. This post describes the streaming functionality in gqrx and provides a few examples for how to use it.

The streamed audio has the following specifications:

  • Channels: 1 (left)
  • Sample rate: 48 kHz
  • Sample format: 16 bit signed, little endian (S16LE)

First, you must configure the network settings. This is done in the Network tab of the audio settings window:

Network settings

As can be seen on the screenshot the remote host and port number are configurable. You can enter a host name or an IP address as long as it resolves.

Once configured you can start streaming by simply pressing the small network button located left to the audio recording button, see the red marking on the screenshot below.

The network streaming button in gqrx.

You can verify the data is coming through at the opposite end using netcat or nc:

$ nc -l -u 7355

You should see a lots of funny symbols scroll through the terminal. You can now pipe the output of netcat to other applications, see the next section for examples.

If you don’t see any output, try including the host name or IP in the command line:

$ nc -l -u localhost 7355


$ nc -l -u 7355


Play audio using the alsa player

The following example will send the audio to the ALSA player application:

$ nc -l -u 7355 | aplay -r 48k -f S16_LE -t raw -c 1

If you get command not found you must install the alsa-utils package.

Decode POCSAG using multimon-ng

The following command line will re-sample the raw audio to 22.05 kHz and send it to multimon-ng and decode POCSAG data (thanks to André Schmelzer for this):

$ nc -l -u 7355 | \
    sox -t raw -esigned-integer -b16 -r 48000 - -esigned-integer -b16 -r 22050 -t raw - | \
    multimon-ng -t raw -a SCOPE -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -f alpha -

Note that the above is one command line. I just used the ‘\’ character to split one long line into multiple lines for readability.

Decode APRS using direwolf

The following command line will start Direwolf with UDP input (requires Direwolf 1.0-beta or later):

$ direwolf -r 48000 udp:7355

Streaming audio to VLC

The following command line will start VLC playing raw reading audio from the UDP socket:

$ vlc --demux=rawaud --rawaud-channels=1 --rawaud-samplerate=48000 udp://@:7355


Author: Alexandru Csete

All-round nerd and space hacker. Known as OZ9AEC on the air.

  • André

    Thanks a lot for this nice feature!

    Thats how I use it to decode POCSAG, with multimon-ng:

    nc -l -u 7355 | sox -t raw -esigned-integer -b16 -r 48000 – -esigned-integer -b16 -r 22050 -t raw – | multimon-ng -t raw -a SCOPE -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -f alpha –

    • Excellent, thanks! I have included your example at the end of the post.

      • Diego Esep

        Hello, Direwolf 1.0 beta (best APRS software decoder!) with UDP support is available from this link:
        It can be used with gqrx UDP output using the following command line:
        direwolf –r 48000 udp:7355
        Multiple APRS decoders (3 decoders running in parallel) can be enabled by using the following line in the direwolf.conf configuration file:
        MODEM 1200 1200 2200 ABC
        I’m getting very good results with the FunCube Dongle Pro+, gqrx and DIrewolf 1.0 for APRS decoding!

  • Diego Esep

    Hello, the direwolf 1.0 release including udp source should be coming soonai, it will be available on this page, I will keep you updated about the 1.0 release date:

  • James

    Another example, to stream to VLC Media Player:

    nc -l -u 7355 | vlc –demux=rawaud –rawaud-channels=1 –rawaud-samplerate=48000 –

    Note that on Mac OS X, the VLC command-line binary is typically located at /Applications/ (replace ‘vlc’ above with this path).

    • Thanks for the example. I have added it to the post.

  • AsciiWolf

    If you have dsd v1.7.0 or newer (from, you can use:
    nc -l -u 7355 | padsp dsd -i –
    (Please note I use padsp to emulate OSS because the PortAudio ALSA output (-o pa:11) doesn’t seem to work well on my system and causes dsd to crash.)

  • Paul Edwards

    Having played with the above for a few days – I noticed that GQRX does not seem to start streaming remotely unless you have previously set it to stream locally.

    Caught me out for a while…

    • Paul,
      Do you mean that first you have to stream to localhost address before you can stream to a remote address?

  • Elliot

    Want to send audio over UDP, and I stubbled across this. I’m unsure how to use / download this software. Can anyone point me in the right direction? Cheers

    • caoimhin

      Gqrx is available here:

      I don’t think this is what you’re looking for however. This is for receiving and decoding radio signals. The streaming function is a utility function to enable flexible processing of these signals by various applications.

  • Barry

    Im having a problem with this, how do i connect / listen to that audio on another computer on my LAN? and where is has ‘udp://@:7355’ should i be entering the network ip of the computer that im streaming from for example: ‘udp://@’.


    • Barry,
      It’s the other way around. In gqrx you enter the IP address and port number of the host you want to send the audio to. In the receiving end you then enter only the port number you listen on, i.e. in VLC: udp://@:7355

      • Barry

        thanks for that. im one step closer in that it seems to connect, however all i’m getting is the odd click noise. no audio. ive defined the UDP Host as the ip i want to listen to the stream on and the UDP port as 7355. In VLC player on the computer i want to listen on i set udp://@:7355 in file > open network > URL then click open.

        If i use terminal to run the command below instead I get the following output in Terminal:

        [0000000100282cc8] core interface error: no suitable interface module
        [0000000100312818] core libvlc error: interface “(null),none” initialization failed
        [0000000100312818] core libvlc: Running vlc with the default interface. Use ‘cvlc’ to use vlc without interface.

        Command: vlc –demux=rawaud –rawaud-channels=1 –rawaud-samplerate=48000 udp://@:7355

        Any advice?


        • Barry

          * UPDATE *

          I am certainly getting UDP data from GQRX to my other computer as when i run – nc -l -u 7355 in Terminal and activate the broadcast in GQRX Terminal goes wild with data.

          My problem now is that in VLC i dont hear any audio.

          • Barry

            * UPDATE *

            All working :)

          • spud

            How you fix problem with VLC ?

          • Ritchie

            Hi and tks for your reply but NO :( I am disappointed…

            Do you can help me ?

  • Ritchie

    Hi all the command VLC for UDP don’t works !! I have “error core ausio fil buffer” any idea? Thanks

  • Ritchie

    Hi all here the exactly the error I have “core stream error: cannot pre fill buffer” any idea ? Thanks by advance.

  • Ritchie

    Nobody Help ? here the exact message I have enclosed “core stream error: cannot pre fill buffer” thanks all

    • Jason J

      I get this when I forget to turn UDP streaming on by pressing the UDP button.

  • Jason J

    Hey for anyone who was looking to remotely listen to your UDP stream, I came up with something that works pretty well. I couldn’t get other versions (Windows/Mobile) of VLC to play the raw UDP audio, so I played around with transcoding and streaming which worked. When I was experimenting with this, I couldn’t get MP3 transcoding to work and didn’t really get much into why it wouldn’t work. I suspect it has something to do with the licensing issues revolving around the codec. I wanted to use MP3 so that the stream would be more easily supported by other players, but I haven’t gotten that working yet. So for now I am using Ogg Vorbis (similar to MP3 but open source) as the codec, and VLC as the player, and it works in my LAN and over an internet connection as well using my Android phone, I have also tested it on an iPhone. Of course you will have to do some port forwarding or other network configuring if you use NAT to get an outside connection to work. When I was first attempting this I was trying to do it through the VLC GUI which wouldn’t work so I just went to command line on a terminal. Here is the command line:

    vlc –demux=rawaud –rawaud-channels=1 –rawaud-samplerate=48000 udp://@:7355 –sout ‘#standard{access=http,mux=ogg,dst=:}’

    the IP address should be of the computer you’re running this command on then a colon, then pick a port number you want to use, it could be anything really, I use 8888 because it’s an http:// URL and easy to remember. If you want to be able to listen from the internet, I would pick a non-standard port above port number 1024 as a lot of ISPs block standard ports. for example dst=

    then on your remote players (as far as I know VLC is the only one that works unless you can find another that supports http streams using Ogg Vorbis) go to the open stream and put in http://:, if you are outside your LAN then put your public IP address instead of your LAN address. Open it and you should start hearing audio from GQRX. I’ve noticed there is a one to two second delay on the audio. I haven’t had much time, but you can play around with different streaming options to support more players. Happy Streaming!

    • Jason J

      It seems Disquss didn’t like my formatting, it assumed some sort of HTML or XML tags in my code example above I guess. I’ll try with parenthesis:

      vlc –demux=rawaud –rawaud-channels=1 –rawaud-samplerate=48000
      udp://@:7355 –sout ‘#standard{access=http,mux=ogg,dst=(IP ADDRESS OF YOUR SOURCE):(PICK A PORT NUMBER)}’

      Also it looks like I forgot to mention that you do not actually put in the angle brackets or parenthesis when you run this command, but you do put in the curly brackets before the word access and after your port number.

  • Arnaud Boyer

    Hello, I can’t stream on UDP, everything fine on GQRX, but on terminal, nothing (tried all type of nc) :
    root@kali:~# nc -l -u 7355
    UDP listen needs -p arg
    root@kali:~# nc -l -u -p 7355
    root@kali:~# nc -p 7355
    no destination
    root@kali:~# nc -u -p 7355
    no destination
    root@kali:~# nc -l -p 7355
    root@kali:~# nc -l -u localhost 7355
    UDP listen needs -p arg
    root@kali:~# nc -l -u localhost -p 7355
    root@kali:~# nc -l -u -p 7355

    ^C = blank result …

    Any ideas ?

    • Andrea Dari

      It’s because Gqrx in its default stream audio over UDP settings uses localhost IPv6 address ( ::1), to make it works with nc you have to change the stream address in Gqrx and use