PiTone CTCSS Tone Generator


PiTone is a software application that runs on a Raspberry Pi (RPi) single-board computer and produces a stepped approximation sine wave, frequently used for a transmitted Continuous Tone Coded Squelch Signal (CTCSS). The program can run in parallel with other applications on a single Raspberry Pi (for instance, on an RPi running the Allstar repeater control application) or can be installed stand-alone on inexpensive hardware like the Pi Zero. In either case, the software generates a stepped sine wave by using a Digital-to-Analog converter controlled from the RPi’s I2C interface.  PiTone generates a continuous tone while PiTone 2 allows the user to select between a continuous tone or a tone output synchronized with an external input signal – typically a detected CTCSS tone at the input of a repeater.

PiTone can be used with the Raspian operating system as well as other RPi operating systems. For instance, Pitone is used as part of the repeater controller system known as MABEL for the Yaesu DR-1X/2X repeater which commonly uses the Allstar HamVOIP distribution running under ArchLinux.  The MABEL hardware also includes a low pass filter and a connector for a DAC module.  More information about this system is available at www.customcomms.net.

PiTone Powerpoint Presentation (PDF)

Here is a Powerpoint presentation about PiTone.


The first four following figures show the output waveforms from PiTone at 110.9 Hz for 16, 32, 64 and 128 steps. The green trace is the raw output from the DAC and the black trace is the output from a 3 pole active filter as used in the MABEL DR-1X repeater controller. The last two figures show Histograms of the output frequency for 32 and 128 steps.

Low Pass Filter

The CTCSS tone is typically injected into a repeater transmitter to provide a CTCSS signal on the transmitter output. Depending on the point where the tone is injected and the circuitry of the transmitter, additional low pass filtering may not be required. In our MABEL DR-1X Interface Board design (www.customcomms.net), we opted to use a 3 pole low pass active filter as shown in the following schematic (IC1A and IC1B).

PiTone Executable Files

PiTone and PiTone 2 executable files can be downloaded HERE Currently they will not run on a Raspberry Pi 4. We are in the process of modifying the source code so a Pi 2,3,4 comptible version which includes the capability to specify the I2C address will be available here soon. Check back for the updated files.

PiTone Source Code

Pitone and Pitone 2 by K8UT is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The details are contained in the following file:

The source code for PiTone and PiTone 2 can be downloaded HERE. It must be compiled using the latest WiringPi library to run on a Raspberry Pi 4.

Comments are closed.