Learn by Hamming



Build a Take-it-Anywhere SDR Receiver: Part 1 – The Build

I won an SDRPlay RSP1B software-defined radio receiver at a recent ham radio club meeting. The RSP1B is a really cool receiver which will receive signals from 1kHz through 2GHz. Not only that, but it’s about 3 inches square, and only about an inch tall (and looking inside the enclosure, SDRPlay probably could have made it even smaller!)

Many amateurs will know that, especially at microwave frequencies, the coax you connect to your receiver can attenuate received signals by a LOT. Besides, in my ham shack, I only have two coax feed lines running to my antennas – one for HF, and the other for VHF/UHF.

Seemingly unrelated, I recently set up remote access to my friend Emil’s (yes, FM38 Emil) Flex6500 radio at Fox Valley Technical College. Around the same time, another friend, Andy, AJ9L started experimenting with separating the Icom IC-905 from its head unit (they’re connected by an RJ-45 cable and it turns out Icom run a packet data link between the RF unit and head unit!).

All of this brought me to a concept of ganging the RSP1B up with a server to which you can connect if you’d like to monitor a frequency. And, as it turns out, SDRPlay’s SDRConnect software has that feature, and it’s really not that hard to get running on a Raspberry Pi! Because of the portability of both the RSP1B and the Pi, a cool 3D print model, a cheap Amazon converter and some luck, I was able to make a fist-sized (well, maybe Floyd Mayweather’s fist) SDR server that can be taken literally anywhere!

The parts

To make this build, you will need

  • An SDRPlay RSP1B (duh)
  • A Raspberry Pi 4B+
  • A 32GB MicroSD card and a way to read/write it
  • A USB-C power supply and/or
  • A 12DVC to USB-C converter
  • A USB-A to USB-B cable
  • Access to a 3D printer
  • (Optional but very useful) A USB Wi-fi dongle
  • Four 6-32 x 1in machine screws
  • Four 6-32 x 1/2in machine screws
  • Four #6 nuts (Optional/cool: use Nylock nuts)
  • A 6-32 tap
  • 3/16in drill bit
  • (Optional/useful – automatic center punch)
  • PuTTY or similar remote terminal software
  • (Optional) TigerVNC or similar remote desktop software

The Pi case

The first step in this build is to print a case for the Raspberry Pi. I found one that worked well on Thingiverse. This particular design comes in a lot of variations; I’d recommend the blank 75mm VESA bottom and the full top. If you’d like, you can also get a version with a 30- or 40mm hole for a case fan.

Astute readers will notice that I didn’t use the 75mm VESA bottom. Because of that, I struggled (but managed) to fit the Pi on top of the RSP1B. Don’t be like me. Use the 75mm VESA bottom.

You’ll want to print the top and bottom out of your favorite filament. I was basic and I just chose black PLA. If you’re planning to install your remote RSP1B in an attic, you might want to choose PETG or ABS, so it doesn’t degrade in the heat.

The Pi case is designed to be held together by either M4 – 0.7 or #6-32 machine screws, so you will need to tap the pilot holes in the bottom with the 6-32 tap. Since we’re tapping plastic, this works out very easy; you can just chuck the tap into a cordless drill and zip it in and out a few times.

Install the Pi in the case and close it with the longer #6-32 screws.

Mod the RSP1B

Position the Pi on top of the RSP1B, taking care that the 75mm VESA mount holes aren’t super close to the edges of the case – there needs to be enough clearance on the back to fit #6-32 nuts without them running into the sides of the case. Using a pencil or scribe, mark the 75mm VESA mount holes on the top of the RSP1B.

Flip the RSP1B over, remove the feet (they’re just stickers) and lay them aside. Unscrew the four screws holding the RSP1B together and open the case. Marvel at the tiny PCB that is the RSP1B!

Take the case to a workbench, center punch and drill the four holes you marked.

Using the shorter #6-32 screws and nuts, bolt the Pi case to the RSP1B case.

