C#############################################################
C#                                                           #
C#               Configuration file for Dire Wolf            #
C#                                                           #
L#                   Linux version                           #
W#                   Windows version                         #
M#                   Macintosh version                       #
C#                                                           #
C#############################################################
R
R
R	The sample config file was getting pretty messy
R	with the Windows and Linux differences.
R	It would be a maintenance burden to keep most of
R	two different versions in sync.
R	This common source is now used to generate the 
R	two different variations while having only a single
R	copy of the common parts.
R
R	The first column contains one of the following:
R
R		R	remark which is discarded.
R		C	common to both versions.
R		W	Windows version only.
R		L	Linux version only.
R		M	Macintosh version and possibly others (portaudio used).
R
C#
C# Consult the User Guide for more details on configuration options.
C#
C#
C# These are the most likely settings you might change:
C#
C#	(1)   	MYCALL 	-  call sign and SSID for your station.
C#
C#			Look for lines starting with MYCALL and 
C#			change NOCALL to your own.
C#
C#	(2)	PBEACON	-  enable position beaconing.
C#
C#			Look for lines starting with PBEACON and 
C#			modify for your call, location, etc.
C#
C#	(3)	DIGIPEATER  -  configure digipeating rules.
C#
C#			Look for lines starting with DIGIPEATER.
C#			Most people will probably use the given example.
C#			Just remove the "#" from the start of the line
C#			to enable it.
C#
C#	(4)	IGSERVER, IGLOGIN  - IGate server and login
C#
C#			Configure an IGate client to relay messages between 
C#			radio and internet servers.
C#
C#
C# The default location is "direwolf.conf" in the current working directory.
L# On Linux, the user's home directory will also be searched.
C# An alternate configuration file location can be specified with the "-c" command line option.  
C#
C# As you probably guessed by now, # indicates a comment line.
C#
C# Remove the # at the beginning of a line if you want to use a sample
C# configuration that is currently commented out.
C#
C# Commands are a keyword followed by parameters.
C#
C# Command key words are case insensitive.  i.e. upper and lower case are equivalent.
C#
C# Command parameters are generally case sensitive.  i.e. upper and lower case are different.
C#
C
C
C#############################################################
C#                                                           #
C#               FIRST AUDIO DEVICE PROPERTIES               #
C#               (Channel 0 + 1 if in stereo)                #
C#                                                           #
C#############################################################
C
C#
C# Many people will simply use the default sound device.
C# Some might want to use an alternative device by chosing it here.
C#
W# When the Windows version starts up, it displays something like 
W# this with the available sound devices and capabilities:
W#
W#	Available audio input devices for receive (*=selected):
W#	   *  0: Microphone (C-Media USB Headpho   (channel 2)
W#	      1: Microphone (Bluetooth SCO Audio
W#	      2: Microphone (Bluetooth AV Audio)
W#	 *    3: Microphone (Realtek High Defini   (channels 0 & 1)
W#	Available audio output devices for transmit (*=selected):
W#	   *  0: Speakers (C-Media USB Headphone   (channel 2)
W#	      1: Speakers (Bluetooth SCO Audio)
W#	      2: Realtek Digital Output(Optical)
W#	      3: Speakers (Bluetooth AV Audio)
W#	 *    4: Speakers (Realtek High Definiti   (channels 0 & 1)
W#	      5: Realtek Digital Output (Realtek
W#	
W# Example: To use the microphone and speaker connections on the 
W# system board, either of these forms can be used:
W
W#ADEVICE High
W#ADEVICE  3 4 
W
W
W# Example: To use the USB Audio, use a command like this with
W# the input and output device numbers.  (Remove the # comment character.)
W#ADEVICE USB
W
W# The position in the list can change when devices (e.g. USB) are added and removed.
W# You can also specify devices by using part of the name.
W# Here is an example of specifying the USB Audio device.
W# This is case-sensitive.  Upper and lower case are not treated the same.
W
W#ADEVICE USB
W
W
L# Linux ALSA is complicated.  See User Guide for discussion.
L# To use something other than the default, generally use plughw
L# and a card number reported by "arecord -l" command.  Example:
L
L# ADEVICE  plughw:1,0
L
L# Starting with version 1.0, you can also use "-" or "stdin" to 
L# pipe stdout from some other application such as a software defined
L# radio.  You can also specify "UDP:" and an optional port for input.
L# Something different must be specified for output.
L
M# Macintosh Operating System uses portaudio driver for audio
M# input/output. Default device selection not available. User/OP
M# must configure the sound input/output option.  Note that
M# the device names can contain spaces.  In this case, the names
M# must be enclosed by quotes.
M#
M# Examples:
M#
M# ADEVICE  "USB Audio Codec:6"  "USB Audio Codec:5"
M#
M#
W# ADEVICE - 0
W# ADEVICE UDP:7355 0
L# ADEVICE - plughw:1,0
L# ADEVICE UDP:7355 default
M# ADEVICE UDP:7355 default
M#
L
L
C
C#
C# Number of audio channels for this souncard:  1 or 2.
C#
C
CACHANNELS 1
C#ACHANNELS 2
C
C
C#############################################################
C#                                                           #
C#               SECOND AUDIO DEVICE PROPERTIES              #
C#               (Channel 2 + 3 if in stereo)                #
C#                                                           #
C#############################################################
C
C#ADEVICE1  ...
C
C
C#############################################################
C#                                                           #
C#               THIRD AUDIO DEVICE PROPERTIES               #
C#               (Channel 4 + 5 if in stereo)                #
C#                                                           #
C#############################################################
C
C#ADEVICE2  ...
C
C
C#############################################################
C#                                                           #
C#               CHANNEL 0 PROPERTIES                        #
C#                                                           #
C#############################################################
C
CCHANNEL 0
C
C#
C# The following MYCALL, MODEM, PTT, etc. configuration items
C# apply to the most recent CHANNEL.
C#
C
C#
C# Station identifier for this channel.
C# Multiple channels can have the same or different names.
C#
C# It can be up to 6 letters and digits with an optional ssid.
C# The APRS specification requires that it be upper case.
C#
C# Example (don't use this unless you are me):  MYCALL	WB2OSZ-5
C#
C
CMYCALL N0CALL
C
C#
C# Pick a suitable modem speed based on your situation.
C#	1200 	Most common for VHF/UHF.  Default if not specified.
C#	300	Low speed for HF SSB.
C#	9600	High speed - Can't use Microphone and Speaker connections.
C#
C# In the simplest form, just specify the speed. 
C# 
C
CMODEM 1200
C#MODEM 300
C#MODEM 9600
C
C#
C# These are the defaults should be fine for most cases.  In special situations, 
C# you might want to specify different AFSK tones or the baseband mode which does
C# not use AFSK.
C#
C#MODEM 1200 1200:2200
C#MODEM 300  1600:1800
C#MODEM 9600 0:0
C#
C#
C# On HF SSB, you might want to use multiple demodulators on slightly different
C# frequencies to compensate for stations off frequency.  Here we have 7 different
C# demodulators at 30 Hz intervals.  This takes a lot of CPU power so you will 
C# probably need to reduce the audio sampling rate with the /n option.
C
C#MODEM 300 1600:1800 7@30 /4
C
C
C#
C# Uncomment line below to enable the DTMF decoder for this channel.
C#
C
C#DTMF
C
C# 
C# If not using a VOX circuit, the transmitter Push to Talk (PTT) 
C# control is usually wired to a serial port with a suitable interface circuit.  
C# DON'T connect it directly!
C#
C# For the PTT command, specify the device and either RTS or DTR.
C# RTS or DTR may be preceded by "-" to invert the signal.
C# Both can be used for interfaces that want them driven with opposite polarity.
C#
L# COM1 can be used instead of /dev/ttyS0, COM2 for /dev/ttyS1, and so on.
L#
C
C#PTT COM1 RTS
C#PTT COM1 RTS -DTR
L#PTT /dev/ttyUSB0 RTS
C
L#
L# On Linux, you can also use general purpose I/O pins if
L# your system is configured for user access to them. 
L# This would apply mostly to microprocessor boards, not a regular PC.
L# See separate Raspberry Pi document for more details.
L# The number may be preceded by "-" to invert the signal.
L#
L
L#PTT GPIO 25
L
C# The Data Carrier Detect (DCD) signal can be sent to the same places
C# as the PTT signal.  This could be used to light up an LED like a normal TNC.
C
C#DCD COM1 -DTR
L#DCD GPIO 24
C
C
C#############################################################
C#                                                           #
C#               CHANNEL 1 PROPERTIES                        #
C#                                                           #
C#############################################################
C
C#CHANNEL 1
C
C#
C# Specify MYCALL, MODEM, PTT, etc. configuration items for 
C# CHANNEL 1.   Repeat for any other channels.
C
C
C#############################################################
C#                                                           #
C#               TEXT TO SPEECH COMMAND FILE                 #
C#                                                           #
C#############################################################
C
W#SPEECH dwespeak.bat
L#SPEECH dwespeak.sh
C
C
C#############################################################
C#                                                           #
C#               VIRTUAL TNC SERVER PROPERTIES               #
C#                                                           #
C#############################################################
C
C#
C# Dire Wolf acts as a virtual TNC and can communicate with
C# client applications by different protocols:
C#
C#	- the "AGW TCPIP Socket Interface" - default port 8000
C#	- KISS protocol over TCP socket - default port 8001
W#	- KISS TNC via serial port
L#	- KISS TNC via pseudo terminal   (-p command line option)
C#
C
CAGWPORT 8000
CKISSPORT 8001
C
W#
W# Some applications are designed to operate with only a physical
W# TNC attached to a serial port.  For these, we provide a virtual serial
W# port that appears to be connected to a TNC.
W#
W# Take a look at the User Guide for instructions to set up
W# two virtual serial ports named COM3 and COM4 connected by
W# a null modem.
W#
W# Using the  configuration described, Dire Wolf will connect to 
W# COM3 and the client application will use COM4.
W#
W# Uncomment following line to use this feature.
W
W#NULLMODEM COM3
W
W
C#
C# It is sometimes possible to recover frames with a bad FCS.
C# This applies to all channels.  
C#
C#	0  [NONE] - Don't try to repair.
C#	1  [SINGLE] - Attempt to fix single bit error.  (default)
C#	2  [DOUBLE] - Also attempt to fix two adjacent bits.
C#	... see User Guide for more values and in-depth discussion.
C#
C
C#FIX_BITS 0
C
C#	
C#############################################################
C#                                                           #
C#               BEACONING PROPERTIES                        #
C#                                                           #
C#############################################################
C
C
C#
C# Beaconing is configured with these two commands:
C#
C#	PBEACON		- for a position report (usually yourself)
C#	OBEACON		- for an object report (usually some other entity)
C#
C# Each has a series of keywords and values for options.  
C# See User Guide for details.
C#
C# Example:
C#
C# This results in a broadcast once every 10 minutes.
C# Every half hour, it can travel via two digipeater hops.
C# The others are kept local.
C#
C
C#PBEACON delay=1  every=30 overlay=S symbol="digi" lat=42^37.14N long=071^20.83W power=50 height=20 gain=4 comment="Chelmsford MA" via=WIDE1-1,WIDE2-1 
C#PBEACON delay=11 every=30 overlay=S symbol="digi" lat=42^37.14N long=071^20.83W power=50 height=20 gain=4 comment="Chelmsford MA"  
C#PBEACON delay=21 every=30 overlay=S symbol="digi" lat=42^37.14N long=071^20.83W power=50 height=20 gain=4 comment="Chelmsford MA"  
C
C
C# With UTM coordinates instead of latitude and longitude.
C
C#PBEACON delay=1 every=10 overlay=S symbol="digi" zone=19T easting=307477 northing=4720178 
C
C
C#
C# When the destination field is set to "SPEECH" the information part is
C# converted to speech rather than transmitted as a data frame.
C#
C
C#CBEACON dest="SPEECH" info="Club meeting tonight at 7 pm."
C
C# Similar for Morse code.  If SSID is specified, it is multiplied
C# by 2 to get speed in words per minute (WPM).
C
C#CBEACON dest="MORSE-6" info="de MYCALL"
C
C
C#
C# Modify for your particular situation before removing 
C# the # comment character from the beginning of appropriate lines above.
C# 
C
C
C#############################################################
C#                                                           #
C#               DIGIPEATER PROPERTIES                       #
C#                                                           #
C#############################################################
C
C#
C# For most common situations, use something like this by removing
C# the "#" from the beginning of the line below.  
C#
C
C#DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE 
C
C# See User Guide for more explanation of what this means and how
C# it can be customized for your particular needs.
C 
C# Filtering can be used to limit was is digipeated.
C# For example, only weather weather reports, received on channel 0,
C# will be retransmitted on channel 1.
C#
C
C#FILTER 0 1 t/wn 
C
C
C#############################################################
C#                                                           #
C#               INTERNET GATEWAY                            #
C#                                                           #
C#############################################################
C
C# First you need to specify the name of a Tier 2 server.  
C# The current preferred way is to use one of these regional rotate addresses:
C
C#	noam.aprs2.net 		- for North America
C#	soam.aprs2.net		- for South America
C#	euro.aprs2.net		- for Europe and Africa
C#	asia.aprs2.net 		- for Asia
C#	aunz.aprs2.net		- for Oceania 
C
C#IGSERVER noam.aprs2.net
C
C# You also need to specify your login name and passcode. 
C# Contact the author if you can't figure out how to generate the passcode.
C 
C#IGLOGIN WB2OSZ-5 123456
C
C# That's all you need for a receive only IGate which relays
C# messages from the local radio channel to the global servers.
C
C# Some might want to send an IGate client position directly to a server
C# without sending it over the air and relying on someone else to 
C# forward it to an IGate server.  This is done by using sendto=IG rather
C# than a radio channel number. Overlay R for receive only, T for two way.
C
C#PBEACON sendto=IG delay=0:30 every=60:00 symbol="igate" overlay=R lat=42^37.14N long=071^20.83W 
C#PBEACON sendto=IG delay=0:30 every=60:00 symbol="igate" overlay=T lat=42^37.14N long=071^20.83W 
C
C
C# To relay messages from the Internet to radio, you need to add
C# one more option with the transmit channel number and a VIA path.
C
C#IGTXVIA 0 WIDE1-1
C
C# You might want to apply a filter for what packets will be obtained from the server.
C# Read about filters here:  http://www.aprs-is.net/javaprsfilter.aspx
C# Example, positions and objects within 50 km of my location:
C
C#IGFILTER m/50 
C
C# That is known as a server-side filter.  It is processed by the IGate server.
C# You can also apply local filtering to limit what will be transmitted on the 
C# RF side.  For example, transmit only "messages" on channel 0 and weather 
C# reports on channel 1. 
C
C#FILTER IG 0 t/m
C#FILTER IG 1 t/wn
C
C# Finally, we don't want to flood the radio channel.  
C# The IGate function will limit the number of packets transmitted 
C# during 1 minute and 5 minute intervals.   If a limit would 
C# be exceeded, the packet is dropped and message is displayed in red.
C
CIGTXLIMIT 6 10
C
C
C#############################################################
C#                                                           #
C#               APRStt GATEWAY                              #
C#                                                           #
C#############################################################
C
C#
C# Dire Wolf can receive DTMF (commonly known as Touch Tone)
C# messages and convert them to packet objects.
C#
C# See separate "APRStt-Implementation-Notes" document for details.
C#
C
C#
C# Sample gateway configuration based on:
C#
C#	http://www.aprs.org/aprstt/aprstt-coding24.txt
C#	http://www.aprs.org/aprs-jamboree-2013.html
C#
C
C# Define specific points.
C
CTTPOINT  B01  37^55.37N  81^7.86W  			
CTTPOINT  B7495088  42.605237  -71.34456		
CTTPOINT  B934  42.605237  -71.34456			
C
CTTPOINT B901  42.661279  -71.364452 
CTTPOINT B902  42.660411  -71.364419 
CTTPOINT B903  42.659046  -71.364452 
CTTPOINT B904  42.657578  -71.364602 
C
C
C# For location at given bearing and distance from starting point.
C
CTTVECTOR  B5bbbddd  37^55.37N  81^7.86W  0.01  mi
C
C# For location specified by x, y coordinates.
C
CTTGRID   Byyyxxx    37^50.00N  81^00.00W  37^59.99N  81^09.99W   
C
C# UTM location for Lowell-Dracut-Tyngsborough State Forest.
C
CTTUTM  B6xxxyyy  19T  10  300000  4720000
C
C
C
C# Location for the corral.
C
CTTCORRAL   37^55.50N  81^7.00W  0^0.02N
C
C# Compact messages - Fixed locations xx and object yyy where 
C#   	Object numbers 100 - 199	= bicycle	
C#	Object numbers 200 - 299	= fire truck
C#	Others				= dog
C
CTTMACRO  xx1yy  B9xx*AB166*AA2B4C5B3B0A1yy
CTTMACRO  xx2yy  B9xx*AB170*AA3C4C7C3B0A2yy
CTTMACRO  xxyyy  B9xx*AB180*AA3A6C4A0Ayyy
C
CTTMACRO  z  Cz
C
C# Receive on channel 0, Transmit object reports on channel 1 with optional via path.
C# You probably want to put in a transmit delay on the APRStt channel so it
C# it doesn't start sending a response before the user releases PTT.
C# This is in 10 ms units so 100 means 1000 ms = 1 second.
C
C#TTOBJ 0 1 WIDE1-1
C#CHANNEL 0
C#DWAIT 100
C
C# Advertise gateway position with beacon.
C
C# OBEACON DELAY=0:15 EVERY=10:00 VIA=WIDE1-1 OBJNAME=WB2OSZ-tt SYMBOL=APRStt LAT=42^37.14N LONG=71^20.83W COMMENT="APRStt Gateway"  
C
C
C# Sample speech responses.
C# Default is Morse code "R" for received OK and "?" for all errors.
C
C#TTERR  OK               SPEECH  Message Received.
C#TTERR  D_MSG            SPEECH  D not implemented.
C#TTERR  INTERNAL         SPEECH  Internal error.
C#TTERR  MACRO_NOMATCH    SPEECH  No definition for digit sequence.
C#TTERR  BAD_CHECKSUM     SPEECH  Bad checksum on call.
C#TTERR  INVALID_CALL     SPEECH  Invalid callsign.
C#TTERR  INVALID_OBJNAME  SPEECH  Invalid object name.
C#TTERR  INVALID_SYMBOL   SPEECH  Invalid symbol.
C#TTERR  INVALID_LOC      SPEECH  Invalid location.
C#TTERR  NO_CALL          SPEECH  No call or object name.
C#TTERR  SATSQ            SPEECH  Satellite square must be 4 digits.
C#TTERR  SUFFIX_NO_CALL   SPEECH  Send full call before using suffix.
C