RTL-SDR Tutorial: Listening to TETRA Radio Channels

TETRA is a trunked radio communications system that stands for “Terrestrial Trunked Radio”. It is used heavily in many parts of the world, except for the USA. Recently, a software program called Tetra Live Monitor (telive) was released on GitHub. This software can be used along with the (patched) Osmo-TETRA software to monitor and listen to unencrypted TETRA communications.

Below we show a tutorial on how to listen to TETRA communications using a RTL-SDR RTL2832U software defined radio. This tutorial is based heavily on the telive_doc.pdf file that is written by the author of telive and included in the telive git download. Please refer to that pdf file for further details on how the software works. We have modified their tutorial slightly to make it a little easier to understand. As this code is still under heavy development if you have trouble please check their PDF file for modifications to the procedures.

Again, we reiterate: This tutorial is not a substitute for a thorough reading of the documentation. If you have trouble setting this software up, please refer to the telive documentation first, before asking any questions. It contains a comprehensive FAQ section which solves most of the common problems. The documentation can be found directly at https://github.com/sq5bpf/telive/raw/master/telive_doc.pdf. There is also a discussion at http://forums.radioreference.com/digital-voice-decoding-software/302347-tetra-decoding.html.

Decoding and Listening to TETRA Tutorial

Most of this tutorial is performed in Linux and we assume that you have some decent Linux experience. We also assume you have some experience with the RTL-SDR dongle and have a decent antenna capable of picking up TETRA signals in your area. If you don’t have a RTL-SDR dongle yet see our Buy RTL-SDR dongles page.

Note: As of October 2016 there is now a Windows port of the Telive decoding software available. This may be an option for you if you prefer to run in Windows. More information here.

First, we will need to find some TETRA signals. The easiest way to do this is to open SDR# or another program like GQRX and look for them. TETRA signals are continuously broadcasting with a bandwidth of around 25 kHz. In most European countries they can be found at 390 – 470 MHz. In some countries they may be found around 850 MHz or 915 – 933 MHz. There may be several TETRA signals grouped in close proximity to one another. See the example images below.

A Zoomed in TETRA Signal
A Zoomed in TETRA Signal
TETRA Signals Zoomed Out
A Grouping of TETRA Signals Zoomed Out

An example audio clip of a TETRA signal recorded in NFM mode is shown below.

Once you have found some TETRA signals, record their frequencies. Now close SDR#, or whatever software you were using and boot into Linux. In this tutorial we use a 32-bit Ubuntu 14.04 virtual machine running on VMWare Player as our Linux system. Some of the commands may vary if you are using a different system.

Install the software

Note: There is now a telive live Linux image available. This will allow you to boot via a USB drive straight into a Linux OS with telive preinstalled. If you want the easy way out, or have trouble with the install script below, then try this image.

Note 2: As of October 2016 there is now a Windows port of the Telive decoding software available. This may be an option for you if you prefer to run in Windows. More information here.

This install script will automatically download the software and all the required prequisites including the RTL-SDR drivers. If you have problems consult the documentation or try a manual install. Instructions for the manual install are shown at the end of this post.

sudo wget https://raw.githubusercontent.com/sq5bpf/telive/master/scripts/install_telive.sh
sudo chmod 755 install_telive.sh

Running the Software

  1. Open a terminal window and browse to ~/tetra/osmo-tetra-sq5bpf/src and run ./receiver1 1.
    cd ~/tetra/osmo-tetra-sq5bpf/src
    ./receiver1 1
  2. Open a second terminal window or tab and open a specially sized xterm window using the following.
    /usr/bin/xterm -font fixed -bg black -fg white -geometry 203x60
  3. In the xterm window, browse to ~/tetra/teliveand run ./rxx.
    cd ~/tetra/telive
  4. Open another terminal window or tab and browse to /tetra/bin and run ./tetrad.
    cd /tetra/bin
  5. Open another terminal window or tab and open GNU Radio Companion by typing the following.
  6. In GNU Radio open the telive_1ch_simple_gr37.grc file which is found in ~/tetra/telive/gnuradio-companion.
  7. Execute the flowgraph by clicking on the play button icon on GNU Radio Companion toolbar.
  8. At the bottom of the screen that pops up look for the Frequency: text box and enter the centre frequency of the TETRA signal that you want to monitor. You can also click on the centre of the TETRA signal spikes in the Full Spectrum view to tune to a different signal.
  9. Enter the PPM offset of your RTL-SDR dongle in the ppm: text box.
  10. Finally adjust the SDR Input Gain setting for best reception.
