Chips’nCode has always been a bit mixed because my own background is mixed. Before I moved into secondary teaching, I came out of biology, molecular biology and ecology. These days I teach general science, Biology and Psychology at secondary level, alongside Digital Technologies and Mathematics. I am also a radio amateur, VK4MPB/VK7MPB, so radio, electronics and computing tend to turn up in the same places eventually.
A radiosonde is a good example of why I like the overlap. It is simultaneously a set of environmental sensors, a radio transmitter, a stream of digital data and a moving point in three-dimensional space. A weather satellite brings in orbital motion, waves, Doppler shift, antennas, digital signals and image data. Even an ordinary FM station gives you a useful way to make frequency, bandwidth, signal strength and noise visible.
An RTL-SDR gives us a way to look at that radio layer directly. It is a small USB software-defined receiver. Add an antenna and a computer and you can examine a large part of the radio spectrum around you. The spectrum is a live graph of signal strength across a range of frequencies. The waterfall is that same graph recorded down the screen over time. Signals become visible shapes: you can see how wide they are, watch them come and go, compare their strength, record them and, when they contain digital information, hand them to software that can decode what is being transmitted.
You can do all of that without transmitting anything and without needing an amateur radio licence.
I’m in south-east Queensland (SEQ), so the frequencies in this guide are examples that work for me. If you’re elsewhere, choose local stations and services.

An RTL-SDR Blog V3 receiver with the adapters supplied in the multipurpose kit. Photo: Joeceads, Wikimedia Commons, CC BY-SA 4.0.
Getting an RTL-SDR
Many inexpensive USB digital-TV receivers have been repurposed as software-defined radios. Some work perfectly well, but the genuine RTL-SDR Blog receivers are an easier starting point because their frequency stability, antenna connection and support are well documented.
The examples in this article use the RTL-SDR Blog V3 and its telescopic dipole kit. If you already have a working receiver, keep using it. Later RTL-SDR models have different capabilities and settings, especially at lower frequencies, so check the instructions for your exact model before following the direct-sampling experiment.
For a first kit, look for a genuine receiver with a suitable antenna, coaxial cable and a stand or mounting option. The antenna is often more important to successful reception than a small difference between receivers.
For Australian buyers, OpenSourceSDRLab’s RTL-SDR receiver listing is usually worth checking before the larger marketplaces. Their product naming has changed over time, so I would check the current dongle revision and kit contents on the listing rather than relying on an old screenshot.
I have no interest in making this a shopping guide. The important bits are an RTL2832U-based receiver, a stable internal frequency reference, an SMA connector and an antenna you can put somewhere sensible. If you already own a working RTL-SDR, use it.
Getting the antenna right
The older RTL-SDR kits often came with a single magnetic-base telescopic whip. A whip still works, especially for strong local signals, and it is a perfectly good way to start. The current RTL-SDR Blog kit is more useful because the same hardware can also be assembled as a dipole.
The kit has a centre-fed dipole base, two long telescopic elements that extend from roughly 23 cm to 1 m, two short elements that cover about 5 cm to 13 cm, a coaxial-cable extension, tripod and suction mount. The RTL-SDR Blog dipole guide is worth keeping open the first few times you use it.

