Lukas Lao Beyer
Software Defined Radio
The FreeSRP is an open-source (hardware and software) platform for software-defined radio that is affordable, high performance, compatible with existing SDR software such as GNU Radio, and includes an expansion port for hardware add-ons.
The FreeSRP comes in a small, portable form factor (7 cm x 11 cm) that can be completely powered from USB. FreeSRP streams acquired signals to a computer in real-time over USB 3.0.
A software-defined radio (SDR) digitizes received signals as early on in the signal chain as possible. This delegates as much signal processing as possible to dynamically reconfigurable software, so the hardware does not limit what types of wireless transmission protocols can be received or transmitted. This makes it possible to both receive and transmit a wide variety of signals. The FreeSRP’s frequency range of 70 MHz to 6 GHz covers most interesting radio signals, and the high bandwidth and sample rate of up to 61.44 million samples per second allows experimentation even with high data-rate protocols such as WiFi or LTE.
Because virtually all of the processing is done on the computer the FreeSRP is connected to, the FreeSRP’s hardware does not limit what kind of signals you can receive and transmit. Implementing various communication protocols can be done purely in software, so you can do anything from analyzing Bluetooth traffic (at all levels from the raw received signal to fully decoded packets) to developing your own, completely custom wireless protocol for your next project.
Therefore, software-defined radio is an essential tool for:
The FreeSRP balances a useful and powerful set of specifications with an affordable price and a compact form factor ideal for field use.
I started working on the FreeSRP in 2015 because I needed a flexible tool for debugging my radio-enabled electronics prototypes, and because I wanted to learn more about RF and the devices surrounding me. This means the FreeSRP has been built from the beginning as a development and educational tool, providing features most useful for electronics hobbyists and enthusiasts as well as professional developers working on new wireless devices or security research.
The extremely wide frequency range goes up to 6 GHz. This means you can experiment with devices using the 5.8 GHz ISM band. As the 2.4 GHz band becomes congested, more devices are starting to use the 5.8 GHz band; the FreeSRP will allow you to communicate with these cutting edge devices.
The high sample rate and bandwidth is essential to capture frequency hopping transmitters and modern, high data-rate protocols.
An external amplifier is included in the transmitter signal path of the FreeSRP, which significantly improves its range.
The FreeSRP has a 0.1 inch header with eight 5 V tolerant, general purpose input/output pins. The voltage at which these pins operate can be configured from 1.8 to 5 V, so you can hook up FreeSRP to other embedded devices. This can be especially useful when correlating digital signals on the device under test with the RF signals it emits.
The high speed expansion connector will allow for more complex hardware add-ons. For example, an Ethernet interface or an LCD screen could be added in the future.
The FreeSRP is fully compatible with GNU Radio, and prebuilt software packages are available for Ubuntu.
The small form factor makes the FreeSRP convenient to carry around and use in the field. You don’t need to lug anything else either, since all FreeSRP needs for power is a USB port.
FreeSRP is easy to set up on any Linux system. The FreeSRP library is being packaged for various Linux distributions — on Ubuntu, it’s already available as a PPA from Launchpad. Currently, it is not supported on Windows, but the FreeSRP library’s code is being kept as platform independent as possible and will be ported to Windows in the future.
In GNU Radio, the FreeSRP is supported through the gr-osmosdr
block. This means it works with popular applications such as the user-friendly gqrx SDR receiver and is straightforward to implement into your GNU Radio signal processing flow graphs.
It is very easy to integrate the FreeSRP C++ library into your own software. You also have access to command-line utilities:
freesrp-ctl
, which can be used to upload firmware and FPGA bitstreams to the FreeSRPfreesrp-io
, which can be used to stream data out of and into the FreeSRPfreesrp-io
and baudlineAs freesrp-io
can output to stdout
, it’s very easy to set it up to stream samples into other applications. For example, it works flawlessly with Baudline:
`freesrp-io -f929.7e6 -b1e6 -g30 -o- | baudline -stdin -channels 2 -quadrature -format le16 -samplerate 1000000`
This command will pipe samples at 1 MHz bandwidth and a gain of 30 dB with a center frequency of 929.7 MHz into Baudline.
For the FreeSRP to be a true software radio platform, every component must be open, well documented, and easy to modify. This is why we’ve made the complete hardware, firmware, FPGA design and PC software all open source. By making clean, straightforward code a priority, integrating the FreeSRP into custom software and hardware is easy and painless.
The FreeSRP library, libfreesrp
, is already available on GitHub. In GNU Radio, the FreeSRP is supported through a custom fork of the widely used gr-osmosdr library. Currently, this fork is freely available on GitHub, and the changes to gr-osmosdr that add FreeSRP support will be merged into the original gr-osmosdr project soon.
In GNU Radio, using the FreeSRP as a signal source or sink is as easy as placing the gr-osmosdr
block in your flowchart. In your custom C++ applications, initializing the FreeSRP, setting transceiver parameters, and starting to receive or transmit data all are straightforward commands which can be done in about five lines of code.
The complete hardware designs will be available as PDF schematics and Gerber files or in a completely editable form through Altium CircuitMaker before this campaign ends. Since CircuitMaker is proprietary software that requires the Windows operating system, the designs will be remade in the open-source KiCad in the near future.
Firmware for the FX3 ARM processor and the FPGA design for the Artix 7 FPGA are already fully functional, but they have not been published yet as they are undergoing significant cleanup to improve efficiency and readability of the code. They will be published before the end of the campaign.
Frequency Range | Bandwidth | Resolution | Duplex | Hardware Expansion | Open Source | Price range | |
---|---|---|---|---|---|---|---|
FreeSRP | 70 MHz - 6 GHz | 61.44 MHz | 12 bit | Full | Yes | Full hardware, FPGA design, firmware and software | $420 |
HackRF | 10 MHz - 6 GHz | 20 MHz | 8 bit | Half | Yes | Full hardware, firmware, and software | $299 |
USRP B200 | 70 MHz - 6 GHz | 61.44 MHz | 12 bit | Full | No | Schematics, firmware, and software | $796 |
BladeRF | 300 MHz - 3.8 GHz | 40 MHz | 12 bit | Full | Yes | Schematics, FPGA design, firmware, and software | $420 |
LimeSDR | 100 kHz - 3.8 GHz | 61.44 MHz | 12 bit | Full (MIMO) | No | Full hardware, firmware, and software | $299 |
The FreeSRP is currently being analyzed for RF performance. Final results will be published as soon as they are available. Meanwhile, this section will compile the most relevant specifications for the transceiver, amplifier, baluns, and switches.
Check out the Analog Devices AD9364 datasheet for more detailed information.
Frequency Band | Parameter | Min | Typ | Max | Unit | Comments |
---|---|---|---|---|---|---|
800 MHz | Noise Figure | 2 | dB | At maximum Rx gain | ||
IIP2 | 40 | dBm | At maximum Rx gain | |||
IIP3 | -18 | dBm | At maximum Rx gain | |||
LO Leakage | -122 | dBm | At Rx front-end input | |||
Modulation EVM | -42 | dB | ||||
Gain | 0 | 74.5 | dB | Adjustable | ||
2.4 GHz | Noise Figure | 3 | dB | At maximum Rx gain | ||
IIP2 | 45 | dBm | At maximum Rx gain | |||
IIP3 | -14 | dBm | At maximum Rx gain | |||
LO Leakage | -110 | dBm | At Rx front-end input | |||
Modulation EVM | -42 | dB | ||||
Gain | 0 | 72.0 | dB | Adjustable | ||
5.5 GHz | Noise Figure | 4 | dB | At maximum Rx gain | ||
IIP2 | 42 | dBm | At maximum Rx gain | |||
IIP3 | -17 | dBm | At maximum Rx gain | |||
LO Leakage | -95 | dBm | At Rx front-end input | |||
Modulation EVM | -37 | dB | ||||
Gain | 0 | 65.5 | dB | Adjustable |
The FreeSRP uses three different baluns to adapt the single-ended input from the antenna to the differential inputs on the AD9364 transceiver. The AD9364 provides three selectable inputs, so the FreeSRP switches the balun it uses depending on the frequency range it is operating in. The baluns used are the Anaren BD3150N50100AHF, the Anaren BD1631J50100AHF, and the Coilcraft JA4220-AL. A Skyworks SKY13317-373LF is used to switch the input to one of the three baluns.
Check out the Analog Devices AD9364 datasheet for more detailed information.
Frequency Band | Parameter | Min | Typ | Max | Unit | Comments |
---|---|---|---|---|---|---|
800 MHz | Noise Floor | -157 | dB | 90 MHz offset from carrier. Before external amplifier. | ||
OIP3 | 23 | dBm | ||||
Carrier Leakage | -50 | dBc | At 0 dB attenuation | |||
Modulation EVM | -40 | dB | ||||
2.4 GHz | Noise Floor | -156 | dB | 90 MHz offset from carrier. Before external amplifier. | ||
OIP3 | 19 | dBm | ||||
Carrier Leakage | -50 | dBc | At 0 dB attenuation | |||
Modulation EVM | -40 | dB | ||||
5.5 GHz | Noise Floor | -152 | dB | 90 MHz offset from carrier. Before external amplifier. | ||
OIP3 | 17 | dBm | ||||
Carrier Leakage | -50 | dBc | At 0 dB attenuation | |||
Modulation EVM | -36 | dB |
The FreeSRP’s transmitter output is configured similarly to the receiver input: it uses one of two different baluns depending on the frequency range. For the transmitter, the Anaren BD3150N50100AHF and the Coilcraft JA4220-AL baluns are used. They are switched using a Skyworks SKY13335-381LF RF switch.
A Mini Circuits PGA-102+ amplifier is also included. This provides an additional 10 to 14 dB of gain on the transmitter output.
A 40 MHz Epson FA-20H40.0000MF10Z-K3 crystal oscillator provides the main clock for the FreeSRP’s transceiver. The AD9364 can trim its frequency if better absolute frequency accuracy is required.
The FreeSRP has been through four revisions. I am currently evaluating the performance of the latest revision, which will be very close to, or identical with the production version.
I have decided on a PCB manufacturer and an assembly company and a small test batch is being manufactured now. This will help validate manufacturability of the design and serve as a test of the assembler’s capabilities. Based on these results, tweaks will be made to the final production version, if necessary.
Having worked on the project for about two years, and having gone though four hardware revisions, I am confident in the technical quality of the design. The FreeSRP integrates with GNU Radio and works flawlessly with most packages and examples I tested (such as gr-ieee802-15-4 or gr-gsm), even though they were not designed with the FreeSRP in mind.
Major risks and challenges therefore lie in manufacturing: optimizing component sources to minimize lead time and cost, working with the manufacturer to achieve a reliable process, and testing every unit’s performance. The small batch that is being manufactured now will help ensure all possible manufacturing issues are detected well before getting the first production batches built, minimizing the risk of manufacturing issues.
Q: Can the FreeSRP be used with Windows out of the box?
Q: Currently, the FreeSRP is being tested on Ubuntu, using GNU Radio, and the software can be run on Linux. While the libraries required to interface with the FreeSRP are being written to be as platform-agnostic as possible, Windows support is currently not a priority.
Q: Is the FreeSRP appropriate for users with little experience in SDR, programming, or Linux and GNU Radio?
A: Users should be comfortable installing and using Linux. If you use Ubuntu or an Ubuntu-based Linux distribution, everything required to use the FreeSRP can easily be installed from prebuilt packages. If you use a different Linux distribution, you will have to compile some libraries yourself. Please read the Getting Started page first and make sure you are comfortable with the installation procedure.
GNU Radio Companion is an application that provides a graphical user interface for creating signal processing flowcharts. It comes with many tutorials and examples that work with FreeSRP with minimal modifications. Additionally, there are many GNU Radio-based applications that work with the FreeSRP out of the box. Therefore, the FreeSRP is a good platform for getting started with SDR; while programming is a useful skill that will allow you to do many interesting experiments with your FreeSRP, it is not required.
Q: Does the FreeSRP work with USB 2.0?
With the current version of the software, sending and receiving signals requires a USB 3.0 connection. However, this is not a hardware limitation, and upcoming versions of the software are likely to add support for sending and receiving at a lower bandwidth over USB 2.0. In the meantime, please ensure your computer supports USB 3.0 if you want to use the FreeSRP as soon as it becomes available.
"[Lukas'] goal was to design something that fit somewhere in between the $300 HackRF and the higher end and more pricey USRP radios."
"Lukas started his epic SDR-from-scratch build when he was 16. Projects like this aren’t completed overnight. (He’s now 18. We’re impressed.)"
Produced by Lukas Lao Beyer in Cambridge, MA.
Sold and shipped by Crowd Supply.
A fully assembled FreeSRP software-defined radio and the USB 3.0 cable needed to connect it to your computer.
A clear case that can easily be assembled from four layers of laser-cut acrylic and four screws, providing physical protection for your FreeSRP.
Choose some antennas to go with your FreeSRP. The standard antenna kit contains two TG.10.0113 multiband dipole antennas (698 MHz - 960 MHz, 1710 MHz - 2690 MHz), but you can choose to replace one or both of the standard antennas with FXUB66 ultra-wideband antennas that work from 700 to 6000 MHz.
10 fully assembled FreeSRPs! Also includes 10 USB 3.0 cables.
Software development and electronics have been my hobbies for years. Now, I’m studying Electrical Engineering and Computer Science at MIT. My projects are software and electronics related, and I like to keep them completely open-source so anyone can freely modify and redistribute them or use them as inspiration