Telive Receiver Window
Telive Receiver Window

At this point you should confirm that you see a strong rectangular TETRA signal in the FFT window that pops up. If you do, switch back to your first terminal window where you ran ./receiver1 1. You should confirm that you see system data scrolling by. If there is no data scrolling by, try adjust the gain and PPM offset in the FFT window.

If data is scrolling and the system is not encrypted you should start to hear voice audio. If a system is capable of encryption, the terminal window with the system data will show Air encryption: 1. However, note that even if it shows this, there is still a possibility that encryption has not been enabled.

Note that for a one channel receiver the frequency you tune to should be a control channel. The control channel frequency is the frequency shown in the top row of the Telive window in the green bar next to the word “Down:”. By pressing “t” (lower case T) in the Telive window you can toggle between the usage identifier window and the frequency info window. By looking at the frequency info window you can find neighbour networks.

If you want to log all voice communications you can by pressing “shift+R” (upper case R) in the telive window. This will log .ogg audio files to /tetra/out. You can also enable a text log by pressing “l” (lower case L) which will to /tetra/log/telive.log. More options can be found by entering ? (question mark).

Telive is also capable of decoding SDS messages, which are used to send short text messages or radio locations. If the TETRA system you are monitoring does send radio locations via SDS, then these can be automatically exported to a KML file which is stored at /tetra/log/tetra1.kml. If you open example_google_earth.kml, then Google Earth will periodically read from /tetra/log/tetra1.kml and give you an updated map of location. You can also set the TETRA_KML_INTERVAL environment variable which defines how often the location file will update. The default is 30s, but be aware than decreasing the time can slow your system down.

If you happen to close the GNU Radio FFT window and want to run the program again, you will need to restart the ./receiver1 1 program in the first terminal window.

To see how to monitor two or four TETRA channels simultaneously, refer to the telive_doc.pdf PDF file.

TETRA Decoding Windows
TETRA Decoding Windows



Don’t use these instructions unless you cannot use the automatic script install for some reason.

Install the RTL-SDR Linux Drivers

If you haven’t done so already, follow the instructions at http://sdr.osmocom.org/trac/wiki/rtl-sdr to install the Linux RTL-SDR drivers. Remember to blacklist the DVB-T drivers on Linux.

Install Prerequisites

sudo apt-get update
sudo apt-get install vorbis-tools
sudo apt-get install sox
sudo apt-get install alsa-utils
sudo apt-get install libncurses-dev

Note that if you use a different Linux OS, then some users have reported needing to also install the following extra dependencies:

sudo apt-get install git-core autoconf automake libtool g++ python-dev swig libpcap0.8-dev
sudo apt-get install cmake git libboost-all-dev libusb-1.0-0 libusb-1.0-0-dev libfftw3-dev swig python-numpy

Install GNU Radio 3.6

The TETRA decoding software requires installation of the older GNU Radio 3.6 (latest version is 3.7). The easiest way to do this is to run Marcus Leech’s install script with the -o flag, to indicate that you want the old version:

cd ~
wget http://www.sbrac.org/files/build-gnuradio && chmod a+x ./build-gnuradio && ./build-gnuradio -o

This script will run for a few hours and should install GNURadio 3.6 and all the drivers required to run the RTL-SDR on Linux. Note that if you already have GNU Radio 3.7 installed, we recommend installing 3.6 on a fresh Linux install as the two versions many conflict.

Install libosmocore-sq5bpf

cd ~
git clone https://github.com/sq5bpf/libosmocore-sq5bpf
cd libosmocore-sq5bpf
autoreconf -i
sudo make install
sudo ldconfig

Install osmo-tetra-sq5bpf

cd ~
git clone https://github.com/sq5bpf/osmo-tetra-sq5bpf
cd osmo-tetra-sq5bpf
cd src

Install telive

cd ~
git clone https://github.com/sq5bpf/telive
cd telive
sudo mkdir /tetra
sudo chown YOURUSER.YOURGROUP /tetra
sh install.sh

