Raspberry Pi: Onboard Radio IQ Transmit Capabilities

As a radio scientist, I love software defined radio (SDR) transmitters that allow inputting of raw IQ (in-phase, quadrature) data. That way, within the instantaneous bandwidth and dynamic range limitations of the particular SDR, I can transmit just about anything I want.

IQ RF Transmission with the Raspberry Pi Onboard PLL

The rpitx program by amateur radio F5OEO ingests IQ data (and has utilities to convert from audio to popular analog formats such as SSB, AM, and FM voice) to transmit on air from the Raspberry Pi onboard PLL via PWM accessed on the GPIO 12 pin using DMA.

The Raspberry Pi BCM2835 PLL PLLD operates at 500MHz, decimated down to the carrier frequency desired and modulated, with claimed resolution ~16 bit. I have not tested that dynamic range claim.

Installing rpitx Raspberry Pi RF transmitter program

On the Raspberry Pi Terminal:

apt install git

git clone https://github.com/F5OEO/rpitx

cd rpitx

Running the rpitx Raspberry Pi RF IQ transmitter

rpitx -i myfile.bin -m iq -f 97500

that transmits your single-precision complex64 IQ file myfile.bin at 97.5MHz center frequency (consider the error in the Raspberry Pi PLL baseclock).

HD Video RF Transmission with the Raspberry Pi Onboard PLL

Recently, F5OEO notes live video streaming 64k-symbol/sec - 4M-symbol/sec DVS-B https://twitter.com/F5OEOEvariste

using his new program rpidatv, which sends DVS-B HD video receivable by the $20 RTL-SDR dongles.

Receiving RF signals with the Raspberry Pi

With the Raspberry Pi 2 collecting samples at 2.048MS/s, about 3% of one CPU core is used. This does not include demodulation, just passing samples. After installing rtl-sdr, you can playback over the Raspberry Pi 3.5mm output jack using aplay.

Raspberry Pi RTL2832 radio receiver examples

Listen to 99.5 FM radio in stereo on the Raspberry Pi:

rtl_fm -f 99.5M -M wbfm | aplay -r 24k -f S16_LE -t raw -c 1

Listen to 162.475MHz NOAA weather radio (NBFM)

rtl_fm -f 162.475M -M fm -s 64k -Afast -r 32k -E demp | aplay -r 24k -f S16_LE -t raw -c 1

CPU Utilization [%] with the Raspberry Pi with different tasks

Rpi Model Stream 2.048MS/s, no demod WBFM playback over 3.5mm jack
2 3.0 12.0

Leave a Comment