Reassemble the RSP1B case (this can be a little tricky as the PCB just floats on the standoffs between the top and bottom of the case) and replace the RSP1B’s feet.

Install Pi OS

To install Pi OS, you will need to use software that will write an image of the operating system to the SD card. Probably the easiest way to do that is using Raspberry Pi Imager. Download and install it, and plug in your SD card.

Open the Imager and choose your device. If you’re following this tutorial exactly, it will be the Pi 4.

Next, choose the OS. It is critically important that you do not choose the regular Pi OS! Nor will Pi OS (Legacy, 32-bit) work. Any 32-bit operating system won’t work; nor will any port of Debian Bookworm. Instead, find Raspberry Pi OS (Other) and find Raspberry Pi OS (Legacy, 64-bit). This is the 64-bit Pi OS which is based on Debian Bullseye. Click Next.

A screen will pop up asking whether to apply OS customisation (sic) settings. Click on Edit Settings. Make sure to change the required settings below; you may want to change the optional settings:

  • hostname (optional): I called mine RSP1B.local
  • username and password (required): DO NOT leave this default; that’s a huge security risk! I used username sdr, but I won’t tell you the password I chose.
  • Configure wireless LAN (required) to work on your network
  • Locale settings (optional)
  • Under the Services tab, enable SSH (required), and use password authentication

When you are done, click save, and then YES, apply customisation (sic – RPi are a British company) settings. Wait while the Imager installs Pi OS on your SD card.

When it is done, eject the SD card, and put it in the Pi.

Boot the Pi

(Note that we haven’t plugged the RSP1B into the Pi yet. This is intentional!)

Plug power into the Raspberry Pi. This will turn it on. Wait a few minutes, then use terminal software to remote into the Pi.

I am an absolute Linux nerd, so I will give Linux commands (with explanations) here. If you are running Windows or Mac OS, you should be able to use PuTTY to do the same things I’ll do via the Terminal.

To get into the Pi, type

ssh sdr@rsp1b.local

and hit enter. SSH stands for Secure Shell, and it’s an encrypted way of running remote commands on a Linux computer. sdr is the username we chose when we installed Pi OS and rsp1b.local is the Pi’s hostname – the human-readable name it answers to.

You may get a warning about a fingerprint and whether you want to accept it. Type ‘yes’ and hit enter. After a second or two (and a warning about how Linux comes with absolutely no warranty – can’t void it if it isn’t there!), you should be connected. Type

sudo raspi-config

and hit enter. As before, you can ignore the $; it just tells you that the terminal is expecting input from you.

Some actions on a computer require administrator privileges. sudo tells the Pi to run the rest of the command as an administrator. raspi-config is a program RPi have developed to configure most system settings on the Pi. If the Pi asks you for a password, enter the one you chose when you installed the OS.

Use the arrow keys to scroll down to Interface Options. Hit enter, then choose VNC. Make sure it is enabled.

VNC isn’t strictly required, but it will make it easier to do things on the Pi if you don’t speak fluent Terminal.

You may also want to go to Display Options -> VNC resolution and choose a bigger resolution. Once you’re done, the right arrow key will let you select <Finish>. The software may warn you that you should reboot. If it does, you can say

sudo reboot

Your entire SSH session will close and you’ll have to wait a minute or two while the Pi reboots. Once that process is complete, open TigerVNC. Tell it the VNC server is rsp1b.local. Click Options… Make any changes you’d like. The one highly recommended option would be under the Input tab, Mouse -> Show dot when no cursor.

Press OK, then Connect. Enter your username (sdr) and password. If all goes well, a remote desktop should open up!

That’s enough for one article!

At this point, we have the bare (bear?) necessities to start configuring the SDR software.

In the next installment of this series, we’ll go through the steps to get an SDRConnect server running on the Pi. In Part 3, we’ll explore how to listen to trunked radio signals (e.g., P25 phase 1) using the SDR/pi stack!