As a radio scientist, I need software defined radio (SDR) transmitters that ingest raw IQ (in-phase, quadrature) data. IQ data allows transmitting anything within the instantaneous bandwidth and dynamic range limitations of the particular SDR.
The rpitx program by 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 500 MHz,
decimated down to the carrier frequency desired and modulated, with claimed resolution ~16 bit.
Install rpitx at Raspberry Pi Terminal:
apt install git git clone https://github.com/F5OEO/rpitx cd rpitx ./install.sh
Run rpitx IQ transmitter:
rpitx -i myfile.bin -m iq -f 97500
This command transmits single-precision
complex64 IQ file
myfile.bin at 97.5 MHz center frequency (consider the error in the Raspberry Pi PLL baseclock).
F5OEO notes live video streaming 64 k-symbol/sec - 4 M-symbol/sec DVS-B using rpidatv, which sends DVS-B HD video receivable by the $20 RTL-SDR dongles.
With the Raspberry Pi 2 collecting samples at 2.048 MS/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 headphone jack using
99.5 FM broadcast, in stereo on the Raspberry Pi:
rtl_fm -f 99.5M -M wbfm | aplay -r 24k -f S16_LE -t raw -c 1
162.475 MHz 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 in percent:
|Rpi Model||Stream 2.048 MS/s, no demod||WBFM playback over headphone jack|