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

Embedded software engineer in the satcom industry during the day. Radio amateur and SDR hacker during the night.

  • 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 ?

        • Mike Connell

          I had the same problem, but what I did was put in the ip addr of the machine that I want to hear in the udp port entry. The format of the udp address, now looking at it, makes sense, but took a bunch of tries. Enter this in the command line for the udp address udp://….. 196 is the machine that is sending the stream. You’ll need to substitute your ip address for the transmitting machine in the cvlc command.

  • 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

  • Till Schreiber


    I´m use GQRX 2.6 and if I want to use streaming over udp it does not work.
    In the config I have said IP: and Port:7355 and then I pressed the UDP-button.

    With “nc -l -u 7355” I want to listen but i don´t have output.

    Can anybody help?

    Best Regards

    • Andrea Dari

      nc requires the port to be specified with the -p option, so the command will be: nc -l -u -p 7355

    • Christian Bongiorno

      Where did you find this config? I can’t tell it where to send data

  • don

    Nice. I did get VLC working but had to combine it with the netcat command like this:
    nc -l -u 7355|vlc –demux=rawaud –rawaud-channels=1 –rawaud-samplerate=48000 udp://@:7355

  • Christian Bongiorno

    The streaming instructions are no longer valid. I press the [UDP] button that says “Stream raw audio over UDP” when I mouse over. But, I get no indication what port it’s listening on or where it’s sending too

    • Which instructions are no longer valid? Surely you are not referring to this article, which lists the default port 7355 on eight occasions ;-)

      Anyway, the audio streaming options are accessed through the button with 3 dots on it, then select “Network”. It is a one way stream so you can only configure the destination host and port.

      • Christian Bongiorno

        The pictures in the instructions show a screen that I can’t find or doesn’t exist. The pictures also show 7355 as a configurable port option as is also a host. I went so far as to lookup the [code on github]( and it’s hardcoded to “localhost” and 7355 – so, the image depicting a configurable host/port to stream to definitely seems out-of-date.

        The article itself is super useful, just the current app seems to not line up with the instructions.

        • The hardcoded values are used as defaults for initialization. Seriously though, don’t you see a button with “…” in the same row as the UDP button???

          • Christian Bongiorno

            I will triple check when I get home. I found in the github issue list a reference to the `default.conf` which I am just as happy to hack even if I can’t find it.

          • Christian Bongiorno

            Ok, I see the problem. I was running this through X11 forwarding and the … never showed up. Now that I am running it natively I see the … and the selection.

  • Christian Bongiorno

    If I am to understand this correctly, the app acts as a client and you need to have a listening server somewhere?

  • Retep Kilocin

    Hi all i am having lots of problem trying to get Gqrx to send upd i have been thru every thing on here but no matter what i try netcat still shows no UDP data i have been tru the setings several times over now i can not get Gqrx to talk to multimon-ng this is Arch Linux fully updated help please

    • Christian Bongiorno

      What’s the exact nc command you’re running? Can you send a picture of the config you have too?

      • Retep Kilocin

        Evening thanks for the reply i appear to have solved it at the moment the main problem seems to have been a distinct dislike for local host i have to set Gqrx to use at startup every time .

        The command line i am using to start multimon-ng is as follows .

        netcat -u -l -p 7355 |
        sox -v 2 -t raw -esigned-integer -b16 -r 48000 – -esigned-integer -b16 -r 22050 -t raw – |
        multimon-ng -v 7 -i -p -t raw -a SCOPE -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a FLEX -a HAPN4800 –

        I am now getting displayed data but no message content as below

        FLEX: Phase A Fixed 2 errors @ 0x00401000 (0x7fffc000 -> 0x7fbfd000)
        FLEX: Phase A Fixed 2 errors @ 0x00401000 (0x00003fff -> 0x00402fff)
        FLEX: Phase A Fixed 2 errors @ 0x08001000 (0x11340000 -> 0x19341000)
        FLEX: Phase A Fixed 2 errors @ 0x00401000 (0x00003fff -> 0x00402fff)
        FLEX: Phase A Fixed 2 errors @ 0x02000200 (0x7fffe000 -> 0x7dffe200)
        FLEX: Phase A Fixed 2 errors @ 0x02000200 (0x00001fff -> 0x02001dff)
        FLEX: Phase A Fixed 2 errors @ 0x02000200 (0x7fffe000 -> 0x7dffe200)
        FLEX: Phase A Data corruption – Unable to fix errors.
        FLEX: Garbled message at block 9
        FLEX: Phase B Fixed 2 errors @ 0x10002000 (0x00000403 -> 0x10002403)
        FLEX: Phase B Fixed 2 errors @ 0x08001000 (0x11340000 -> 0x19341000)
        FLEX: Phase B Fixed 1 errors @ 0x04000000 (0x04000000 -> 0x00000000)
        FLEX: BlockInfoWord: (Phase B) BIW:00002403 AW:01-09 (8 pages)
        FLEX: Idle codewords, invalid address
        FLEX: Idle codewords, invalid address
        FLEX: CAPCODE:0000000000139000
        FLEX: Parse Alpha Numeric
        FLEX: 2017-10-06 18:38:13 1600/4/B 09.080 [001282048] ALN
        FLEX: Idle codewords, invalid address
        FLEX: Idle codewords, invalid address
        FLEX: Idle codewords, invalid address
        FLEX: Idle codewords, invalid address
        FLEX: Idle codewords, invalid address
        FLEX: State: SYNC1
        So getting there

        I amy have some corruption due to an inability to get an aerial outside they are not allowed around here (ground floor of a block of flats ) i am also G6NJR radio Ham electrical noise around here is considerable so maybe i aint going to get much better dont know

        Thanks for anymore help or ideas

  • Hamed Zahedi

    Hi Alexandru, Great post. Wondering if its possible to interface GQRX such that the I/Q data can be sent from a device other than a connected USB or RTL-SDR device? I have my own RF-SDR front-end generating I/Q data in various formats that I can manipulate and i’m looknig to make use of GQRX to play back the audio rather than re-inventing the wheel.
    any ideas if this is possible?