G.M.R.S Link Back

Sample Courtesy Tones

Click any tone to hear it. Under each one is the line you would put in the [telemetry] section of /etc/asterisk/rpt.conf to use it on your node. Click a line to copy it. New to courtesy tones? Open the guide below first.

What is a courtesy tone?

It's the short beep (or chirp, or chime) you hear when someone lets go of the mic. It tells everyone the transmission is over and gives a natural pause before the next person keys up. On HamVOIP that pause matters: it gives others a chance to break in and lets distant nodes and repeaters reset their timeout timers, which usually don't reset until the tone is heard.

Use one whether your node is simplex or duplex. On a simplex node it's the only way the user knows they actually reached your node.

Courtesy tones are local only. They are heard on your node or repeater, not sent out across the network.

How to read a tone definition

Each tone is one or more groups of four numbers in parentheses:

( 350 , 440 , 100 , 2048 )
   │     │     │     └── amplitude (volume), 0 – 8192
   │     │     └──────── duration in milliseconds
   │     └────────────── tone 2 frequency in Hz (0 = none)
   └──────────────────── tone 1 frequency in Hz (0 – 3000)
  • One frequency: set tone 2 to 0, e.g. (1000,0,100,2048) is a plain 1 kHz beep.
  • Two frequencies: both play together as a chord, e.g. (660,880,150,2048).
  • Silence / pause: all zeros except the duration, e.g. (0,0,100,0) is a 100 ms gap. A leading pause like (0,0,640,0) delays the tone after unkey.
  • Sequences: put groups back to back to make a melody: (350,0,100,2048)(500,0,100,2048)(660,0,100,2048).
  • No spaces anywhere between the numbers, commas or parentheses.

A very short silent group such as (0,0,10,0) (10 ms, no sound) is handy for fine-tuning how long the node waits before sending telemetry. Use it together with the telemdelay setting.

Which tone plays when?

Tones are defined in the [telemetry] section, then assigned to an event in your node's own section of rpt.conf. The stock setup is:

SettingStockWhen you hear it
unlinkedctct2Someone unkeys while your node isn't connected to any other node
linkunkeyctct8A user on a connected node out on the network unkeys
remotetxremotetxYou unkey locally while connected to the network
remotemonremotemonYou unkey locally while connected in monitor (receive-only) mode
remotectct3Added on top of the other tone when a remote base is connected

If you change linkunkeyct you won't hear the change from your own radio. Someone on another node (or a second node on your LAN) has to key up and drop.

Other telemetry sounds on this page: cmdmode plays when command mode is entered, functcomplete when a DTMF function finishes, and ranger is a series of short 1800 Hz pips.

Putting a tone on your node
  1. Pick a tone below and note its line.
  2. Paste it into the [telemetry] section of /etc/asterisk/rpt.conf. Change the name (e.g. ct9) to whichever number you want to replace, and comment out the old line for that number with a ;.
  3. Make sure that ct number is assigned to the event you want in your node section (for example linkunkeyct=ct8).
  4. Reload: run asterisk -rvvv, then rpt reload, then exit. Or restart HamVOIP with astres.sh.

If you delete a definition entirely, HamVOIP falls back to its built-in default for that tone, so it may still play (see “Built-in defaults” below). To turn courtesy tones off for a node, add nounkeyct=1 to that node's section. Leaving it out, commenting it out, or setting it to 0 keeps tones on.

Keep it short. A long tone holds the transmitter up, and on a simplex node nobody can talk until it finishes. Each card below shows the total length.

Morse (CW) and voice courtesy tones

CW: use |i followed by the characters. ct8=|iK sends a Morse “K” (dah‑dit‑dah), the traditional “go ahead.”

Voice / audio file: point to the file without its extension. ct8=|/etc/asterisk/local/ct-unkey plays ct-unkey.ul (or .gsm, etc.) from /etc/asterisk/local.

Whatever you use, keep it as short as you can. It holds the transmitter keyed until it finishes.

Built-in defaults (when nothing is defined)

If the [telemetry] section doesn't define a tone, HamVOIP uses these values built into the program. This is why a tone you “removed” can still play.

ToneBuilt-in definition
ct1(350,0,100,3072)(500,0,100,3072)(660,0,100,3072)
ct2(660,880,150,3072)
ct3(440,0,150,3072)
ct4(550,0,150,3072)
ct5(660,0,150,3072)
ct6(880,0,150,3072)
ct7(660,440,150,3072)
ct8(700,1100,150,3072)
ranger(1800,0,60,3072)(0,0,50,0) repeated 6 times, ending with (0,0,150,0)
remotemon(1600,0,75,2048)
remotetx(2000,0,75,2048)(0,0,75,0)(1600,0,75,2048)
cmdmode(900,904,200,2048)
functcomplete(1000,0,100,2048)(0,0,100,0)(1000,0,100,2048)
remcomplete(650,0,100,2048)(0,0,100,0)(650,0,100,2048)(0,0,100,0)(650,0,100,2048)
pfxtone(350,440,30000,3072)
Stock [telemetry] section

This is what the telemetry section looks like in a stock HamVOIP rpt.conf , along with the stock tone assignments from the node section:

[telemetry]
ct1=|t(350,0,100,2048)(500,0,100,2048)(660,0,100,2048)
ct2=|t(660,880,150,2048)
ct3=|t(440,0,150,4096)
ct4=|t(550,0,150,2048)
ct5=|t(660,0,150,2048)
ct6=|t(880,0,150,2048)
ct7=|t(660,440,150,2048)
ct8=|t(700,1100,150,512) ; 2048 amplitude
remotetx=|t(1633,0,50,3000)(0,0,80,0)(1209,0,50,3000);
remotemon=|t(1209,0,50,2048)
cmdmode=|t(900,903,200,2048)
functcomplete=|t(1000,0,100,2048)(0,0,100,0)(1000,0,100,2048)
patchup=rpt/callproceeding
patchdown=rpt/callterminated

; in the node section
unlinkedct=ct2   ; not connected to another node
remotect=ct3     ; remote base connected
linkunkeyct=ct8  ; a network user unkeys

Note the stock ct8 is turned down to an amplitude of 512 (from 2048) so the network unkey tone is less intrusive. The ct8 sample on this page is at 2048.

Tone Library