The dipole kit components: long and short telescopic elements, centre-fed base, coax extension, suction mount and flexible tripod. Image: RTL-SDR Blog.
A dipole is simply two conductive elements fed in the middle. The wavelength tells you how long one complete radio wave is. A basic half-wave dipole is half a wavelength from end to end, so each of its two elements is approximately one quarter of a wavelength.
- λ
- wavelength, in metres
- c
- speed of light, about 300,000,000 metres per second
- f
- frequency, in hertz
At 145 MHz, for example, a full wavelength is about 2.07 metres, so each dipole element is about 51 cm. Around 137 MHz for weather satellites, each element is about 54 cm. At 1090 MHz for ADS-B, a quarter wavelength is only about 6.9 cm. For receive-only work these are useful starting lengths rather than dimensions that need to be exact to the nearest millimetre.
At much lower frequencies, the same kit becomes a compromise. A medium-wave station at 792 kHz has a wavelength of roughly 379 metres. The supplied dipole cannot come close to a quarter-wave length. If it is your only antenna, extend both telescopic elements as far as possible and try different positions, preferably away from computers and power supplies. A suitable medium-wave loop or properly installed long wire will usually do better. Never attach a receiving antenna to household wiring or place it near power lines.
For most terrestrial signals in the VHF and UHF ranges, meaning very high frequency and ultra high frequency, set the dipole vertically. If you only have a whip, a vertical whip is also a sensible default. For 137 MHz weather satellites, fit the long elements, extend each to about 53.4 cm, and open the dipole into a broad 120-degree V lying in a horizontal plane. This uses longer elements than the L-band setup shown later.
The supplied kit is intended for receiving. Do not connect it to a transmitter.
Try itTurn the kit into a 2 m dipole
Keep the feed point near the middle and arrange the two elements vertically, one above the other. For receive-only experimenting, getting both elements close to the correct length is enough to start.
Pick your receiver software
The job is the same on every desktop platform: talk to the RTL-SDR, show the spectrum and waterfall, choose the reception mode, set the width of the slice you want to receive, and adjust the receiver’s sensitivity. Radio software calls those last three controls the mode, filter width and gain.
Receiver software by platform
A cross-platform receiver with a consistent set of controls on each desktop operating system.
Receive and decode ADS-B messages, then display aircraft positions on a map.
Useful once you want to construct the signal-processing chain rather than only operate a receiver.
SDR++ is available across the main desktop platforms. Gqrx and other receivers use the same basic settings: frequency, mode, filter width and gain.
On Android, SDR++ can work with supported USB SDR hardware over OTG. Direct RTL-SDR use on iPhone and iPad is much less convenient, so I use iOS mainly for pass prediction and tracking rather than as the receiver itself.
When a signal carries digital information, ordinary receiver software may show you that something is transmitting without telling you what the messages mean. That is where a decoder comes in. For the aircraft example below, SDRangel is particularly useful because it can operate the RTL-SDR, decode ADS-B messages and show received aircraft on a map within the same application. SatDump is the corresponding tool we’ll use for weather-satellite images.
Use the program written for the signal you want to decode. SatDump handles satellite telemetry and imagery. radiosonde_auto_rx handles weather balloons. ADS-B has its own decoders. GNU Radio becomes useful once there is some value in seeing how the receiver itself is put together.
Start with FM, then try AM
SDR++ is a good place to get comfortable with a new RTL-SDR. It lets you choose a frequency, see what is being received, and turn a radio signal back into sound. The spectrum shows signal strength across frequencies; the waterfall shows how those signals change over time.
I would start with an ordinary FM station. Once that works, the same receiver can pick up aircraft radio using AM. Finally, if you have an RTL-SDR Blog V3, you can use its special direct-sampling mode to listen to a medium-wave station that its normal tuner cannot reach.
These instructions use the RTL-SDR Blog V3 with the dipole antenna kit. They assume SDR++ is installed and that no other receiver program is using the dongle. Other RTL-SDR models may have different tuning limits or direct-sampling options.
First, find a local FM station
FM broadcasts are ideal for a first test. They are often strong, you probably know a nearby station already, and you can immediately tell whether the sound is right. Australian FM broadcasts use 87.5 to 108 MHz.
Connect the two long telescopic elements to the dipole base. Extend each one to about 75 cm, and stand the antenna vertically, with one element pointing up and the other down. If all you have is a single whip, use it vertically.
- Plug the antenna into the RTL-SDR and the RTL-SDR into the computer. Open SDR++.
- Open the Source panel on the left. Choose RTL-SDR and select your dongle. Set Direct Sampling to Off or the normal sampling mode. If there is a sample-rate selector, 2.048 million samples per second (2048000) is a reasonable starting point. SDR++ may show this as 2.048 MS/s.
- Press the Play button. The spectrum should begin updating and the waterfall should start scrolling.
- Use the frequency display at the top to tune a known local FM station. For example, 105.3 MHz is 105300000 Hz. Use an actual station in your area rather than assuming there will be one at the example frequency.
- Open the Radio panel and select WFM, meaning wideband FM. Start with a filter width of about 180 kHz (180000 Hz). The selected channel appears as a highlighted region in the spectrum. Depending on the SDR++ version, you can adjust the width in the Radio panel or by dragging the edges of that region.
- Turn the computer or SDR++ volume up slowly. You should hear music or speech. If the audio is weak or distorted, check the antenna, tune to the middle of the visible station and adjust the gain in the Source panel.
A broadcast FM signal usually looks wide on the spectrum and forms a fairly broad vertical band on the waterfall. If you narrow the filter until only a small part of the station fits inside it, the audio will usually get worse.

An SDR waterfall in the FM broadcast band. Speech and music leave different patterns down the waterfall even when the station stays on the same channel. Image: Wtshymanski, Wikimedia Commons, CC BY-SA 4.0.
Try moving the antenna away from your computer, then compare its signal with the antenna beside the computer. Keep the gain and frequency unchanged while you do this. Watch whether the signal rises above the surrounding background noise, rather than judging only how high the peak looks.
Next, listen to AM within the normal tuning range
AM stands for amplitude modulation. While FM carries sound through small changes in frequency, AM carries sound through changes in the strength of the radio signal. SDR++ needs to use the corresponding receiving mode to recover the audio properly.
Aircraft voice radio uses AM at frequencies the RTL-SDR V3 can receive normally. Try 125.6 MHz (125600000 Hz), the Brisbane Approach south-east sector frequency used by aircraft approaching from the Gold Coast direction. The Airservices ERSA entry lists the sector and frequency. Listen for short exchanges between pilots and air traffic control, with gaps between transmissions.
To try it:
- Keep Direct Sampling turned Off. The normal RTL-SDR tuner works at this frequency.
- Shorten the dipole’s two long elements to about 60 cm each, still vertical. This is a suitable starting length for the aircraft band.
- Tune the frequency display to 125.6 MHz (125600000 Hz), or to a published local aircraft voice frequency.
- In Radio, switch from WFM to AM. Set the receive filter to about 8 to 10 kHz (8000 to 10000 Hz).
- Leave the receiver running and listen for pilots speaking to air traffic control. You may hear aircraft more clearly than the ground controller.
Look at the display again. The received AM signal should occupy a much narrower band than a broadcast FM station. If you switch back to WFM without moving the frequency, you will no longer be using the right method to recover that voice transmission.

No audio does not necessarily mean a broken receiver. The channel may be quiet, aircraft may be out of range, or nearby buildings may block the signal. Try moving the antenna to a clearer position.
Finally, receive 792 kHz with the V3’s direct-sampling mode
The ordinary AM radio band is much lower in frequency than aircraft radio. For this test, tune ABC Radio National on 792 kHz, which is 0.792 MHz (792000 Hz).
The RTL-SDR Blog V3’s normal tuner begins at about 24 MHz, so it cannot tune directly to 0.792 MHz in its ordinary mode. The V3 has a second receiving path called direct sampling that can reach lower frequencies. It is supported by the V3 hardware, although performance is different from ordinary VHF and UHF reception.

