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 ./install.sh
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.
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|