Projects

Listen In

Software-Defined Radio & 433MHz Decoder

Luke Prior

Issue 41, December 2020

This guide will introduce low-cost SDR and teach you how to tune into your local radio station and decode your neighbourhood’s 433MHz devices.

Just a few short years ago if you wanted to experiment with receiving a wide range of radio frequencies you had to invest in large expensive equipment. In the past few years, we have seen impressive growth in software-defined radio (SDR) to the point where we can now receive a large spectrum of frequencies with a cheap USB receiver and laptop.

In the past, we had to use dedicated circuits to manage signal processing tasks such as signal filtering, frequency mixing, signal amplification, and modulation/demodulation but as computers have become faster we can now perform these operations in software giving us the term Software-Defined radio.

THE BROAD OVERVIEW

The RTL-SDR project was started in 2012 when a group of researchers discovered that the RTL2832U chipset found in various mass-produced DVB-T TV tuner dongles could be accessed directly. This discovery allowed for any DVB-T TV tuner with an RTL2832U chipset to be used as a software-defined radio. This brought the price of entry down from hundreds or thousands to under $100 for a basic kit.

The RTL2832U chipset can receive frequencies between 500kHz - 1.75GHz which allows for a variety of projects and applications ranging from FM radio receiver to 433MHz device sniffer to ADS-B plane tracker to even receiving weather satellite imagery all with a single device.

In the early days, you had to scout the internet to find a tuner featuring the correct RTL2832U chip and fight with unsupported drivers and software. Luckily as SDR has grown in popularity we have seen several specially designed SDR radios released utilising the RTL2832U chip such as the Adafruit SDR USB Stick.

These new devices incorporate several design improvements to improve performance and reliability such as industry-standard antenna connectors, improved antenna design, and specialty cooling solutions for long-duration operation.

These RTL2832U based USB radios are now supported in almost every SDR application with various programs being developed specifically for the devices.

Note: In this tutorial, we will be using Windows but you can find similar programs for macOS and Linux.

When it comes to choosing an RTL2832U SDR receiver in Australia, Core Electronics offers the wonderful Adafruit SDR USB Stick bundle which includes everything you need to get started while also leaving room for expansion.

In this tutorial, we will be including steps to use the bundled DVB-T antenna or an optional telescopic antenna upgrade.

Software Defined Radio Receiver USB Stick from Adafruit.com
ANT500 - 75 MHz to 1 GHz Telescope Antenna from Adafruit.com
Parts Required:Core Electronics
1 x Adafruit SDR USB StickADA1497
Optional Antenna Upgrade
1 x MCX Jack to SMA RF Cable AdapterADA1532
1 x Telescopic Antenna - 75 MHz to 1 GHz (ANT500)WRL-13002
1 x 50cm SMA Male to SMA Female Extension Cable*SS321080047

Parts Required:

1 x Adafruit SDR USB StickADA1497
Optional Antenna Upgrade
1 x MCX Jack to SMA RF Cable AdapterADA1532
1 x Telescopic Antenna - 75 MHz to 1 GHz (ANT500)WRL-13002
1 x 50cm SMA Male to SMA Female Extension Cable*SS321080047

* Optional, can also be daisy-chained for extra length

Software Setup:

We will be learning how to install the drivers and software for our SDR receiver on Windows 10, along with a few great beginner SDR projects including FM radio tuning, 433MHz device decoding, and how to construct a 3D printed antenna mount.

The program of choice for Windows is SDR# which includes native support for RTL2832U based receivers and supports a large library of plugins for various frequencies and protocols.

First, navigate to https://airspy.com/download/ and download the latest Windows SDR Software Package.

Extract the downloaded sdrsharp-x86.zip to a folder on your PC.

Run the install-rtlsdr.bat file from within the extracted folder. This file will download the required drivers rtlsdr.dll and zadig.exe

Insert your USB SDR dongle into an available USB port.

Run the zadig.exe executable as administrator.

In Zadig, ensure the “Options->List All Devices” option is enabled and uncheck “Ignore Hubs or Composite Parents”.

Select “RTL2832UHIDIR” from the drop-down list. If this option is not present, look for Bulk-In, Interface (Interface 0), or RTL2832U instead. You can verify that you have selected the correct device by checking the USB ID shows “0BDA 2838”.

Ensure that WinUSB is selected in the right box and click Replace Driver.

Note: If you receive a warning about modifying a system driver select Yes to continue.

This will install the necessary drivers so we can use our dongle as a software-defined radio.