If the telescopic dipole from the kit is your only antenna, extend both of its long elements as far as they will go. Move the antenna away from computers, USB chargers and other likely sources of interference, and try a window or an outdoor location if it is safe. This is a compromise: the 792 kHz wavelength is about 379 metres, so a small dipole is much shorter than an efficient antenna for this band. A suitable long-wire antenna of approximately 5 metres or more, or a medium-wave loop, usually gives a better chance of reception. Never connect an antenna to electrical wiring or place it near power lines.
For the RTL-SDR Blog V3 in SDR++:
- Stop the receiver using the Play/Stop button.
- Open Source and locate Direct Sampling. Select Q Branch. If SDR++ does not offer this option, check that you have selected the RTL-SDR source and that the receiver and driver support the feature. Some RTL-SDR Blog driver versions can switch modes automatically when you tune below the normal tuner’s range.
- Start the receiver again, then tune to 792 kHz (792000 Hz). The display may express that as 0.792 MHz.
- In the Radio panel, select AM with a filter width of roughly 8 to 10 kHz (8000 to 10000 Hz).
- Listen for recognisable speech. If the signal is weak, try repositioning the antenna and moving it away from electrical noise sources.
At such a low frequency, you may see a sharp peak exactly in the middle of the display even when no radio station is being received. That can be a receiver-generated centre spike. Hearing recognisable programme audio is a much stronger indication that you have actually received the station.
Some V3 receivers have extra attenuation below 2 MHz, which can make medium-wave signals harder to hear. Use the ABC frequency and coverage search to find another service for your area. The V3 user guide explains the direct-sampling path and its limitations.
Before returning to an FM or aircraft frequency, stop the receiver and switch Direct Sampling back to Off.
What changed between the three tests?
| What you received | Example frequency | SDR++ mode | RTL-SDR setting |
|---|---|---|---|
| Ordinary FM broadcast | A local station between 87.5 and 108 MHz | WFM | Normal tuner |
| Aircraft radio | Approach traffic at 125.6 MHz | AM | Normal tuner |
| Medium-wave AM broadcast | Radio National at 792 kHz | AM | V3 direct sampling, Q Branch |

The last two tests both use AM. The change at 792 kHz is in the receiver’s hardware path, not in the method SDR++ uses to recover the sound. The antenna and the signal-processing settings both matter, and a poor signal is worth investigating before assuming that one of the settings is wrong.
Listen to amateur radio
Amateur radio is a licensed service for people who want to communicate, experiment and learn about radio. That can mean ordinary voice conversations, digital messages, satellite contacts, long-distance shortwave work, emergency communications, antenna building or simply seeing how far a small amount of power will travel. It is a broad hobby because radio itself is broad. You need the appropriate qualification and callsign before transmitting, but anyone can listen. An RTL-SDR therefore gives you a useful way to explore the amateur bands and hear how they are used before deciding whether you want to get on air yourself.
For a first amateur-radio listening exercise with an RTL-SDR in Australia, start with the 2 metre band, 144–148 MHz, and the 70 centimetre band, 430–450 MHz. These names refer roughly to the wavelength, not the size of the antenna. The Wireless Institute of Australia (WIA) publishes Australia-specific band plans showing how those allocations are divided between voice, repeaters, satellites, data and other uses.
An amateur repeater receives a signal on one frequency and retransmits it on another, often from a high site that covers a wide area. It may sit quiet for a while and then suddenly come alive. On the waterfall you will see the narrow FM signal appear, hear the conversation, then watch it disappear when the operator stops transmitting. You may also hear the repeater identify itself.
Rather than dragging the tuning control around and hoping somebody happens to speak, Australian readers can use the WIA Repeater Directory to find an operational analogue FM repeater nearby. Outside Australia, or as a second source within it, RepeaterBook provides an international repeater directory with an Australian listing. Use the output frequency, because that is the frequency the repeater transmits and therefore the one you want to receive.
Try itListen to a local 2 m repeater
Set the long dipole elements to about 50 cm each and mount the antenna vertically. A whip near the same length is also fine. Select NFM, meaning narrowband FM. You do not need the repeater input frequency or its CTCSS access tone, the sub-audible tone used to open some repeaters, because you are only receiving.
ADS-B: receive aircraft directly
An aircraft can tell us quite a lot without anybody speaking on the radio. Many aircraft regularly transmit short digital messages containing their identity, location, altitude and speed. This system is called ADS-B, short for Automatic Dependent Surveillance–Broadcast. In this experiment, we will receive messages on 1090 MHz.
You may already have looked at ordinary FM or AM broadcasts in SDR++. ADS-B looks different. Its messages are very short bursts, so they can appear as brief flashes in the waterfall. There is no voice to listen to. We need software that understands those messages.
Start with the antenna
Fit the short telescopic elements to the kit’s dipole base and place the antenna vertically, with one element pointing up and the other down. At 1090 MHz, each side of a dipole should be about 6.9 cm electrically. The metal mounting fitting contributes some of that length, so approximately 5 cm of visible telescopic element on each side is a sensible first setting for this kit. Use this as a starting point and adjust it while watching reception. Try moving the antenna away from the computer, towards a window or somewhere with a clearer view of the sky.

