rpitx is a general radio frequency transmitter for Raspberry Pi which doesn't require any other hardware unless filter to avoid intererence. It can handle frequencies from 5 KHz up to 1500 MHz.
 
 
 
 
 
 
Go to file
redfast00 1c0bc9df9e
Improved README formatting and wording
2016-08-27 20:34:27 +02:00
am fixed spacing 2016-07-11 23:22:01 +02:00
dcf77 fixed spacing 2016-07-11 23:22:01 +02:00
fm fixed spacing 2016-07-11 23:22:01 +02:00
fsq fixed spacing 2016-07-11 23:22:01 +02:00
src DMA 5 instead of 14 2016-08-27 15:00:52 +00:00
ssbgen fixed spacing 2016-07-11 23:22:01 +02:00
sstv fixed spacing 2016-07-11 23:22:01 +02:00
.gitignore Set gitignore binaries to absolute paths 2016-02-28 16:14:24 -07:00
README.md Improved README formatting and wording 2016-08-27 20:34:27 +02:00
install.sh Remove prompt on apt-get 2016-08-27 13:28:33 +00:00
sampleaudio.wav Major update : New DMA method 2015-12-14 12:28:04 +00:00
setup.py Add rpitx top level module 2016-02-28 16:14:24 -07:00
snapsstv.sh Dirty fix with sudo to allows copy 2015-12-15 00:15:50 +00:00
testam.sh Major update : New DMA method 2015-12-14 12:28:04 +00:00
testfm.sh Major update : New DMA method 2015-12-14 12:28:04 +00:00
testfsq.sh Major update : New DMA method 2015-12-14 12:28:04 +00:00
testssb.sh Major update : New DMA method 2015-12-14 12:28:04 +00:00
testvfo.sh Major update : New DMA method 2015-12-14 12:28:04 +00:00

README.md

rpitx is a radio transmitter for Raspberry Pi (B, B+, PI2, PI3 and PI zero) that transmits RF directly to GPIO. It can handle frequencies from 5 KHz up to 500 MHz.

Created by Evariste Courjaud F5OEO. Code is GPL

Installation

git clone https://github.com/F5OEO/rpitx
cd rpitx
# make sure to have access to the internet to download packages
# or download and install them manually (libsndfile1-dev and imagemagick)
./install.sh

Hardware

Plug a wire on GPIO 18, means Pin 12 of the GPIO header (header P1). This acts as the antenna. The optimal lenght of the wire depends the frequency you want to transmit on, but it works with a few centimeters for local testing.

Short manual

General

rpitx is the main software to transmit. It allows to transmit from:

  • IQ files *.iq (can be generated by external software like GNU Radio).
  • Frequency/Time files *.ft (generally used to easily implement digital modes)

Usage:

rpitx [-i File Input][-m ModeInput] [-f frequency output] [-s Samplerate] [-l] [-p ppm] [-h]
-m            {IQ(FileInput is a Stereo Wav contains I on left Channel, Q on right channel)}
              {IQFLOAT(FileInput is a Raw float interlaced I,Q)}
              {RF(FileInput is a (double)Frequency,Time in nanoseconds}
       	      {RFA(FileInput is a (double)Frequency,(int)Time in nanoseconds,(float)Amplitude}
	      {VFO (constant frequency)}
-i            path to File Input
-f float      frequency to output on GPIO_18 pin 12 in khz : (130 kHz to 750 MHz),
-l            loop mode for file input
-p float      frequency correction in parts per million (ppm), positive or negative, for calibration, default 0.
-d int 	      DMABurstSize (default 1000) but for very short message, could be decrease
-c 1          Transmit on GPIO 4 (Pin 7) instead of GPIO 18
-h            help (this help).

Modulation samples

Some modulations are included in this repository and can be easily extended. These scripts create files which can be used by rpitx. Some output in IQ (like ssb) other in FT (like sstv).

SSB modulation

pissb converts an audio file (Wav 48KHZ mono only!) to SSB (USB right now) and outputs it to an IQ file. Assuming your audio file is in your current working directory:

./pissb audio48mono.wav ssbIQ.wav

You could then transmit it on 50MHz (please set a correct frequency to be legal)

sudo ./rpitx -m IQ -i ssbIQ.wav -f 50000 -l

A sample script testssb.sh is included.

FM modulation

pifm converts an audio file (Wav, 48KHz, 1 channel, pcm_s16le codec) to Narrow band FM (12.5khz excursion) and outputs it to a .ft file. Assuming your audio file is in your current working directory

./pifm audio48mono.wav fm.ft

You could then transmit it on 100MHZ (please set a correct frequency to be legal)

sudo ./rpitx -m RF -i fm.ft -f 100000 -l

A sample script : testfm.sh is included.

SSTV

pisstv converts an RGB picture to an SSTV .ft file. If you have a JPEG picture 320x256 you can convert it to an RGB picture with:

imagemagick convert -depth 8 picture.jpg picture.rgb

You can then transform it to a .ft file with:

./pisstv picture.rgb picture.ft

And then transmit it to 100MHZ (please set a correct frequency to be legal)

sudo ./rpitx -m RF -i picture.ft -f 100000

A sample script snapsstv.sh grabs a picture from a PiCamera and then transmits it on 50.105 MHz.

FSQ

pifsq allows to send a text with the new FSQ modulation It is still under development. A sample script testfsq.sh allows to send a text with FSQ

VFO

A VFO mode is provided to allows precise frequency resolution. For example to set a carrier on 100MHz (please set a correct frequency to be legal)

sudo ./rpitx -m VFO -f 100000

Notes

All rights of the original authors reserved. Special thanks to Sylvain Azarian F4GKR for improving SSB modulation Inspired by