We can now configure SDR#. Run SDRSharp.exe.

Note: You may receive a windows defender notification, however, you can safely ignore this.

Once SDR# is open, set the source to “RTL-SDR USB (Original)” from the drop-down menu.

We need to configure the RF gain of our SDR dongle to receive weaker signals. Select the cog item in SDR# and drag the RF Gain slider to the centre to get a value near 28 dB. You can adjust this later according to the specific transmission you are trying to receive.

Now that you have installed the necessary drivers and configured the SDR software, you can begin scanning the airwaves and try out some of our following projects.

FM Radio Tuning:

FM broadcasts are common across the world thanks to their long-range and the fidelity offered compared to AM transmissions. In Australia, FM radio uses the VHF band II (98 - 108 MHz), which makes it very easy to receive with our SDR dongle. We can use the SDR# sharp software we used earlier to receive and listen to these broadcasts.

The included antenna with our SDR USB stick is sufficient for receiving FM transmissions if you are in an area with decent reception. If your reception is poor or you want to tune into stations further away, you can consider upgrading to the ANT500 telescopic antenna.

Included Antenna

To set up the included antenna, simply screw everything together and position the antenna in an open area as far away from electrical devices as the cable allows to reduce interference. The antenna should be vertically mounted for optimal reception.

Optional ANT500 Antenna

We can use an online calculator, such as the Amateur Vertical Antenna Calculator http://www.csgnetwork.com/antennaevcalc.html to find the optimal length for our antenna. As we are targeting a frequency range of 98 - 108 MHz, we can enter the upper and lower values into the calculator and average the results to find our optimal antenna length. We need to set the wavelength to ¼ due to the size of our antenna. This process can be used to tune the antenna for any frequency.

When we enter our values of 98 MHz and 108 MHz in, we get calculated optimal vertical lengths of 0.728m and 0.991m respectively. When we average these values we get the optimal vertical antenna length for Australian FM radio to be 0.86m, if you had a specific radio station that you wanted to listen to with a weak signal you could optimise the antenna for that station in particular.

Now that we have the optimal length for our telescopic antenna, we can extend it to ~86cm measuring from the hinge. The length does not need to be exact and the antenna can simply be extended to its full length of 88cm with minimal impact.

The next step is mounting the antenna in the correct orientation. For FM radio, we want the antenna to be vertically orientated as this the most common polarisation for VHF FM stations and should result in the best reception. The antenna should be positioned away from metal objects and electronics to reduce interference if possible.

Note: We have also provided a 3D printed mount for the antenna, which we will describe later in this project.

This particular configuration will provide excellent reception and should pick up even the faintest FM transmissions, however, due to the high power of FM broadcasts, most antennas in any orientation should pick up local stations.

Software Configuration

Once you have configured your chosen antenna and attached it to the USB SDR receiver, we are ready to connect it to the computer and start listening to some stations. We will be using SDR# which we set up earlier.

Open SDRSharp.exe and ensure RF Gain is set halfway at ~28 dB.

To listen to FM radio we need to select the correct radio mode in SDR#. In our case, this will be Wideband FM (WFM).

Clicking the play button will cause our SDR dongle to start listening and outputting the information received.

You should hear static noise through your speakers. If this is not the case, adjust the program volume and RF gain until you can.

To tune into our favourite radio station we need to know the frequency the station broadcasts on. We will try listening to ABC Classic, which is broadcasted at 106.1 MHz. We can enter this information into SDR# and, if everything works, you should hear ABC Classic. If the audio quality is poor you can try relocating the antenna or adjusting the RF Gain to get a better signal.

We can notice a bump in the frequency graph around 106.1 MHz. This shows that the power level at this frequency is higher, indicating that something is transmitting. We can listen to other stations by entering their frequency or dragging the frequency to other spikes within the confines of 98 - 108 MHz.

You may have some small FM transmitters in your house such as ones often found in DIY electronics kits or car accessories. You can try listening to these transmissions if the device is powered on and within range of the antenna.

433MHz Device Decoding:

A large number of electronic devices communicate on the 433.92 MHz band without any encryption. These devices will often feature an outside sensor and an indoor display that displays the information. These devices include home weather station outdoor units, energy monitors, motion sensors, and a range of other low power devices.

As these devices communicate on the 433.92 MHz band unencrypted, we can easily intercept the data and decode it to reveal some interesting information.

A collection of device protocols have been documented and implemented in free open-source software, making it easier than ever to listen to the various devices in your area.