Decode the messages in SDRangel
SDRangel can receive the signal, decode the messages and show aircraft on a map. Download the version for your operating system from the SDRangel releases and install it. The following steps follow the program’s receiver, channel and ADS-B controls. Their positions may move slightly between versions.
- Close SDR++ and any other program that might be using the USB dongle. Normally only one program can control it at a time.
- Plug in the RTL-SDR, open SDRangel, and add an Rx (receiving) device if one is not already open. Choose the RTL-SDR from the device list. SDRangel may label it RTL-SDR or RTL-SDR (R820T/R828D) depending on its drivers.
- In Preferences → My Position, set your approximate receiving location. SDRangel uses it for distance, bearings and some aircraft position calculations. In the RTL-SDR device controls, set the centre frequency to 1090 MHz: enter 1090000 in the kHz control, or 1090000000 if a control explicitly asks for hertz.
- Set the sample rate to 2.4 million samples per second: enter 2400000 for samples per second, or 2400 in a kS/s control. ADS-B has very short pulses, so a much lower sample rate may miss information needed by the decoder. If there is a device decimation control, leave it at 1 to begin with. The ADS-B demodulator also has a channel sample-rate setting; its normal 2 million samples per second (2000000) setting is suitable as a starting point.
- Add a receive channel using the device window’s Add Channel control. Select ADS-B Demodulator, choose Apply, and close the selection window. Leave its frequency offset at 0 if the source is tuned to 1090 MHz.
- Start the receiver using the Play/Start control in the device window. Watch the ADS-B decoder’s messages and aircraft table. If messages arrive successfully, entries should begin appearing, though it may take time for enough position messages to arrive.
- Use the ADS-B decoder’s map to see aircraft with received positions. You can also send aircraft to SDRangel’s separate Map feature.

You may first see message counts or aircraft identifiers without any map markers. That is normal: the software needs suitable position messages before it can plot an aircraft. A map may also use an internet connection to load map tiles or enrich aircraft details, even though the radio messages themselves are received locally.
If nothing appears, check that the antenna is connected, the source is actually running, the frequency is 1090 MHz, the sample rate is at least 2000000, and the ADS-B Demodulator has been added to the correct receiving device. Try increasing or decreasing gain rather than simply setting it as high as possible. Move the antenna away from the computer and give it several minutes. Aircraft may be behind buildings or outside receiving range.
You can confirm that you are receiving rather than merely looking at an internet aircraft tracker by stopping the receiver: the incoming message counter should stop changing. The map may still display aircraft that were received earlier, so the list and message count are better checks than the map alone.
There are other useful decoders, including dump1090 and readsb, particularly if you want a Raspberry Pi to run continuously. SDRangel is a good first choice when you want to explore the signal and see the decoded result in one place.
On Windows, Dump1090 for Windows is another option. For more detail on SDRangel’s controls, see the ADS-B Demodulator documentation.

dump1090 turning locally received 1090 MHz packets into aircraft identifiers, altitudes, speeds, positions and message counts. Screenshot: RTL-SDR Blog.
Follow a radiosonde
Radiosondes are one of my favourite examples because there is quite a lot going on in a very small box. The Bureau of Meteorology and other weather services launch these instrument packages beneath balloons to sample the atmosphere. The sonde measures conditions such as temperature, humidity and pressure, obtains a position and transmits telemetry, meaning those measurements and status data, back to the ground throughout the flight.
In Australia, most of the sondes you are likely to encounter sit somewhere between 400 and 403 MHz, with 400.5, 401.5 and 402.5 MHz particularly common. Rather than scan the entire band, open the SondeHub live tracker, find an active balloon reasonably close to you and note the frequency shown for it.
Around 402 MHz, a quarter wavelength is about 18.6 cm. A vertical whip around that length is useful, or set both sides of a dipole close to that length and mount it vertically. The sonde spends much of its flight high above the ground, so a modest antenna can work surprisingly well.
Once you can see the signal, Project Horus radiosonde_auto_rx can scan, identify supported sonde types, decode their telemetry and upload positions to SondeHub. The auto_rx wiki covers installation and configuration.
There are two separate jobs here. SondeHub helps you find a real balloon and its reported frequency. radiosonde_auto_rx receives and decodes the radio messages, then can send position and sensor readings back to SondeHub. Seeing a narrow signal in SDR++ tells you that a transmitter might be present, but SDR++‘s NFM mode does not by itself decode the weather measurements.
For a first attempt, locate a balloon on the SondeHub tracker, copy its reported frequency and see whether it is close enough to receive. Then follow the radiosonde_auto_rx installation and configuration guide for a Raspberry Pi or another Linux machine. Close SDR++ before starting the decoder so it can use the dongle. Give the automatic receiver time to identify the sonde’s signal and display telemetry. If your first attempt fails, check whether the balloon is still transmitting and whether the frequency on SondeHub has changed.
Try itFind a live weather balloon
If SondeHub lists a sonde on 401.500 MHz, put 401.500 MHz into the SDR program and watch for a persistent digital signal. You can choose NFM while inspecting it, but a radio audio mode does not decode its telemetry. To read the measurements, use radiosonde_auto_rx or another suitable decoder.
Open the live SondeHub map
Select a balloon to see its path, altitude, reported frequency and other flight details. If the map does not load here, open SondeHub in a new tab.
A single balloon flight gives you temperature, humidity, pressure and a changing position to explore. The packets arrive from an instrument moving through the atmosphere, so you can follow both the weather measurements and the radio link as the flight progresses.
Receive a weather satellite
A lot of RTL-SDR material online still begins with analogue APT, or Automatic Picture Transmission, images from NOAA-15, NOAA-18 and NOAA-19. Those satellites were retired in 2025, so the old tutorials are useful for understanding the method but no longer provide live NOAA APT targets.
The current beginner route is the digital LRPT, or Low Rate Picture Transmission, signals from the METEOR-M satellites. SatDump is the program I would use for these. It runs on Windows, macOS, Linux and Android. It can control the RTL-SDR, turn the radio signal back into digital data, and reconstruct the image.
For a first attempt at METEOR-M LRPT weather-satellite reception, the antenna is the important part of the setup. Fit the long telescopic elements to the supplied dipole base. Extend each element to approximately 53.4 cm and arrange them in a wide 120-degree V, lying in a horizontal plane. Place the antenna outside in a safe location if possible, or near a window away from computers and electrical noise.