Where YOURUSER.YOURGROUP should be replaced with the username and group that you are currently logged in to on your Linux system. In most cases it can just be YOURUSER.YOURUSER. Run ls -l in your home directory to see what username and group your files are using.

Install the TETRA Codecs

Note that if you are running a 64-Bit Linux version you will need to set your system to use a 32-bit compiler. The Appendix of the telive_doc.pdf file shows how to do this.

  1. Go to http://pda.etsi.org/
  2. In the top right enter as a search term “en 300 395-2” and click the button to select Search Standards.
  3. Start the search.
  4. Find the search result labelled as REN/TETRA-05059.
  5. Click on the winzip icon (looks like a white page with a yellow file cabinet on it) to the right of the result to download en_30039502v010301p0.zip.
  6. Move this zip file into ~/osmo-tetra-sq5bpf/etsi_codec-patches.
  7. In a terminal browse to ~/osmo-tetra-sq5bpf/etsi_codec-patches.
  8. Unzip the file, making sure to unzip with lower case letters by using the following unzip command.
    unzip -L en_30039502v010301p0.zip
  9. Use the codec.diff file to patch the codec files you just unzipped by typing the following patch command.
    patch -p1 -N -E < codec.diff
  10. Open the c-code folder.
    cd c-code
  11. Run make to compile the codecs.
  12. Copy the compiled files cdecoder and sdecoder to /tetra/bin by typing the following, or just by copy and pasting them in the Linux GUI.
    cp cdecoder sdecoder /tetra/bin


If you enjoyed this tutorial you may like our ebook available on Amazon.