Included Antenna

We can continue to use the included antenna with the same mounting in an open area and as far away from electrical devices as the cable allows to reduce interference. The antenna should be vertically mounted for optimal reception. This configuration will work but has quite a limited range due to the antenna used. If you want to find devices further away consider the ANT500 antenna.

Optional ANT500 Antenna

We can tune our ANT500 vertical antenna to 433.92 MHz using a similar process as we did for receiving FM radio. We can use the same online Amateur Vertical Antenna Calculator http://www.csgnetwork.com/antennaevcalc.html but this time, setting the wavelength to ½ to get a length within our antenna’s range.

We can then calculate the optimal vertical length to be 0.329m. Once again, we measure from the joint out ~33cm. We will also want to mount the antenna vertically as with our FM receiver and outside if possible for maximum range.

Software Configuration

We will be using rtl_433 which is an open-source generic data receiver with support for Realtek RTL2832 based dongles like ours. You can find pre-compiled windows binaries for download here https://bintray.com/chzu/dist/rtl_433#files.

Simply select the latest version and under files download the correct 32 or 64 bit binary for your system. Once you have downloaded the relevant binary extract the folder. To run rtl_433 simply execute rtl_433.exe and a new terminal window should appear.

The program should load in its database of known 433 MHz device communication protocols and will begin listening for matches. In our case, we detected an old outdoor temperature unit which we did not know was still running.

You can try moving the antenna to see what devices you can detect. We found a variety of devices including a power monitor, garage door remote, tyre pressure management system, and about four weather stations.

Advanced Software Configuration

The program has a number of configuration options to help you ignore specific devices and search for weaker signals.

All devices detectable by rtl_433 are listed in the official documentation here https://github.com/merbanan/rtl_433 and are each assigned a number. Some devices may be disabled by default due to conflict issues, in which case, you can override the default settings to include all devices by adding the -G argument when running the program.

The easiest way to add arguments when starting rtl_433 is by running the program from the windows address bar with the arguments added after the rtl_433.exe file. These arguments can also be added by running the program from a command line.

If you are developing a project where you only want a specific device to be detected, or you need to exclude a specific device, you can use the -R argument along with the device number. If you use a positive device number it will be included and a negative device number will exclude the device.

These arguments can be combined to create highly customisable outputs specific to your project’s individual needs.

There are also options to publish the output to a MQTT server for storage or processing.

3D Printed Antenna Mount:

The ANT500 antenna is designed to screw directly onto a panel mounted socket so there is no base to help relocate it for better reception. To overcome this limitation we designed and printed a base for it. To start the design process, we measured the rough dimensions of the ANT500 telescopic antenna. We then began to consider various mounting designs, and decided to try a simple friction fit design to reduce design complexity and improve printing compatibility.

Mount Version 1: The initial design consisted of a simple rectangular prism with a subtracted channel equal to the antenna size. We curved the channel in the hope of matching the curvature of the antenna. This design resulted in a fairly snug fit, however, we did experience some levelling issues, especially with the antenna fully extended.

Mount Version 2: For our next revision, we added read support pillars to ensure the antenna remained level at the bend. This design held the antenna level but would still allow the antenna to rotate side to side.

Mount Version 3: To help secure the antenna and prevent it from rotating left or right, we added some extra height to the end to prevent the antenna from rotating and help secure it. This antenna design was good due to the simple design and friction fit, but not particularly stable with such a small base and would frequently fall over.

Mount Version 4: The final revision involved the inclusion of a circular base to prevent the antenna from toppling over. This design relies only on friction and gravity to secure the antenna so is not suitable for external or long-time deployment but is perfect for quick prototyping and development.

Printing

We printed all the versions on a Creality Ender 3 Pro with generic PLA filament. The print is very simple and does not require any support or adhesion. With a 20% infill, the print came in at ~11g and took about 80 minutes to print. The file can be found on our website or at https://www.thingiverse.com/thing:4633251

WHERE TO FROM HERE?

This project is a great resource to learn about the basics of Software-Defined Radio and how to get started with receiving basic transmissions. If you are interested in learning more about Software-Defined Radio and its many possibilities you should look into more advanced projects with dedicated antennas and software. With SDR it is possible to decode transmissions from various weather and photography satellites, receive plane positions, and listen to the ISS.

You may also be interested in reading some of our SDR related features, which includes Plane Spotting in Issue 4, and Digging For Satellites in Issue 2.