You need a pass prediction before you start. On iPhone and iPad I use ISS Detector; its satellite extensions can track far more than just the ISS. On Android, ISS Detector works as well, while Look4Sat is a radio-oriented open-source alternative. On Windows, macOS and Linux, Gpredict is a full desktop satellite tracker. The AMSAT web predictor is useful from any browser.
A pass that rises well above the horizon is a better first choice than one that barely appears. Check that the METEOR satellite is currently transmitting LRPT and confirm its current frequency using SatDump or an up-to-date satellite-status source. Do not rely on an old fixed frequency from a tutorial.
Receive the image with SatDump
- Connect the RTL-SDR and antenna. Close SDR++ or any other application already using the device.
- Open SatDump and choose the live reception or recording workflow. Use the Recorder tab, or Add → Recorder in versions with an Add menu, then select the RTL-SDR as the input device.
- Select an appropriate METEOR-M LRPT processing preset for the satellite and its current transmission. Confirm the frequency and other preset values against the current satellite status rather than copying an unrelated older screenshot.
- Start the receiver shortly before the predicted pass. Watch the signal and received-data indicators as the satellite rises.
- Continue until the pass ends, then use SatDump’s processing or image viewer to inspect the decoded image, depending on the workflow selected.
The first image may be incomplete. Missing lines or gaps can indicate weak reception, local interference, a low pass or settings that did not match the transmission. Try a higher pass and compare. SatDump’s controls and preset names change with releases, so check the current SatDump documentation if the menu differs from the example above.
Another use for the kit: L-band
The same hardware can also be opened into a V for other satellite bands. This L-band arrangement uses short elements and a reflector. The 137 MHz setup above uses long elements without a reflector.

The kit arranged as a V-dipole for an L-band satellite experiment, with a metal reflector behind it. The 137 MHz setup uses longer elements and does not require the reflector. Photo: RTL-SDR Blog.

L-band satellite signals received with the V-dipole and reflector, appearing as narrow traces in the spectrum and waterfall display. Screenshot: RTL-SDR Blog.

A historical NOAA-19 APT image received directly on 137.100 MHz in May 2025. NOAA APT ended later that year; live weather-satellite work now means digital METEOR-M LRPT instead. NOAA, Wikimedia Commons, public domain.
Listen to the International Space Station
The ISS is a particularly nice target because most people already know what it is, but the word pass needs explaining if you have not tracked satellites before.
The station circles Earth roughly once every 90 minutes, completing about 16 orbits each day. It does not pass over your location every 90 minutes because its orbit is inclined and Earth is rotating underneath it. A pass is simply the period when the ISS is above your local horizon and therefore has a possible line-of-sight radio path to your antenna.
A pass prediction usually gives you AOS, acquisition of signal, when the station rises above your horizon; maximum elevation, the highest angle it reaches above your horizon; and LOS, loss of signal, when it drops below the horizon again. A good high pass may be receivable for roughly eight to ten minutes. Low passes are shorter and harder because buildings, terrain and the longer radio path near the horizon all work against you.
Passes tend to arrive in groups as the orbital ground track moves relative to your location. You may have several useful opportunities over a day or two, then a run of less convenient ones. There is no reason to calculate this by hand.
Pass-prediction tools
This is what I use on iOS. It gives pass times, direction and alerts; the extensions add radio and weather satellites.
A full desktop tracker for satellites, passes, azimuth and elevation.
Enter your position and get upcoming ISS passes without installing anything.
Useful if you also want to see the ISS, but it only highlights passes that are favourable for visual observation.
Before a pass, check the ARISS current station status. The amateur-radio equipment aboard the ISS can change modes, and it is sometimes turned off during station operations. The ARISS frequency page lists the published receiving frequencies. The two pages answer different questions: what frequency is used, and whether that equipment is working in the mode you expect right now.
For example, the ISS cross-band voice repeater has used a 437.800 MHz downlink, which you can receive with an ordinary RTL-SDR when it is active and within range. Digital packet operations have also used 437.825 MHz. 145.800 MHz is a familiar voice downlink for scheduled contacts. SSTV image transmissions happen during announced events and can use different frequencies and modes, so check the event details instead of assuming an older frequency is always correct. These are examples of activities and published channels, not a promise that you will hear a transmission during every pass.
For the 437.8 MHz downlink, use the short elements vertically. The theoretical quarter-wavelength is about 17 cm, a little longer than the supplied short elements can reach, so use their maximum length or use the long elements collapsed as far as practical. A simple 70 cm whip will also do useful work.
Try itReceive an ISS repeater pass
A downlink is the frequency transmitted from the ISS toward Earth. That is the one you tune when you are only listening. You do not need the repeater’s uplink frequency or an amateur radio licence to receive it. At 437.800 MHz, the moving station may sound slightly off-frequency because of Doppler shift. Keep enough spectrum visible to follow the signal and adjust the tuning gradually if necessary.
Centre the display around 437.800 MHz but leave enough spectrum visible on either side to follow Doppler shift. The signal may arrive several kilohertz above the published frequency while the station is approaching, cross that frequency near closest approach, then continue below it as the ISS recedes.
If the repeater is busy, you will hear amateur stations on the downlink. If packet is active instead, you will hear short digital bursts. During an SSTV event, record the audio and decode the images with suitable SSTV software.
What SSTV reception actually looks like
During the November 2024 ARISS SSTV event, I received and decoded nine of the commemorative images transmitted from the International Space Station. They are not pristine downloads, and that is part of what makes them useful. Noise, fading and lost lines remain visible in the finished pictures, so the radio path has left its own record on each one.
What SSTV sounds like
SSTV sends an image as a sequence of audio tones. This 2 minute 20 second recording was received directly from the ISS using my ID-52. It contains a complete SSTV transmission that suitable decoding software can turn back into an image. Turn the volume down before playing it. The tones are not especially musical.
Download the original WAV recordingThis is the original received audio from the ISS, preserved as a WAV so you can try decoding it yourself.
Pay attention to Doppler
Once you start receiving low-Earth-orbit satellites you will notice Doppler shift everywhere. This is the apparent change in frequency caused by motion between the transmitter and receiver, much like the changing pitch of a passing siren. On an ISS UHF pass the signal begins above its published frequency while the station is approaching. The offset gradually decreases, crosses the published frequency around closest approach, then continues below it as the station recedes.
The effect is smaller at VHF because the size of the Doppler shift scales with frequency. It is therefore much more obvious around 437 MHz than around 145 MHz. This matters with digital satellites as well: if the decoder does not compensate automatically, the signal can shift out of a narrow receive filter as the pass develops.
I would keep the waterfall wide enough during the ISS pass to watch this happen. You can follow the signal manually and see the shift change sign as the station goes from approaching you to moving away.

