MCPcopy Index your code
hub / github.com/F5OEO/rpitx

github.com/F5OEO/rpitx @0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.1 ↗ · + Follow
93 symbols 189 edges 21 files 10 documented · 11%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

rpitx is a radio transmitter for Raspberry Pi (B,B+ and PI2) which output directly to GPIO. (Created by Evariste Courjaud F5OEO. Code is GPL) *

Installation

git clone the repository cd rpitx make sure to have access to Internet to download packages : libsndfile1-dev and imagemagick otherwise install them manualy ./install.sh

Hardware

Plug a wire on GPIO 18, means Pin 12 of the GPIO header (header P1): this act as the antenna. Length depend on transmit frequency, but with few centimeters it works for local testing.

Short manual

General

rpitx is the main software to transmit. It allows to transmit - from IQ files .iq (could be generated by external software like gnuradio or by some few examples of modulations). - from Frequency/Time files .ft (generally used implement easily 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
-h            help (this help).

Modulation samples

Some modulations are included in the software and can be easily extended. They create files which could be ingest by rpitx. Some output in IQ (like ssb) other in FT(like sstv)

SSB modulation

pissb convert an audio file (Wav 48KHZ mono only!) to SSB (USB right now) and output it on a IQ file. Assuming your audio file is in the folder

./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 convert an audio file (Wav, 48KHz, 1 channel, pcm_s16le codec) to Narrow band FM (12.5khz excursion) and output it on a .ft file. Assuming your audio file is in the folder

./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 convert a picture(rgb) to a SSTV .ft file if you have a jpeg picture 320*256 you could transform it to rgb with imagemagick convert -depth 8 picture.jpg picture.rgb Then convert to .ft file :

./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 allows to grab a picture from the Picamera and transmit it

FSQ

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

VFO

A VFO mode is provided to allows precise frequency resolution. Example for generate 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 * http://pe1nnz.nl.eu.org/2013/05/direct-ssb-generation-on-pll.html * http://www.icrobotics.co.uk/wiki/index.php/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter * https://github.com/richardghirst/PiBits/pull/18 * http://www.bellard.org/dvbt/

Core symbols most depended-on inside this repo

playtone
called by 35
sstv/pisstv.c
udelay
called by 33
src/RpiTx.c
mem_virt_to_phys
called by 22
src/RpiDma.c
piBoardRevOops
called by 9
src/RpiGpio.c
piBoardRevOops
called by 9
src/utils.h
mbox_property
called by 7
src/mailbox.c
map_peripheral
called by 6
src/RpiGpio.c
playtone
called by 5
dcf77/pidcf77.c

Shape

Function 81
Class 12

Languages

C94%
C++4%
Python2%

Modules by API surface

src/RpiTx.c21 symbols
src/mailbox.c12 symbols
src/python/_rpitxmodule.c11 symbols
ssbgen/ssb_gen.c9 symbols
fsq/pifsq.c8 symbols
src/RpiGpio.c6 symbols
sstv/pisstv.c5 symbols
src/RpiDma.c5 symbols
dcf77/pidcf77.c5 symbols
src/utils.h3 symbols
src/python/rpitx/_hidden.py2 symbols
fm/pifm.c2 symbols

For agents

$ claude mcp add rpitx \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page