The Hobbyist’s Guide to the RTL-SDR: Really Cheap Software Defined radio.


  1. James

    Hi, i have tried using Bootable 16GB USB stick for Tetra decoding on my 7 year Laptop, i have problems receiving no audio and nothink showing in Telive monitor window. GQRX is work really well from RTL 820T2 donge any help please ?

  2. Kev

    I am getting error bug #528 when i press play in GNU Radio.
    What do i need to do to ensure it connects with the rtl2832u device.

  3. Owen

    the automatic script doesn’t works with opensuse 42.1 , is it possible using it with that Linux?
    thank U !

  4. Robert

    I’ve just installed all steps, and everything works but the sound. I can’t hear anything , and if I check it , that’s appears to me. Can someone help me how to fix it to hear?
    thank you

    Found 1 device(s):
    0: Realtek, RTL2838UHIDIR, SN: 00000001

    Using device 0: Generic RTL2832U OEM
    usb_claim_interface error -6
    Failed to open rtlsdr device #0.

  5. Albert

    Hi, trying to install the software appears…
    INSTALLING Gnuradio
    Cannot add PPA: ‘ppa:gqrx/releases’.
    Please check that the PPA name or format is correct.

    I’m begginer at ubuntu, and I need help how to resume.

    thanks in advance

  6. Gill Bates

    Any chance of porting this to an OS for mentally challenged and undereducated normal people and getting this into a form that doesn’t require a time machine to travel back 50 years to get the degree in programming neurosurgery robots on DIY rocket ships needed to operate this software? Thanks for considering. Linux-only software is modern racism.

  7. adam

    I just want to comment that this is shitty instructions that dont work..

    “failed to find package ‘libzmq1-dev

    Thanks for wasting 3 hours of my life fo

  8. Kris

    HI, and thanks for this tutorial. Finaly found the time to install it and test it (using the install script) … and for most part it went well.
    A do have a few questions, and I hope someone can help me:

    I’m running Ubuntu 14.4 32bit on VMplayer with maximum number of cores (6) and 4 gb of ram, but when everything is running the fft control window gets frozen (turns to b&w) when decoding a signal. I can only change freq. and ppm at the start, and even then it’s sluggish. Is that normal, and what can I do to make it faster??

    Decoding is running despite of the frozen control window, without any evident error messages but I only record very short (1-2 seconds max) voice massages that seem to be encrypted. I am not sure if the whole sistem is encrypted or if there is a problem with decoding the signal due to a slow system. (I have a phenom 1090t procesor with 20gb ram)

    Thanks for your help!

      • Kris

        Tnx … but in the mean time I “fixed” the issue by installing debian (as suggested on the radioreference forum). Under Debian everything is running much much smoother!
        But the disappointment is that almost everything is encrypted 🙁

  9. Alex W

    can anyone help me? Starting the receiver1 1 creates the following error :

    ” Traceback (most recent call last):
    File “demod/python-3.7/simdemod2.py”, line 18, in
    import osmosdr
    File “/usr/local/lib/python2.7/dist-packages/osmosdr/__init__.py”, line 26, in
    from osmosdr_swig import *
    File “/usr/local/lib/python2.7/dist-packages/osmosdr/osmosdr_swig.py”, line 28, in
    _osmosdr_swig = swig_import_helper()
    File “/usr/local/lib/python2.7/dist-packages/osmosdr/osmosdr_swig.py”, line 24, in swig_import_helper
    _mod = imp.load_module(‘_osmosdr_swig’, fp, pathname, description)
    ImportError: /usr/local/lib/libgnuradio-osmosdr-0.1.5git.so.0.0.0: undefined symbol: hackrf_device_list

    I tried to find a solution but I didn’t find anything. Can anyone help me?



  10. Dogo

    Hi,I installed on mac os El Capitan, Vm were Kali with linux 2.0 . Then I followed the guide . Everything ok, but when I run gnuradio this is the error message:

    Preferences file: /home/user/.grc
    Block paths:

    Showing: “”

    Loading: “/home/user/tetra/telive/gnuradio-companion/telive_1ch_simple_gr37.grc”
    >>> Done

    Showing: “/home/user/tetra/telive/gnuradio-companion/telive_1ch_simple_gr37.grc”

    Generating: “/home/user/tetra/telive/gnuradio-companion/top_block.py”

    Executing: “/home/user/tetra/telive/gnuradio-companion/top_block.py”

    linux; GNU C++ version 4.9.1; Boost_105500; UHD_003.007.003-0-unknown

    Using Volk machine: sse4_2_64_orc
    gr-osmosdr 0.1.3 (0.1.3) gnuradio 3.7.5
    built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy
    Using device #0 Realtek RTL2838UHIDIR SN: 00000001
    Found Rafael Micro R820T tuner
    Exact sample rate is: 2000000.052982 Hz
    thread[thread-per-block[9]: ]: thread_bind_to_processor failed with error: 22

    thread[thread-per-block[5]: ]: thread_bind_to_processor failed with error: 22

    thread[thread-per-block[8]: ]: thread_bind_to_processor failed with error: 22

    thread[thread-per-block[12]: ]: thread_bind_to_processor failed with error: 22

    thread[thread-per-block[11]: ]: thread_bind_to_processor failed with error: 22

    thread[thread-per-block[6]: ]: thread_bind_to_processor failed with error: 22

    thread[thread-per-block[7]: ]: thread_bind_to_processor failed with error: 22

    thread[thread-per-block[10]: ]: thread_bind_to_processor failed with error: 22


    Someone can help me understand the error ? Thanks.

    • Erik011

      I get exactly the same error message. Everything seems to work fine, but when I hit the playbutton for the flowgraph, the fft runs for a second and then freezes. Did you find any solution to this?

    • Erik011

      Just found out a solution to this problem. In my case it was due to the virtual machine in WM Player was set to 1 processor while my system is an Intel Haswell with 4 cores (8 logical cores).
      Changing the virtual machine to 2 processors fixed it! (power off the guest in WM Player, right click your virtual machine, select settings, select processor and set it to an adequate number). Hope this is of any help!

  11. Delta

    it works on 32bit Kubuntu 14.04 with GRC from the official ubuntu repo and compiled rtl drivers, except after 2 seconds or so it freezes with error ” file_sink write failed with error 21 ” – i guess this may be a buffer prob, as just running RTL FM from within bash plays ok. but with buffering errors, but in GQRX it works smoothly.. – i’m currently tweaking GRC to try to correct this.. anyone help plz ? am i on the right track ?

    • Delta

      update – if i start GRC on a valid freq – on its own, no tetrad, receiver 1, no telive or no rxx … GRC starts , finds my hardware, looks good and apears to work without any apparent errors.

      if i *- then* start tetrad and the other command line tools whilst GRC is running, they don’t error, but sadly they don’t see any output from GRC – i think there is some lack of comms between modules maybe.

      so near.. yet so far…. i can taste it !

      • Delta

        actual error message is:
        Found Rafael Micro R820T tuner
        Exact sample rate is:2000000.052982 Hz

        thread[thread-per-block[4]: ]: file_sink write failed with error 21

        what is error 21 ?

  12. Arild

    I tried to get a system running a few weeks ago but got stuck with errors and a non working system. Have anyone made a working VM that they would like to share?

  13. Ignacio

    Hi all! Thks for the help in the last post, it works very fine.

    The next question is how to decode SDS data, here are the telive log:

    20150716 11:58:49 FUNC:SDS [010011110111111111111110000000001011000010010000000001000000001000000000011001111111111101101000000001100000000000000000000000000001000010000000000000000000000000000000000]
    20150716 11:58:49 FUNC:SDSDEC [CPTI:1 CalledSSI:4223 CallingSSI:16775170 CallingEXT:0 UserData4: len:64 protoid:02(Simple Text Messaging) coding_scheme:01 DATA:[\x003\xFF\xB4\x03\x00\x00]] RX:1
    20150716 11:58:49 FUNC:D-SDS DATA SSI:00004223 IDX:000 IDT:1 ENCR:0 RX:1
    20150716 11:58:51 FUNC:SDS [010011110111111111111110000000001001001100000011000000110110010000110100000000000001000010000000000000000000000000000000000]
    20150716 11:58:51 FUNC:SDSDEC [CPTI:1 CalledSSI:4223 CallingSSI:16775170 CallingEXT:0 UserData2: 0x30 0x30 0x36 0x43] RX:1
    20150716 11:58:51 FUNC:D-SDS DATA SSI:00004223 IDX:000 IDT:1 ENCR:0 RX:1
    20150716 11:59:45 FUNC:SDS [010011110111111111111110000000001001001100000011000000110110010000110100000000000001000010000000000000000000000000000000000]
    20150716 11:59:45 FUNC:SDSDEC [CPTI:1 CalledSSI:4238 CallingSSI:16775170 CallingEXT:0 UserData2: 0x30 0x30 0x36 0x43] RX:1

    the data is 0x30 0x30 0x36 0x43 ? how to decode? thks

  14. Eduardo Falcón

    I tried 5 times to get this working but I can’t. When I try to run it, in the first step, (./receiver1 1) I keep getting this error:
    mkfifo: cannot create fifo ‘/tmp/fifo1’: File exists
    Traceback (most recent call last):
    File “demod/python-3.7/simdemod2.py”, line 18, in
    import osmosdr
    ImportError: No module named osmosdr

    What can I do?
    I saw that Christian said that he installed GRC 3.7 instead of 3.6, so now I’m trying the same. I’ll notice you. Thanks.

    Anyway, any help will be huge.

    (Sorry for my english)

    • Eduardo Falcón

      For “mkfifo: cannot create fifo ‘/tmp/fifo1’: File exists” error I deleted that file manually and it worked, but still getting
      Traceback (most recent call last):
      File “demod/python-3.7/simdemod2.py”, line 18, in
      import osmosdr
      ImportError: No module named osmosdr

      error. Any help?

  15. Ignacio

    I’m running the scripts in kali linux (no vm) and get this

    #### could not find successive burst training sequence
    found SYNC training sequence in bit #84

    In vm works but in ‘real’ linux no, can anyine help me? thks

    • enCrypt

      This normally (for me anyway) means that I either don’t have a strong enough signal or the signal I do have needs fine tuning in the FFT window.
      I also got a lot of this when using a VM in VirtualBox. Switching to VM Player was much better as apparently VM Player handles the USB passthrough a lot better.
      You dont mention if you’re using an RTL stick or not but might be worth checking that you are using at least USB2 ports and have the latest drivers installed etc….

      • Ignacio

        Thaks for the reply!

        I am using Terratec E4000 and works fine in VM but no in the laptop who have usb 2.0. and kali instaled in him. And work in 32 bits, i’´ll try what you mention of the fft window.


  16. Christian


    Did everything according to instructions. But in point 1 under “Running the software” I always get the following error message:

    [email protected]:~$ cd ~osmo-tetra-sq5bpf/src
    bash: cd: ~osmo-tetra-sq5bpf/src: No such file or directory
    [email protected]:~$ ./receiver1 1
    bash: ./receiver1: No such file or directory
    [email protected]:~$ cd ~/osmo-tetra-sq5bpf/src
    [email protected]:~/osmo-tetra-sq5bpf/src$ ./receiver1 1
    mkfifo: cannot create fifo ‘/tmp/fifo1’: File exists
    Traceback (most recent call last):
    File “demod/python-3.7/simdemod2.py”, line 18, in
    import osmosdr
    ImportError: No module named osmosdr
    [email protected]:~/osmo-tetra-sq5bpf/src$


    • Paul

      Hi, you missed the / between ~ and osmo-tetra-sq5bpf/src in: [email protected]:~$ cd ~osmo-tetra-sq5bpf/src

      • Christian

        Sorry, but i mean this error message:

        Traceback (most recent call last):
        File “demod/python-3.7/simdemod2.py”, line 18, in
        import osmosdr
        ImportError: No module named osmosdr

        Can anyone help?

          • Jacob

            this runs with GNU Radio 3.7? Everyone here supposed that 3.7 is not working and as a workaround you have to install the old version (3.6.5 or so)…

            How did you get it working?

            • Christian

              I did everything according to instructions. But instead gnuradio 3.6 I installed gnuradio 3.7. And then opened the file telive_1ch_gr37.grc. receiver1 I started with sudo ./receiver1 1, because otherwise I had an error message.

          • sory_n

            Hello..how resolve this problem…all work good, but when i open ./receiver1 1 apear this error:
            Traceback (most recent call last):
            File “demod/python/simdemod2.py”, line 78, in
            tb = top_block()
            File “demod/python/simdemod2.py”, line 49, in __init__
            File “/home/test/osmo-tetra-sq5bpf/src/demod/python/cqpsk.py”, line 260, in __init__
            AttributeError: ‘mpsk_receiver_cc_sptr’ object has no attribute ‘set_alpha’
            I tried many ways,but do not I realize that I supposed to do. sorry for my badd english and thank s

            • fedebr89

              I had the same error.
              To “solve” I brutally commented out two lines in the python source code “cqpsk.py” in order to have:

              However I’m not sure if this hack compromise the proper functioning of the program.

  17. Airflow

    Hi everybody, I just wonder if I have a AIR ENCRYPTION = 1 system, and I think I shouldn’t get any voice or just sound from it. but I get something like broken voice or wrong decoder noises when somebody’s making a group call. Is this a real air encryption enabled system, or I made some mistake in the settings?

    • enCrypt

      Air Encryption = 1 means that there has been a license for encryption applied to the network as a whole.
      However (as is the case with a local network that I’ve been monitoring) that doesn’t mean that every transmission will be encrypted, its just that it has the capability to be if needed.
      I actually get (surprisingly) quite a lot of unencrypted comms.
      Encrypted stuff does just sound like garbled speech with a few whistles and other strange noises thrown in!
      Unencrypted stuff should be nice and clear…

    • spooks

      Dont know about other countries but in the UK attempting to decode a secure home office/public safety TETRA encryption algorithms (TEAs) type radio’s- Airwave tetra base terminal network (O2)- is a serious as carrying a firearm. The area of TETRA security is extensive costing millions of pounds in its development.i would not like to be the person caught hacking tetra.

      • a

        Spooks, first you should have read the documentation that comes with the software. it’s not about breaking any cryptography here.

        if it’s encrypted then you can’t listen to it with this software.

        if its not encrypted then you can listen to it (even if the people setting up the system managed to convince their clients that it’s somehow “safe”. in this case telive makes a nice auditing tool)

        simple as that.

  18. Peter Tasker

    HI, HAs anyone ever got this SW to run on a raspberry pi, if I would be grateful for some guidance.



    • enCrypt

      My HP laptop with dual core 1.2GHz CPUs and 2GB of RAM will not run it so I doubt a Pi would I’m afraid.
      Would be nice though 😉

    • G0FHM

      I tried to run it on a Pi 2 last weekend (just to see what would happen). It took an age to install, and at the end of it all, Gnu Radio just froze it. So, I would say that is a pretty comprehensive no! 🙂

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>