FO-29 received through a satellite pass. The curved traces make the changing Doppler shift visible as the satellite approaches and then recedes. Image: Jan, Hamspirit.
Compare antennas instead of guessing
By now you have already used the supplied antenna in several different configurations. That makes it worth doing a proper comparison rather than deciding one antenna is “better” because the spectrum trace looks taller.
Choose one stable signal. Broadcast FM works well because the transmitter is not moving and is unlikely to stop halfway through the experiment. Set the RF gain and leave it alone. Try a whip, then the dipole at a sensible length. Change the orientation. Put the antenna beside the computer, then use the coax extension to move it to a window. If you can place it outside safely, try that as well.
Watch both the wanted signal and the surrounding noise. Signal strength is commonly shown in decibels (dB). A signal that rises 6 dB while the noise also rises by 6 dB has not bought you much. What matters is the separation between the signal and the noise around it.
Try itWhip versus dipole
Take screenshots if you want to compare later. Keep the centre frequency, gain, spectrum-display scale and filter settings identical between tests.
Find the radio-frequency noise in your house
You can learn quite a lot without receiving anybody else’s transmitter. Radio-frequency noise is unwanted energy from electrical devices that appears in the part of the spectrum you are trying to receive. Find a relatively quiet piece of spectrum and leave the receiver gain unchanged. Put the antenna near a laptop charger, LED lamp, monitor, computer or cheap switch-mode power supply and switch the device on and off.
Some devices will do almost nothing. Others will raise the noise floor, the background level between signals, or produce isolated lines and evenly spaced patterns across the waterfall. This is why radio amateurs can become slightly tedious about power supplies, ferrites, shielding and antenna placement. A surprising amount of radio troubleshooting eventually leads to an innocuous power supply that was never intended to be a transmitter.
Try itHunt for local interference
Try several devices rather than assuming the first charger you pick will be awful. The clean comparison is device off, device on, device off again, with the antenna and receiver left alone.
Start pulling the receiver apart in GNU Radio
In SDR++, you chose a frequency and a mode, and the software worked out how to recover the sound. GNU Radio lets you see and build the steps that SDR++ normally handles for you.
We’ll use GNU Radio Companion (GRC), where a program is made from connected blocks. Each block does one job. One block collects radio data, another selects a station, another recovers the sound, and the final block plays it. A connected set of blocks is called a flowgraph.
We will put together three receivers using an RTL-SDR Blog V3:
- an ordinary FM broadcast receiver;
- an AM receiver for aircraft radio;
- an AM receiver for 792 kHz, which uses the V3’s special direct-sampling mode.
We will start with a familiar FM station, then reuse the same basic signal path for ordinary AM and finally medium-wave AM.

GNU Radio Companion turns the receiver into a visible chain of processing blocks and connections. Screenshot: Bhilburn, Wikimedia Commons, public domain.
Before you begin
The GNU Radio installation guide covers Windows, macOS and Linux. Radioconda provides a bundle that includes GNU Radio, Gqrx and related tools. These examples use GNU Radio 3.10 with SoapyRTLSDR support.
Connect your antenna and plug the RTL-SDR into your computer. Close SDR++ or any other radio program before opening GNU Radio, because only one program can normally use the receiver at a time. Start with your computer’s sound turned down.
Open GNU Radio Companion. You should see an empty workspace with an Options block, a Variable block and a panel where you can search for new blocks. If a block is hard to find, type its name in the block search. Double-click a block to edit its settings. Drag between matching connection points to join two blocks.
Open Options and set Generate Options to QT GUI. This allows your receiver to show controls and graphs while it runs. Check that the flowgraph uses Python as its output language.
One last thing about the numbers below: GNU Radio asks for many frequencies in hertz (Hz). For example, a station at 105.3 megahertz (MHz) is entered as 105300000. Always enter the complete number shown in the instructions, without spaces or commas.
1. Build an FM broadcast receiver
An FM broadcast is a good starting point because you already know what it should sound like. Choose a strong local FM station you were able to hear in SDR++.
Our first receiver will have just four working blocks:
RTL-SDR Source → FFT Low Pass Filter → WBFM Receive → Audio Sink
Download the FM broadcast receiver flowgraph (.grc)

The Source receives radio signals through the antenna. The Filter keeps the part of the signal we want. WBFM Receive takes the FM signal and recovers the sound. The Audio Sink plays that sound through your computer.
Add the source
- Find the existing Variable block named
samp_rate. Open it, change its ID torf_rateand set its Value to2400000. This tells GNU Radio to collect 2.4 million samples every second. - Find and add Soapy RTLSDR Source. If you have a working Osmocom Source instead, you can use it, but the settings labels may differ slightly.
- Open the source block and use the following values:
| Setting | Enter this | What it means |
|---|---|---|
| Sample Rate | 2400000 or rf_rate | Collect 2.4 million samples per second |
| Center Frequency | Your chosen station in Hz | For example, 105300000 means 105.3 MHz |
| Output Type | Complex Float32 | The form of radio data the next block expects |
| Automatic Gain Control | Off to begin with | Keep the receiving settings predictable |
| RF Gain | 20 as a starting point | Adjust only if reception is too weak or overloaded |
Keep the source in its normal receiving mode, with direct sampling off.
Add the filter
Search for FFT Low Pass Filter, add it to the workspace and open its settings. This block keeps the chosen FM station while reducing unwanted signals around it.
| Setting | Enter this |
|---|---|
| Type | Complex to Complex |
| Sample Rate | 2400000 |
| Cutoff Frequency | 100000 |
| Transition Width | 10000 |
| Decimation | 10 |
| Gain | 1 |
That last unfamiliar word, decimation, just means reducing the amount of data passed to the next block. The source collects 2400000 samples per second. After dividing that by 10, the filter produces 240000 samples per second.
Recover the sound
Add WBFM Receive. The name means wideband FM receiver. Open it and enter:
| Setting | Enter this |
|---|---|
| Channel Rate (sometimes labelled Quadrature Rate) | 240000 |
| Audio Decimation | 5 |
The WBFM Receive block produces 48000 audio samples every second. Add an Audio Sink and set its Sample Rate to 48000.
Connect the blocks in this order:
- Soapy RTLSDR Source output to FFT Low Pass Filter input.
- FFT Low Pass Filter output to WBFM Receive input.
- WBFM Receive output to Audio Sink input.
The coloured connections must match the input and output types. If GNU Radio refuses a connection, check that the filter is Complex to Complex.
Save your own version as FM_Receiver.grc (or begin from the linked example). Click Generate, then Execute (the Run button). You should hear your chosen FM station. If you hear noise, check that the station frequency is correct, the audio is unmuted and the filter and WBFM settings match the table.
Look at what you made. The physical radio receives the signal, but GNU Radio decides which data to keep and how to turn it into sound. Try changing the source frequency to another local FM station, one that you know is available.
Add a spectrum display
Once audio works, add a QT GUI Frequency Sink. Set Type to Complex, Bandwidth to 2400000 and Center Frequency to the same number used by the Source. Connect it to a second branch from the Source. Leave the original connection to the filter in place.
When you run the flowgraph again, you should see peaks in the spectrum. The broad area around your station represents the FM broadcast. The display is for observing the signal. It does not change the sound.
2. Change your receiver to AM
We will now recover sound from a different kind of signal. FM carries sound through changes in frequency. AM, short for amplitude modulation, carries sound through changes in the strength of the signal.
Aircraft voice radio uses AM. For aircraft approaching Brisbane from the Gold Coast direction, try 125.6 MHz, the Brisbane Approach frequency for the south-east sector. The Airservices ERSA entry lists this frequency for the sector within 30 nautical miles of the airport, south-east of the extended runway 01R/19L centreline.
Listen for short exchanges between pilots and air traffic control. There will be gaps between transmissions, so leave the receiver running for a while.
Save a copy as AM_Receiver.grc (or open the linked AM example). Keep the Source, Audio Sink and optional Frequency Sink. Remove the FFT Low Pass Filter and WBFM Receive blocks from the audio path. Replace them with the following pathway:
RTL-SDR Source → Frequency Xlating FIR Filter → Complex to Mag → DC Blocker → Rational Resampler → Audio Sink
Download the normal-tuner AM receiver flowgraph (.grc)

It has more blocks than the FM receiver because we are building the AM detection step ourselves. Complex to Mag is the key block: it follows the signal’s changing strength to recover the information carried by AM.
Select the aircraft channel
Set the Source Center Frequency to 125650000. That’s 125.65 MHz, which is 50000 Hz above our target station at 125600000 Hz. We’re doing this deliberately to avoid an unwanted spike that some receivers create at the centre of the display.
Add a Frequency Xlating FIR Filter. This block selects a narrow part of the radio spectrum and moves it into the middle of the data we want to decode.
Enter these settings:
| Setting | Enter this |
|---|---|
| Type | Complex to Complex (Real Taps) |
| Decimation | 30 |
| Center Frequency | -50000 |
| Sample Rate | 2400000 |
| Taps | firdes.low_pass(1, rf_rate, 5000, 2000, window.WIN_HAMMING) |
Copy the entire Taps entry exactly, including the commas and brackets. rf_rate is the sample-rate variable that we set to 2400000 earlier. The expression tells GNU Radio how to select the narrow AM channel. The -50000 setting moves our chosen station to the middle of that channel.
The filter reduces the data rate from 2400000 to 80000 samples per second.
Recover and play the AM sound
Add the following blocks in order:
- Complex to Mag. It converts the changing signal strength into a stream containing the audio information. It has no special settings to change for this receiver.
- DC Blocker. Set its data type to Float, if that option is shown. This removes a steady offset left behind by the AM detector.
- Rational Resampler. Choose Float to Float, set Interpolation to
3and Decimation to5. The 80000 samples per second become 48000 samples per second, suitable for the Audio Sink. - Keep your Audio Sink at
48000.
Connect each block to the next and check that there are no red error messages in GRC. Save, generate and run the file. With aircraft in range and a suitable antenna, you should hear pilots speaking to air traffic control. You may hear aircraft more clearly than the ground controller.
You may also add a QT GUI Time Sink on a second branch after the resampler. Choose Float and set Sample Rate to 48000. You will see the recovered audio change as someone speaks.
If you hear nothing, first check the station in SDR++ with AM mode. If SDR++ cannot receive it either, the problem may be the signal or antenna rather than your flowgraph. If SDR++ works and GNU Radio does not, compare the Source frequency, the -50000 setting, the Taps entry and the sample rates.
3. Receive AM at 792 kHz with the V3’s special mode
The next station is much lower in frequency: ABC Radio National on 792 kHz, which is 792000 Hz or 0.792 MHz. To find another service, use the ABC frequency and coverage search.
The RTL-SDR Blog V3’s normal tuner cannot reach that frequency. But the V3 has a built-in alternative path called direct sampling, which can receive much lower frequencies without modifying the device.
The AM decoding blocks you just built are still useful. We’re changing how the RTL-SDR receives the signal, not the way GNU Radio recovers AM sound.
Save a new copy as AM_792kHz_Receiver.grc (or open the linked direct-sampling example).
Download the RTL-SDR V3 direct-sampling AM flowgraph (.grc)

Change the source mode
Stop the flowgraph and close any other SDR program. For the V3’s Q-branch direct sampling, the RTL-SDR driver uses the setting direct_samp=2. This is a device setting; it is not the station frequency.
Replace the ordinary source with a Soapy Custom Source. Set Driver to the quoted text 'rtlsdr', Output Type to Complex Float32, Num Channels to 1, and Sample Rate to 2400000. In Ch0: Other settings, enter the quoted text 'direct_samp=2'. Leave Device Arguments empty. This settings field is important: entering the option only as a device argument may not activate Q-branch reception. The downloadable flowgraph already contains these values, so you can open it and compare the settings.
Set the source Center Frequency to 842000. This is 50 kHz above Radio National at 792000 Hz. Keep the same Frequency Xlating FIR Filter as before, including its Center Frequency of -50000 and its Taps entry. That selects the 792 kHz broadcast.
The rest of the signal path remains:
Frequency Xlating FIR Filter → Complex to Mag → DC Blocker → Rational Resampler → Audio Sink
Keep the output rate at 48000 samples per second. Generate and run the flowgraph.
What should happen?
If reception is strong enough, you should hear recognisable Radio National speech through your speakers. The program may also display a narrow signal near the station frequency.
The small dipole supplied with many RTL-SDR kits is intended mainly for higher frequencies. If the kit dipole is all you have, extend both telescopic arms as far as they will go, then try moving it around the room or placing it near a window. That gives it the best chance of picking up a medium-wave signal, although the antenna is still much shorter than ideal. A suitable medium-wave loop or properly connected long wire of around 5 metres or more will usually work better. Never connect an antenna to household electrical wiring, and keep outdoor antennas well clear of power lines.
A weak or missing station does not automatically mean the flowgraph is wrong. Some V3 units have reduced sensitivity below 2000000 Hz. If you only see a sharp spike exactly in the centre of the display, that may be a receiver artefact rather than a station. Compare the spectrum with what you can actually hear.
When you finish, use the ordinary-tuner FM or AM flowgraph to return to higher frequencies. The Q-branch setting belongs only to the direct-sampling receiver.
Look at the three receivers together
| What you received | Frequency example | What changed in GNU Radio? |
|---|---|---|
| Broadcast FM | A local station between 87.5 and 108 MHz | WBFM Receive recovers sound from FM |
| Aircraft radio AM | 125.6 MHz | Complex to Mag recovers sound from AM |
| Medium-wave AM | 792 kHz | The same AM blocks work, but the V3 uses Q-branch direct sampling |
Open the saved flowgraphs side by side. Which blocks stay the same? Which blocks change? Can you point to the block that selects the signal, and to the block that recovers the sound?
That is the useful part of GNU Radio: you can see what the receiver is doing, change one part, run it again and find out whether your change worked. For someone who has used Python or visual programming, the idea is familiar. Data enters, each stage processes it, and a result comes out.
Amateur radio from here
You can get a surprisingly long way with an RTL-SDR before needing to transmit anything. By this point you may have listened to an amateur repeater, received packets from aircraft, followed an instrument through the atmosphere, received data from orbit, watched Doppler shift on a waterfall, changed an antenna to suit a particular frequency and built part of a receiver in GNU Radio.
That gives the licensing material some context. Frequency allocations, callsigns, modulation modes, antenna design and operating procedures now refer to things you have already encountered rather than things you are being asked to imagine.
In Australia, transmitting on amateur bands requires the appropriate qualification and callsign. The ACMA amateur-radio page explains the current regulatory arrangements, while the WIA Foundation information is a useful starting point for the entry-level qualification.
If this has caught your interest, this is where I would start looking seriously at the Foundation qualification and getting a callsign. The band plan describes frequencies you have already explored, the modulation modes are things you have heard and seen, and antenna dimensions are something you have actually measured.
Then you get to transmit. You can call through a repeater you have been listening to, make simplex contacts, try digital modes, build antennas for both transmit and receive, and eventually communicate directly over the same amateur satellites you started out tracking with the RTL-SDR. The dongle does not become redundant either; it remains a useful second receiver, spectrum display, satellite receiver and general-purpose bit of test gear in an amateur station.
This is VK4MPB saying 73* and going clear on the Chips’nCode repeater.
73 is amateur-radio shorthand for “best regards”.