Provided by: svxlink-server_24.02-3build1_amd64 bug

NAME

       svxlink.conf - Configuration file for the SvxLink server

DESCRIPTION

       svxlink  is  a  general  purpose  voice  service  system  for ham radio use. This man-page
       describe the SvxLink server configuration file format.

       SvxLink look for configuration files in a number of places. First it try to  find  a  user
       specific  configuration file. SvxLink will look for a user specific configuration file in:
       $HOME/.svxlink/svxlink.conf.  If no user specific configuration file can be found, SvxLink
       will  look for the system wide configuration file /etc/svxlink/svxlink.conf.  The --config
       command line option may also be used to specify an arbitrary configuration file.

FILE FORMAT

       The configuration file is in the famous INI-file format. A generic example of how  such  a
       file might look like is shown below.

         [SECTION1]
         VALUE1=1
         VALUE2="TWO "
         VAULE3="Multi "
                "line"

         [SECTION2]
         VALUE1=2

       This is a simple format that contain name=value pairs that belong to a section. In written
       text, a specific configuration variable can be  referred  to  as  SECTION1/VALUE2  meaning
       "configuration variable VALUE2 in section SECTION1".

       The  same variable name can exist in two different sections. For example VALUE1 in section
       SECTION1 have the value 1 and  VALUE1  in  section  SECTION2  have  the  value  2.  Values
       containing  spaces  at  the  beginning  or  end of the line must be surrounded by citation
       characters (see SECTION1/VALUE2). Likewise with a multi line value (see SECTION1/VALUE3).

CONFIGURATION VARIABLES

       Here is the description of all  configuration  variables  that  SvxLink  understands.  The
       configuration variables are described section for section.

   GLOBAL
       The GLOBAL section contains application global configuration data.

       MODULE_PATH
              Specify  where  the  SvxLink modules can be found. If MODULE_PATH is not specified,
              the standard search paths for library files will be used.  If  that  also  fails  a
              hard-coded  default  will  be used. What that default is depend on the architecture
              but typically on a x86_64 system it is /usr/lib64/svxlink.  Leaving  this  variable
              unset should work in most cases.

       LOGIC_CORE_PATH
              Specify where the SvxLink logic core plugins can be found. If not set, a hard-coded
              default will be used. What that default is depend on the architecture but typically
              on  an  x86_64 system it is /usr/lib64/svxlink.  Leaving this variable unset should
              work in most cases.  If this variable is set to empty, the  standard  search  paths
              for library files will be used (see man 3 dlopen).

       LOGICS Specify  a  comma  separated  list of logic cores that should be created. The logic
              core is the thing that ties  the  transceiver  and  the  voice  services  (modules)
              together.  It contains the rules for how the radio interface should be handled. The
              specified name of a logic core must have a corresponding section specified  in  the
              config file. This is where the behavior of the logic core is specified.

       CFG_DIR
              Specify  the path to a directory that contain additional configuration files.  If a
              relative path is specified, the path will be relative to the  directory  where  the
              main configuration file is at. All files in the specified directory will be read as
              additional configuration. Filenames starting with  a  dot  (hidden  files)  or  not
              ending in .conf are ignored.

       TIMESTAMP_FORMAT
              This  variable  specifies  the format of the time-stamp that is written in front of
              each row in the log file. The format string is in the same format as  specified  in
              the  strftime(3)  manual  page.  The  default  is  "%c" which is described as: "the
              preferred date and time representation for the  current  locale".  The  environment
              variables  LC_TIME, LC_ALL and LANG will affect how this time format will look. For
              example,  setting   LC_TIME="sv_SE.UTF8"   will   give   you   Swedish   time-stamp
              representation. Other examples of format specifiers are:

              •   %d - The day of the month as a decimal number (range 01 to 31)

              •   %b - The abbreviated month name according to the current locale

              •   %Y - The year as a decimal number including the century

              •   %H - The hour as a decimal number using a 24-hour clock (range 00 to 23)

              •   %M - The minute as a decimal number (range 00 to 59)

              •   %S - The second as a decimal number (range 00 to 60)

              •   %f - Fractional seconds in millisecond resolution (000-999)

              The last one (%f) is a SvxLink specific formatting specifier.

              Example:  TIMESTAMP_FORMAT="%d  %b  %Y %H:%M:%S.%f" would give a time-stamp looking
              something like: "29 Nov 2005 22:31:59.875".

       CARD_SAMPLE_RATE
              This  configuration  variable  determines  the  sampling  rate   used   for   audio
              input/output.  SvxLink  always  work  with  a sampling rate of 16kHz internally but
              there still are some benefits from using a higher  sampling  rate.  On  some  sound
              cards  the  filters look pretty bad at 16kHz and the amplitude response will not be
              uniform which among other things can cause problems for the software DTMF decoder.

              Some sound cards also sound very  bad  at  16kHz  due  to  insufficient  anti-alias
              filtering  or  resampling  effects.  These,  often cheaper, sound cards sound OK at
              48kHz.

              The downside of choosing a higher sampling rate is that it puts a little  bit  more
              load on the CPU so if you have a very slow machine (<300MHz), it might not have the
              computational power to handle it.

              Supported sampling rates are: 16000 and 48000.

       CARD_CHANNELS
              Use this configuration variable to specify how many channels to use when opening  a
              sound  card. For normal sound cards the only practical values to use are 1 for mono
              and 2 for stereo. The latter is the default.

              When using the sound card in stereo mode it is possible to use the left  and  right
              channels independently to drive two transceivers. When using the sound card in mono
              mode, both left and right channels transmit/receive the same audio.

       LOCATION_INFO
              Enter  the  section  name  that  contains  information  required  for  transferring
              positioning data to location servers. Setting this item makes the system visible on
              the EchoLink link status page and the APRS network.

       LINKS  Enter here a comma separated list of section names that contains the  configuration
              information for linking logics together (see Logic Linking).

   Common Logic configuration variables
       A  logic  core  is  what  define  how SvxLink should behave on the RF channel. The SvxLink
       server can handle more than one logic core and so  can  be  connected  to  more  than  one
       transceiver.  When  configured,  a  logic  core  is loaded at runtime as a plugin. See the
       LOGIC_CORE_PATH configuration variable for more information on how SvxLink find the  logic
       core plugins.

       The  configuration  variables below are common to all logic types. Configuration variables
       that are specific to a certain logic core type are described below in  a  section  of  its
       own.

       TYPE   The  type of logic core this is. The documentation for the specific logic core type
              you want to use describe what to write here.

       RX     Specify the configuration section name of the receiver to  use.  All  configuration
              for the receiver is done in the specified configuration section.

       TX     Specify the configuration section name of the transmitter to use. All configuration
              for the transmitter is done in the specified configuration section.

       MODULES
              Specify a comma separated list of configuration sections for the modules  to  load.
              This tells SvxLink which modules to actually load on startup.

       CALLSIGN
              Specify the callsign that should be announced on the radio interface.

       SHORT_VOICE_ID_ENABLE
              A   basic  toggle  to  enable  the  voice  ID  announcement  during  the  short  ID
              announcements.  Set value to "1" to enable the voice option, and "0" to disable.

       SHORT_CW_ID_ENABLE
              A basic toggle to enable the CW ID announcement during the short ID  announcements.
              Set value to "1" to enable the CW option, and "0" to disable.

       SHORT_ANNOUNCE_ENABLE
              A basic toggle to enable the custom announcement during the short ID announcements.
              Set value to "1" to enable the announcement option, and "0" to disable.

       SHORT_ANNOUNCE_FILE
              The full path to a file to  use  for  custom  announcements  broadcasted  during  a
              routine short ID.

       LONG_VOICE_ID_ENABLE
              A   basic   toggle  to  enable  the  voice  ID  announcement  during  the  long  ID
              announcements.  Set value to "1" to enable the voice option, and "0" to disable.

       LONG_CW_ID_ENABLE
              A basic toggle to enable the CW ID announcement during the long  ID  announcements.
              Set value to "1" to enable the CW option, and "0" to disable.

       LONG_ANNOUNCE_ENABLE
              A  basic toggle to enable the custom announcement during the long ID announcements.
              Set value to "1" to enable the announcement option, and "0" to disable.

       LONG_ANNOUNCE_FILE
              The full path to a file to  use  for  custom  announcements  broadcasted  during  a
              routine short ID.

       CW_AMP Specify  the  amplitude  of  the  CW  that  should  be  used during any cw traffic,
              typically announcements. The amplitude is specified in dB. Default: -6.

       CW_PITCH
              Specify the pitch (frequency in Hz) of the CW that should be  used  during  any  CW
              traffic, typically announcements. Default: 800.

       CW_CPM Specify  the  Characters  Per  Minute  of  the CW that should be used during any CW
              traffic, typically announcements. If both CW_WPM and CW_CPM is set, CW_CPM will  be
              used. Default: 100.

       CW_WPM Specify  the  Words Per Minute of the CW that should be used during any CW traffic,
              typically announcements. If both CW_WPM and CW_CPM is set,  CW_CPM  will  be  used.
              Default: 20.

       PHONETIC_SPELLING
              Specify  if  the  spelling  of  callsign and other words should be announced on the
              radio interface using phonetic or  non-phonetic  spelling.   "1"  to  use  phonetic
              sounds  (legacy default), or "0" to use non-phonetic sounds.  Note that this option
              may not be available for all language packs.

       TIME_FORMAT
              Specify  what format the time should be announced as, valid options are  "12"/"24".
              NOTE: may not work for all language packs

       SHORT_IDENT_INTERVAL
              The  number  of  minutes  between  short  identifications. The purpose of the short
              identification is to just announce that the station is on the air.  Typically  just
              the  callsign  is transmitted. For a repeater a good value is ten minutes and for a
              simplex node one time every 60 minutes is probably enough. The  LONG_IDENT_INTERVAL
              must  be  an even multiple of the SHORT_IDENT_INTERVAL so if LONG_IDENT_INTERVAL is
              60 then the legal values for SHORT_IDENT_INTERVAL are: 1, 2, 3, 4, 5,  6,  10,  12,
              15, 20, 30, 60.  If unset or set to 0, disable short identifications.

       LONG_IDENT_INTERVAL
              The  number  of  minutes  between  long  identifications.  The  purpose of the long
              identification is to transmit some more information about the station  status  (new
              voice  mails  etc).  The  time  of day is also transmitted. A good value here is 60
              minutes.  If unset or set to 0, disable long identifications.

       IDENT_ONLY_AFTER_TX
              This feature controls when identification is done.  By default,  identification  is
              done  every  time  the  SHORT_IDENT_INTERVAL  expires.  If this feature is enabled,
              identification will be done only if there has  been  a  recent  transmission.  This
              feature  is  good  for  nodes  using  an RF link to provide echolink to a repeater.
              Often, in this situation, it is not desirable  for  the  link  to  identify  unless
              legally  necessary.  Note  that  SHORT_IDENT_INTERVAL still have to be set for this
              feature to work. That config variable will  then  be  interpreted  as  the  minimum
              number  of  seconds  between  identifications.  The LONG_IDENT_INTERVAL will not be
              affected by this parameter.

       EXEC_CMD_ON_SQL_CLOSE
              Specify a time, in milliseconds, after  squelch  close  after  which  entered  DTMF
              digits  will be executed as a command without the need to send the # character.  To
              disable this feature, either comment out the configuration row or set it to a value
              less or equal to zero.

       EVENT_HANDLER
              Point  out  the  TCL  event  handler script to use. The TCL event handler script is
              responsible for playing the correct audio clips when an event occur.   The  default
              location is /usr/share/svxlink/events.tcl.

       DEFAULT_LANG
              Set  the default language to use for announcements. It should be set to an ISO code
              (e.g. sv_SE for Swedish). If not set, it defaults to en_US which is US English.

       RGR_SOUND_DELAY
              The number of milliseconds to wait after the squelch has been closed before a roger
              beep  is played. The beep can be disabled by specifying a value of -1 or commenting
              out this line. Often it is best to  use  the  SQL_HANGTIME  receiver  configuration
              variable  to specify a delay instead of specifying a delay here. This configuration
              variable should then be set to 0.

       REPORT_CTCSS
              If set, will report the specified CTCSS frequency  upon  manual  identification  (*
              pressed).   It is possible to specify fractions using "." as decimal comma. Disable
              this feature by commenting out (#) this configuration variable.

       TX_CTCSS
              This configuration variable controls if a CTCSS tone should be transmitted.  Use  a
              comma  separated  list (no spaces!) to specify when to transmit a CTCSS tone. These
              are  the  possible  values:  SQL_OPEN,  LOGIC,  MODULE,  ANNOUNCEMENT  or   ALWAYS.
              Commenting  out  this configuration variable will disable CTCSS transmit.  The tone
              frequency and level is configured in the transmitter configuration section.

              •   SQL_OPEN will transmit CTCSS tone when the squelch is open. This is only useful
                  on a repeater. On a simplex node it doesn't make much sense.

              •   LOGIC  will  transmit  CTCSS  tone  when there is incoming traffic from another
                  logic core.

              •   MODULE will transmit CTCSS tone when there is incoming traffic from a module.

              •   ANNOUNCEMENT will transmit CTCSS tone when an  announcement  is  being  played.
                  Repeater idle sounds and roger beeps will not have tone sent with them though.

              •   ALWAYS  will  always transmit a CTCSS tone as soon as the transmitter is turned
                  on.

       MACROS Point out a section that contains the macros that should  be  used  by  this  logic
              core. See the section description for macros below for more information.

       FX_GAIN_NORMAL
              The  gain  (dB)  to  use for audio effects and announcements when there is no other
              traffic.  This gain is normally set to 0dB which means no gain or attenuation.

       FX_GAIN_LOW
              The gain (dB) to use for audio  effects  and  announcements  when  there  is  other
              traffic.   This  gain is normally set to something like -12dB so that announcements
              and audio effects are attenuated when there is other traffic present.

       QSO_RECORDER
              The QSO recorder is used to write all received audio to files on disk.  The  format
              for  this  configuration  variable  is  <command>:<config  section>.  The specified
              command is used to activate or deactivate the QSO  recorder.  If  the  command  for
              example  is set to 8, 81 will activate the recorder and 80 will deactivate it.  The
              command may also be left out. It will then not  be  possible  to  control  the  QSO
              recorder using DTMF commands. Even if the command is left out the colon must always
              be specified.  The config section point out a section  in  the  configuration  file
              that  holds  configuration  for  the QSO recorder.  Have a look at the QSO Recorder
              Section documentation for more information.

              Example: QSO_RECORDER=8:QsoRecorder

       SEL5_MACRO_RANGE
              Define two comma separated values here to map the Sel5  tone  call  to  your  macro
              area. E.g. if you have defined: SEL5_MACRO_RANGE=03400,03499 then all incoming Sel5
              tone sequences from 03400 to 03499 are mapped  to  the  macros  section  (refer  to
              Macros   Section,  next  chapter).  Other  sequences  but  the  one  defined  under
              OPEN_ON_SEL5 are ignored so it can be used to call other stations via the  repeater
              without a repeater reaction.

       ONLINE_CMD
              Define  a  DTMF  command that is used to switch the node between online and offline
              mode. When in the off-state, the transmitter will not be turned on by any event. If
              a  module is active when the node is brought offline, it will be deactivated and no
              module activation will be allowed in offline  mode.  No  other  commands  than  the
              online command will be accepted in the offline state.

              If  the  command for example is set to 998877 then 9988771 will set the node online
              and  9988770  will  set  it  offline.  If  a   module   is   active   or   if   the
              ACTIVATE_MODULE_ON_LONG_CMD  is  used,  the command must be prefixed with a star to
              work as expected. The star means "force core command".

       ONLINE Set to 0 to make SvxLink start offline. Settable at runtime. Default is 1 (online).

       STATE_PTY
              Using this configuration variable it is possible to specify a path to a UNIX 98 PTY
              that SvxLink state events is published to. The published events is in a simple text
              format using a space separated list of values. SvxLink will create  a  softlink  to
              the  actual  slave PTY. For that reason, SvxLink must have write permissions in the
              directory where the softlink should be created. Monitoring the  PTY  output  is  as
              simple as doing a cat /path/to/pty after starting SvxLink. See STATE PTY FORMAT for
              more information on the format of the state messages.

              Example: STATE_PTY=/tmp/state_pty

       DTMF_CTRL_PTY
              Using this configuration variable it is possible to specify a path to a UNIX 98 PTY
              that  allows  a  dtmf  control  of each single SvxLink logic. SvxLink will create a
              softlink to the actual  slave  PTY.  For  that  reason,  SvxLink  must  have  write
              permissions in the directory where the softlink should be created. Sending commands
              to the PTY is as simple as  doing  a  echo  '*1#'  >  /path/to/pty  after  starting
              SvxLink.  The  device  works  bidirectional, received dtmf characters (from Rf) are
              output via this interface.

              Example: DTMF_CTRL_PTY=/dev/shm/dtmf_ctrl

       CTCSS_TO_TG
              Use this variable to specify a comma separated list of pairs  of  tone  frequencies
              and  talk  groups.  When one of the tone frequencies is detected, the corresponding
              talk group will be associated with the received audio. This can be used for example
              by ReflectorLogic to automatically switch to a talk group when one of the specified
              tone frequencies is received. You also must configure CTCSS_FQ for all receivers to
              open the squelch on the same tone frequencies.  Otherwise it will not work.

              Example: CTCSS_TO_TG=127.3:9993,136.5:9995

       CTCSS_TO_TG_DELAY
              The  delay for reporting detected talkgroup from when a CTCSS tone is detected.  If
              the squelch close before the delay time has expired, no talkgroup will be reported.
              Default: 1000.

              Example: CTCSS_TO_TG_DELAY=0

   Simplex Logic Section
       The  Simplex Logic section contains configuration data for a simplex logic core.  The name
       of the section, which in the example configuration  file  is  SimplexLogic,  must  have  a
       corresponding  list  item  in  the GLOBAL/LOGICS config variable for this logic core to be
       activated. The name "SimplexLogic" is not magic. It could be called what ever you like but
       it  must  match  the  namespace  name  in  the  SimplexLogic.tcl script. The configuration
       variables below are those that are specific for a simplex logic core.

       TYPE   The type for a simplex logic core is always Simplex.

       MUTE_RX_ON_TX
              Set to 1 to mute the receiver when the transmitter is transmitting (default) or set
              it  to 0 to make the RX active during transmissions.  One might want to set this to
              0 if the link is operating on a split frequency.  Then the link can accept commands
              even  when  it's  transmitting.   The  normal  setting  is  1,  to mute the RX when
              transmitting.

       MUTE_TX_ON_RX
              Set to 1 to mute the transmitter when the squelch is open (default) or set it to  0
              to  make the TX active during squelch open.  One might want to set this to 0 if the
              link is operating on a split frequency or if it's connected  to  some  full  duplex
              device.  The normal setting is 1, to mute the TX when the squelch is open.

       RGR_SOUND_ALWAYS
              Set  to  1  to  always send roger sound after squelch close, even when no module is
              active.

       COMMAND_PTY
              Using this configuration variable it is possible to specify a path to a UNIX 98 PTY
              that  can  be  used to send commands to a SvxLink logic core. SvxLink will create a
              softlink to the actual  slave  PTY.  For  that  reason,  SvxLink  must  have  write
              permissions  in  the  directory  where  the  softlink  should  be created.  Sending
              commands to the PTY is as simple as  doing  a  echo  'THE  COMMAND  TO  EXECUTE'  >
              /path/to/pty after starting SvxLink.

              Valid commands:

              •   CFG  <section>  <tag>  <value>  --  Set  a  configuration  variable. Only a few
                  configuration  variables  support  being   set   at   runtime.   Example:   CFG
                  RepeaterLogic ONLINE 0.

              •   EVENT  <event  name> [<arg> ...] -- Call an event handler (TCL function). It is
                  important to specify the correct TCL namespace for the function to be found. If
                  no  namespace  is given, the namespace of the current logic core will be added,
                  e.g.        "manual_identification"        is        the        same         as
                  "RepeaterLogic::manual_identification"   if   the   logic  core  namnespace  is
                  "RepeaterLogic". To call a function in the root namespace,  the  function  name
                  must be prepended with "::".  Example: EVENT ::playNumber -42.5.

       Example: COMMAND_PTY=/dev/shm/repeater_logic_ctrl

   Repeater Logic Section
       A  Repeater Logic section contains configuration data for a repeater logic core.  The name
       of the section, which in the example configuration file  is  RepeaterLogic,  must  have  a
       corresponding  list  item  in  the GLOBAL/LOGICS config variable for this logic core to be
       activated. The name "RepeaterLogic" is not magic.  It could be called what ever  you  like
       but  it  must  match the namespace name in the RepeaterLogic.tcl script. The configuration
       variables below are those that are specific for a repeater logic core.

       TYPE   The type for a repeater logic core is always Repeater.

       NO_REPEAT
              Set this to 1 if you do NOT want SvxLink to play back the incoming audio. This  can
              be  used  when  the  received  audio  is directly coupled by hardware wiring to the
              transmitter. What you win by doing this is that there is zero delay on the repeated
              audio. When the audio is routed through SvxLink there is always an amount of delay.
              What you loose by doing  this  is  the  audio  processing  done  by  SvxLink  (e.g.
              filtering,  DTMF  muting,  squelch  tail elimination) and the ability to use remote
              receivers.

       IDLE_TIMEOUT
              The number of seconds the  repeater  should  have  been  idle  before  turning  the
              transmitter off.

       OPEN_ON_1750
              Use  this configuration variable if it should be possible to open the repeater with
              a 1750Hz tone burst. Specify the number of milliseconds the tone must  be  asserted
              before the repeater is opened. Make sure that the time specified is long enough for
              the squelch to have time to open. Otherwise the repeater will open "too  soon"  and
              you  will  hear  an ugly 1750Hz beep as the first thing.  A value of 0 will disable
              1750 Hz repeater opening.

       OPEN_ON_CTCSS
              Use this configuration variable if it should be possible to open the repeater using
              a  CTCSS  tone  (PL).  The  repeater  will  activate  after the specified number of
              milliseconds on detection of any of the CTCSS frequencies specified in the receiver
              configuration.

       OPEN_ON_DTMF
              Use  this configuration variable if it should be possible to open the repeater with
              a DTMF digit. Only one digit  can  be  specified.  DTMF  digits  pressed  when  the
              repeater is down will be ignored.

       OPEN_ON_SEL5
              Use  this  configuration  variable  if  you  want  to open your repeater by using a
              selective tone call that is often used  in  commercial  radio  networks.   Example:
              OPEN_ON_SEL5=03345 opens your repeater only if that sequence has been received. You
              can use sequence lengths from 4 to 25.

       CLOSE_ON_SEL5
              Use this configuration variable if you want to  close  your  repeater  by  using  a
              selective  tone  call  that  is  often used in commercial radio networks.  Example:
              CLOSE_ON_SEL5=03345 closes your repeater if that sequence has  been  received.  You
              can use sequence lengths from 4 to 25.

       OPEN_ON_SQL
              Use  this configuration variable if it should be possible to open the repeater just
              by keeping the squelch open for a while. The value to set is the minimum number  of
              milliseconds the squelch must be open for the repeater to open.

       OPEN_ON_SQL_AFTER_RPT_CLOSE
              Activate the repeater on just a squelch opening if there have been no more than the
              specified number of seconds since the repeater closed.

       OPEN_SQL_FLANK
              Determines if OPEN_ON_SQL and OPEN_ON_CTCSS should activate the repeater  when  the
              squelch  open  or  close.  If  set  to  OPEN,  the repeater will activate and start
              retransmitting audio immediately. No identification will be sent. If set to  CLOSE,
              the  repeater  will not activate until the squelch close. An identification will be
              sent in this case.

       IDLE_SOUND_INTERVAL
              When the repeater is idle, a sound is played. Specify the interval in  milliseconds
              between playing the idle sound. An interval of 0 disables the idle sound.

       SQL_FLAP_SUP_MIN_TIME
              Flapping  squelch  suppression  is  used  to  close  the  repeater down if there is
              interference on the  frequency  that  open  the  squelch  by  short  bursts.   This
              configuration variable is used to specify the minimum time, in milliseconds, that a
              transmission must last to be classified as a real transmission. A good value is  in
              between 500-2000ms.

       SQL_FLAP_SUP_MAX_COUNT
              Flapping  squelch  suppression  is  used  to  close  the  repeater down if there is
              interference on the  frequency  that  open  the  squelch  by  short  bursts.   This
              configuration  variable  is used to specify the maximum number of consecutive short
              squelch openings allowed before shutting the repeater down.  A  good  value  is  in
              between 5-10.

       ACTIVATE_MODULE_ON_LONG_CMD
              This  configuration  variable activate a feature that might help users not aware of
              the SvxLink command structure. The idea is to activate the specified module when  a
              long enough command has been received. The typical example is an EchoLink user that
              is used to just typing in the node ID and then the connection should be established
              right  away.  Using  this  configuration  variable,  specify a minimum length and a
              module name. If no module is active and at least the specified number of digits has
              been  entered,  the  given module is activated and the command is sent to it. To be
              really   useful   this   feature   should   be    used    in    cooperation    with
              EXEC_CMD_ON_SQL_CLOSE.

              For  example,  if  this  configuration variable is set to "4:EchoLink" and the user
              types in 9999, the EchoLink module is first activated and then the command 9999  is
              sent to it, which will connect to the ECHOTEST server.

       IDENT_NAG_TIMEOUT
              Tell repeater users that are not identifying to identify themselves.  The number of
              seconds to wait for an identification, after the repeater has  been  activated,  is
              set  using this configuration variable.  A valid identification is considered to be
              a transmission longer than the time set  by  the  IDENT_NAG_MIN_TIME  configuration
              variable.  We  don't know if it's really an identification but it's the best we can
              do.  Setting it to 0 or commenting it out disables the feature.

       IDENT_NAG_MIN_TIME
              This is the minimum time, in milliseconds, that a  transmission  must  last  to  be
              considered as an identification. This is used as described in the IDENT_NAG_TIMEOUT
              configuration variable.

   ReflectorLogic
       The ReflectorLogic is used to connect to an SvxReflector  server.  The  SvxReflector  will
       distribute  all audio to all connected nodes. To actually send audio to the reflector from
       a logic core, set up a link between the two logics using LogicLinking. More than one logic
       core can be connected.

       SvxReflector  also offer traffic separation using talk groups so that multiple QSOs can be
       ongoing through the same reflector server without interfering with each other.  The set of
       talk  groups that a node monitors for activity is configurable so that a talk group can be
       automatically selected when it's active. After a configurable timeout the node will return
       to  monitor  all  configured talk groups if there is no activity on the currently selected
       talk group. Which talk group to select for outgoing traffic for a node can  be  set  to  a
       default  and/or  selected  using  DTMF commands. The DTMF commands are entered through the
       logic linking definition associated with the reflector.  So if a command prefix of 9  have
       been  specified  for  a  link,  selecting  talk group 888 will be achieved by entering the
       command 91888#.

       TYPE   The type for a reflector logic core is always Reflector.

       DNS_DOMAIN
              The domain of the SvxReflector server to connect to. To make  this  work,  the  DNS
              domain  have  to  be  configured with SRV records for all reflector servers serving
              that domain. For example, if the domain is example.org, there must be one  or  more
              SRV  entries  in  the  DNS  with  the name _svxreflector._tcp.example.org. Each SRV
              record contain information about hostname, port, priority and weight. The  priority
              determine in which order SvxLink will try to connect to the servers.  The weight is
              used to give different servers with the same priority a probability for  how  often
              it will be selected.

       HOSTS  A  comma separated list of hostname:port pairs of the reflector servers. IP address
              also work. If port is not specified the value  of  HOST_PORT  will  be  used  as  a
              default.  If  DNS_DOMAIN  is  also  specified, the values in the HOSTS list will be
              added to the list looked up in  the  DNS.  The  order  of  the  entries  depend  on
              HOST_PRIO, HOST_PRIO_INC and HOST_WEIGHT.

       HOST_PRIO
              The  priority value to use for entries in the HOSTS list. The priority determine in
              which order SvxLink will  try  to  connect  to  the  specified  servers.  See  also
              HOST_PRIO_INC. Default: 100.

       HOST_PRIO_INC
              The  value  with  which  to increase the priority value for each entry in the HOSTS
              list. The first value will be the one specified by HOST_PRIO. Default: 1.

       HOST_WEIGHT
              The weight value will determine how often a server will be selected  in  comparison
              to  servers  with  the same priority. This variable is only useful when one want to
              set the weight in relation to other SRV records looked up in the  DNS.  The  weight
              values for entries in the HOSTS list will always be the same.

       HOST_PORT
              The  default  TCP/UDP  port  number used by the reflector server. The client do not
              need to open any ports in the firewall. Default: 5300.

       CALLSIGN
              The callsign  of  this  node.  The  callsign  also  serves  as  the  username  when
              authenticating to the SvxReflector server.

       AUTH_KEY
              The  authentication  key, or password, used when authenticating to the SvxReflector
              server.

       JITTER_BUFFER_DELAY
              A jitter buffer is used to prevent gaps in the audio when the network connection do
              not provide a steady flow of data. Set this configuration variable to the number of
              milliseconds to buffer before starting to process the audio. Default: 0.

       DEFAULT_TG
              The node will select this talk group on local incoming traffic  if  no  other  talk
              group is currently selected. Default: 0 (no talk group).

       MONITOR_TGS
              A comma separated list of talk groups which the node will monitor for activity when
              no other talk group is selected.

              It is also possible to mark talk groups as more prioritized than others  by  adding
              one  or  more  plus  signs after the talk group number. More plus signs mean higher
              priority. While a talk group is selected, and there are activity on  a  talk  group
              with higher priority, the higher prio talk group will be selected unless there have
              been local activity on the node.

              Example:

                MONITOR_TGS=112++,240,2403+,2403123

              will monitor the TGs for Sweden, Sweden district 3  and  a  specific  TG  #2403123.
              Traffic  on  talk  group  2403  will  be  prioritized and 112 will have the highest
              priority.

       TG_SELECT_TIMEOUT
              The number of seconds after which a selected talk group  will  be  unselected.  The
              node  will  return  to  talk  group  0  (no  talk  group)  and start monitoring the
              configured talk groups again. The value must  be  larger  than  zero.  Default:  30
              seconds.

       TG_SELECT_INHIBIT_TIMEOUT
              Talkgroup selection is inhibited when there is activity on the local frequency that
              does not activate a talkgroup. Only activation due to remote activity  (monitoring)
              is  inhibited.  A talkgroup can be activated as usual by using any method for local
              activation. This feature make it possible to conduct  a  local  QSO  without  being
              disturbed by remote reflector traffic.

              Use  this  configuration variable to set the number of seconds of inactivity before
              the node will go back to monitoring remote talkgroup activity. The default value is
              taken  from  TG_SELECT_TIMEOUT  if  this variable is not set.  Setting a value of 0
              will disable the feature entirely.

       ANNOUNCE_REMOTE_MIN_INTERVAL
              The minimum number of seconds between announcements of the same TG  for  remote  TG
              activations.  If  the  same  TG  is  remotely  activated  repeatedly it will not be
              announced until at least the number of  seconds  specified  in  this  configuration
              variable have passed.

       NODE_INFO_FILE
              The  configuration file to use for sending information regarding this client to the
              reflector server. This is not a required configuration. It is mostly free-form JSON
              but  the  general structure should be kept so that SvxLink and the reflector server
              can fill in dynamic information about the node like signal strengths for receivers.
              Use  the  default node_info.json as a template. You can add more information rather
              freely but don't change the overall structure.

       MUTE_FIRST_TX_LOC
              Mute the first transmission after selecting a talk group  due  to  local  activity.
              This  feature  is  good  to  have enabled for a number of reasons. One reason is to
              suppress  short  openings  of  a  talk  group  when  someone  just  make  a  single
              transmission  to  test  the  local  node. Another reason is for to allow someone to
              submit DTMF commands to the node  without  disturbing  the  reflector  network.  An
              example  is  that  someone  activates a talk group using CTCSS but then immediately
              select another talk group using DTMF. In that case no transmission will be made  on
              the first talk group. This feature is enabled by default.

       MUTE_FIRST_TX_REM
              Mute  the  first  transmission after selecting a talk group due to remote activity.
              This feature can be enabled to let local node users  enter  DTMF  commands  without
              disturbing  an  active  talk  group.  As an example, the local node monitors a talk
              group that is active. However, no one on the local node participates in the QSO and
              a  local  user  want to select another talk group.  With this feature enabled it is
              possible to do that without transmitting into the reflector network while  entering
              DTMF commands.

              This  feature  is  not enabled by default since it is a bit unintuitive. If a local
              user hear a call and want  to  answer  that  call,  he  must  first  make  a  short
              transmission to "open up" the local node. This is easy to forget.

       TMP_MONITOR_TIMEOUT
              This  configuration  variable  determines  after  how many seconds a manually added
              temporary talk group monitor will time out. Set  to  0  to  disable  this  feature.
              Default is 3600, one hour.

       UDP_HEARTBEAT_INTERVAL
              The  number of seconds between UDP heartbeat messages sent to the reflector server.
              This configuration variable can normally be left at the default value  but  if  you
              get  frequent  disconnects  due  to UDP heartbeat timeout it may help to lower this
              value. Default: 15

       QSY_PENDING_TIMEOUT
              Set to the number of seconds to enable following a QSY request on squelch activity.
              That  is,  after  a remote QSY request, during the configured number of seconds, it
              will be possible to follow a QSY request by just pushing the PTT instead of  having
              to  use  DTMF commands. Note that the timer starts when the QSY request is received
              so the time it takes to play the QSY announcement is also included in  the  timeout
              time. A good value is within 10 to 15 seconds.  Default is -1 (disabled).

       VERBOSE
              Set to 0 to suppress reflector leave/join printouts.

       It  is  also possible to set audio codec parameters using the same configuration variables
       as documented for networked receivers  and  transmitters.  For  example,  to  lighten  the
       encoder CPU load for the Opus encoder, set OPUS_ENC_COMPLEXITY to something lower than 9.

   QSO Recorder Section
       The  QSO  recorder  is  used to record all received audio to files on disk. All audio from
       receivers, modules and logic links are recorded. Announcements are not recorded.

       REC_DIR
              Use this configuration variable to specify in which directory to  write  the  audio
              files. A good place is /var/spool/svxlink/qso_recorder.

       MIN_TIME
              If  the  duration  of  the  recorded  content  for  a  file  is  less then MIN_TIME
              milliseconds, the file will be deleted when the file is closed. Default:  0  (empty
              files will be deleted).

       MAX_TIME
              Setting  this configuration variable will set an upper limit for the file size of a
              recording. No more than MAX_TIME seconds of content will be recorded  to  a  single
              file.  When the maximum time have been reached, the file is closed and another file
              is created. Note that it is not the maximum time that the recording has been active
              that we are setting a limit for but rather how much content that have been recorded
              to the file. If nothing is recorded, the file can stay open indefinitely.  Default:
              0 (no limit)

       SOFT_TIME
              To  not  get  abrupt  breaks in recordings it is possible to set a soft break time.
              Let's say that MAX_TIME is set to 3600 seconds (one hour). If we set  SOFT_TIME  to
              300  seconds  (five  minutes)  the  QSO recorder try to close the file on a squelch
              close somewhere between 55 and 60  minutes.  In  this  way  we  may  avoid  getting
              transmissions split up between files. Default: 0 (no limit)

       MAX_DIRSIZE
              Specify  the  maximum  total  size  in  megabytes  of  the  files  in the recording
              directory. If the limit is exceeded, the oldest files are  deleted.  The  directory
              size  is  checked  upon  file close so the size may grow temporarily past the limit
              with at most the size of one recorded  file.  Only  files  which  have  a  filename
              starting  with "qsorec_" will be considered for deletion. If using an ENCODING_CMD,
              make sure that the "qsorec_" prefix is not removed from the target filename  unless
              you really want the MAX_DIRSIZE feature to skip them.  Default: 0 (no limit)

       DEFAULT_ACTIVE
              If  this  configuration variable is set to 1, the QSO recorder will be activated by
              default when SvxLink start. Default: 0 (default inactive)

       TIMEOUT
              If a timeout is specified, the activation state of the QSO recorder will return  to
              the  value specified in the DEFAULT_ACTIVE configuration variable when the node has
              been idle for the specified number of seconds. When DEFAULT_ACTIVE is unset  or  0,
              if  the  QSO  recorder  is  manually activated it will be automatically deactivated
              after the specified amount of time of inactivity.  When DEFAULT_ACTIVE is set to 1,
              if  the  QSO  recorder  is  manually deactivated it will be automatically activated
              after the specified amount of time of inactivity.  Default: 0 (no timeout)

       QSO_TIMEOUT
              Set this configuration variable if you want to close the currently opened file  and
              open a new one after each QSO. The number of seconds the node should be idle before
              closing the file should be specified. Default: 0 (no QSO timeout)

       ENCODER_CMD
              Specify a command to be executed after a new wav file have been  written  to  disk.
              This makes it possible to use an external encoder utility to encode the wav file to
              another format. Even though  this  configuration  variable  was  added  to  run  an
              external  encoder  it  could  do more complicated things with the file if needed. A
              couple of examples would be to transfer the file to another computer or to  send  a
              notification  e-mail. If the command line get too complicated it may be a good idea
              to write a script instead.

              The encoder command will be run under  a  shell  so  normal  shell  operators  like
              redirects  and  pipes  may  be  used.  The shell specified in the SHELL environment
              variable will be used and if not set, /bin/sh will be used. The "-c"  command  line
              option  will  be  added so the complete command will look something like: $SHELL -c
              "$ENCODER_CMD". A number of %-codes can be included in the command.  They have  the
              following meaning:

              •   %f - The full filename with full path

              •   %d - The directory part (what REC_DIR is set to)

              •   %b - The basename, that is, the filename without path and extension

              •   %n - The filename without path but with extension

              The  encoder  will  be started in the background and it will not be stopped even if
              SvxLink exits. It will run in the background until it's done. As long as SvxLink is
              running  it  is monitoring the encoding processes. If a process run for longer than
              one hour it will be killed.

              Note that SvxLink will never remove the original recording so that have to be  done
              in the encoder command. Here are a couple of examples:

               ENCODER_CMD=/usr/bin/oggenc -Q \"%f\" && rm \"%f\"
               ENCODER_CMD=/usr/bin/lame --quiet \"%f\" \"%d/%b.mp3\" && rm \"%f\"
               ENCODER_CMD=/usr/bin/speexenc \"%f\" \"%d/%b.spx\" 2>/dev/null && rm \"%f\"
               ENCODER_CMD=/usr/bin/opusenc \"%f\" \"%d/%b.opus\" 2>/dev/null && rm \"%f\"

   Macros Section
       A  macros  section  is  used to declare macros that can be used by a logic core. The logic
       core points out the macros section to use by using the MACROS configuration variable.  The
       name  of  the  MACROS  section  can  be  chosen arbitrarily as long as it match the MACROS
       configuration variable in the logic core configuration section. There  could  for  example
       exist both a [RepeaterLogicMacros] and a [SimplexLogicMacros] section.

       A  macro is a kind of shortcut that can be used to decrease the amount of key presses that
       have to be done to connect to common EchoLink stations for example.  On  the  radio  side,
       macros  are  activated  by  pressing  "D"  "macro  number"  "#". A macros section can look
       something like the example below. Note that the module name is case sensitive.

         [Macros]
         1=EchoLink:9999#
         2=EchoLink:1234567#
         9=Parrot:0123456789#

       For example, pressing DTMF sequence "D1#" will activate the EchoLink module and connect to
       the EchoTest conference node.

   Logic Linking
       A  logic  linking  configuration section is used to specify information for a link between
       two or more SvxLink logic cores. Such a link can for example be used to  connect  a  local
       repeater   to  a  remote  repeater  using  a  separate  link  transceiver.   The  link  is
       activated/deactivated  using  DTMF  commands  and/or  automatically  depending   on   your
       configuration.   When  the  link  is  active,  all  audio  received  by  one logic will be
       transmitted by the other logic(s).

       The name of the logic linking section can be chosen freely. In the  example  configuration
       file,  there  is  a  section [LinkToR4]. To use a logic linking section in a logic core it
       must be pointed out by the LINKS configuration variable in the GLOBAL  section.   Example:
       GLOBAL/LINKS=LinkToR4

       CONNECT_LOGICS
              A  comma  separated  list  of  logic  specifications for the logic cores to connect
              together. Each logic specification has three  parts  separated  by  colons:  <logic
              name>:<command>:<announcement  name>.  The "logic name" is the name of the logic to
              include in the link. To manually activate or deactivate  the  link  from  the  just
              specified logic, "command" is used. The "announcement name" is used when announcing
              link related activities  like  activation  or  deactivation.   Both  "command"  and
              "announcement  name"  may be left empty if no manual control is wanted.  An example
              config line may look like this:

              RepeaterLogic_2m:99:SK3GW,RepeaterLogic_70cm:94:SK3GK

              It will include two logics in the link,  RepeaterLogic_2m  and  RepeaterLogic_70cm.
              From  the  2m  side,  the link will be activated when the user send command 991 and
              deactivated when the user send command 990. Upon activation, an  announcement  like
              "activating link to SK3GW" will be played back. From the 70cm side the command will
              be 941 and 940 respectively. The announcement when activating  the  link  from  the
              70cm side will be something like "activating link to SK3GK".

       DEFAULT_ACTIVE
              The  link  will  be  connected  automatically  during  startup  of  SvxLink if this
              configuration variable is set to 1. Also, if a link is manually disconnected  by  a
              user  it  will be automatically reconnected after some time of inactivity. The time
              is specified by setting the TIMEOUT configuration variable. If the TIMEOUT variable
              is not set, no automatic reactivation will be done.

       TIMEOUT
              The  number  of  seconds  after which the link will be automatically deactivated if
              there have been no activity. If 1 have  been  specified  for  DEFAULT_ACTIVE,  this
              configuration  variable  will  specify  after  how  many  seconds  the link will be
              reactivated after being manually deactivated.

       ACTIVATE_ON_ACTIVITY
              Enter a comma separated list of logics, which  should  automatically  activate  the
              link  if  there  is  activity  (e.g.  squelch  open,  announcements etc) in it. One
              possible application  for  this  is  for  example  to  make  the  connection  of  a
              microphone/speaker  combination  (without DTMF encoder) for brief announcements but
              without having to constantly listen in.  Example: ACTIVATE_ON_ACTIVITY=MicSpkrLogic

   Local Receiver Section
       A local receiver section is used to specify the configuration for a receiver connected  to
       the  sound  card. In the default configuration file there is a Local configuration section
       called Rx1.  The section name could be anything. It  should  match  the  RX  configuration
       variable  in  the logic core where the receiver is to be used. The available configuration
       variables are described below.

       TYPE   Always "Local" for a local receiver.

       RX_ID  A single character uniquely identifying this receiver.  The  RX  identity  can  for
              example  be  used  in  the  TCL  event  scripts  to  get different roger sounds for
              different receivers when using a receiver voter.

       AUDIO_DEV
              Specify the audio device to use. Normally alsa:plughw:0. Have a look at  the  AUDIO
              DEVICE SPECIFICATIONS chapter for more information.

       AUDIO_CHANNEL
              Specify the audio channel to use. SvxLink can use the left/right stereo channels as
              two mono channels. Legal values are 0 or 1.

       AUDIO_DEV_KEEP_OPEN
              The normal behaviour for SvxLink is to open an audio device when needed  and  close
              it  when  it  does  not  have  to  be open anymore. This may cause problems in some
              applications or with some sound hardware. Set this variable to 1 to  force  SvxLink
              to keep the audio device open from application start to exit.

       LIMITER_THRESH
              Set  the  threshold,  in dBFS, for the audio limiter. The audio limiter really is a
              compressor with a very steep compression ratio like 10:1. The limiter  is  used  to
              help  keeping  down  the  audio  level  for overmodulating stations. For a properly
              calibrated SvxLink node max FM deviation is -6dBFS. A good value to start with  for
              this  parameter  is then -6 but try to lower it further (like -9 to -12) if it does
              not affect audio quality negatively.

       SQL_DET
              Specify the type of squelch detector to  use.  Possible  values  are:  VOX,  CTCSS,
              SERIAL, EVDEV, SIGLEV, PTY, GPIO, GPIOD, HIDRAW or COMBINE.

              The  VOX  squelch detector determines if there is a signal present by calculating a
              mean value of the sound samples. The VOX squelch detector behavior is adjusted with
              VOX_FILTER_DEPTH  and  VOX_THRESH. VOX is actually a bit of a misnomer since it's a
              "Voice Operated Squelch" and  VOX  actually  means  "Voice  Operated  Transmitter".
              However,  the  term  VOX  is  widely understood by hams all over the world so we'll
              stick with it.

              The CTCSS squelch detector checks for the presence of a  tone  with  the  specified
              frequency. The tone frequency is specified using the CTCSS_FQ config variable.  The
              thresholds are specified using the CTCSS_OPEN_THRESH and CTCSS_CLOSE_THRESH  config
              variables.  Other  config  variables  that effect the CTCSS squelch is: CTCSS_MODE,
              CTCSS_SNR_OFFSETS, CTCSS_BPF_LOW, CTCSS_BPF_HIGH, CTCSS_EMIT_TONE_DETECTED.

              The SERIAL squelch detector use a pin in a serial port to detect if the squelch  is
              open.  This  squelch detector can be used if the receiver have an external hardware
              indicator of when the squelch is open. Specify which serial port/pin  to  use  with
              SERIAL_PORT and SERIAL_PIN.

              The EVDEV squelch detector read squelch events from a /dev/input/eventX device.  An
              example where this could be useful is if you have a  USB  audio  device  with  some
              buttons  on  it.  Some  of  these  devices  generate  key press events, much like a
              keyboard. Specify which /dev/input device  node  to  use  using  the  EVDEV_DEVNAME
              config  variable. Set which events that should open and close the squelch using the
              EVDEV_OPEN and EVDEV_CLOSE config variables.

              The GPIO squelch detector read a pin on the GPIO Port. Depending on  the  level  of
              the  pin, the squelch is switched. A HIGH (3.3V) at the pin set the squelch to open
              and a LOW (GND) level will set the squelch to closed.  Specify which squelch pin to
              use with the GPIO_SQL_PIN configuration variable.  On some devices, like the Orange
              Pi, you also need to set the GPIO_PATH configuration variable.

              The GPIOD squelch detector read a  pin  in  the  GPIO  subsystem  using  the  gpiod
              library.  Depending  on  the  level of the pin, the squelch is switched.  Set GPIOD
              interaction  up  using  the  following  configuration  variables:   SQL_GPIOD_CHIP,
              SQL_GPIOD_LINE, SQL_GPIOD_BIAS.

              The  SIGLEV  squelch  detector  use  signal  level measurements to determine if the
              squelch is open or not. Which signal level detector to use  is  determined  by  the
              setting of the SIGLEV_DET configuration variable. The open and close thresholds are
              set using  the  SQL_SIGLEV_OPEN_THRESH  and  SQL_SIGLEV_CLOSE_THRESH  configuration
              variables.   If  using  the  NOISE  signal  level  detector note the following. The
              detector is not perfect (it's affected by speech) so you will also  want  to  setup
              SQL_HANGTIME  to  prevent  it from closing in the middle of a transmission. A value
              between 100-300ms is probably  what  you  need.  If  using  this  squelch  type  in
              cooperation  with  a  voter,  you'll  also  probably need to setup SQL_DELAY to get
              correct signal level measurements. A value of about 40ms seem to be OK.  Also, when
              using  the  NOISE  signal  level detector the input audio must be unsquelched since
              silence will be interpreted as a high signal strength.

              The PTY squelch expects a very simple protocol over a pseudo-tty device, created by
              SvxLink at runtime.  An 'O' over this pty device indicate an open squelch, a 'Z' is
              a closed squelch.  Define the slave pty using  PTY_PATH  (e.g.   PTY_PATH=/tmp/sql)
              and  SvxLink  will  create  a  link to the specified path from it's pseudotty slave
              device (/dev/pts/X). This can be used by a  script  to  interface  custom  devices,
              modems  or  other  hardware to SvxLink. Look for nhrcx.pl or trx_pty_ctrl.py for an
              example.  It is possible to specify the same PTY for multiple functions (e.g. DTMF,
              ptt  etc) in both TX and RX configurations. This may be good if there is one script
              handling all functions.

              The HIDRAW squelch supports human interface devices (HID), USB devices  like  CM108
              soundcard e.g. used in the URI Echolink adapter made by DMK.

              The  COMBINE  squelch  make  it  possible to combine multiple squelch types using a
              logical expression. The expression is set up using  the  SQL_COMBINE  configuration
              variable.

       SQL_START_DELAY
              The  squelch start delay is of most use when using VOX squelch. For example, if the
              transceiver makes a noise when the transmitter is turned off,  that  might  trigger
              the  VOX  and  cause  an  infinite  loop  of squelch open/close transmitter on/off.
              Specify the number of milliseconds that the squelch  should  be  "deaf"  after  the
              transmitter has been turned off.

       SQL_DELAY
              Specify  a  delay  in  milliseconds that a squelch open indication will be delayed.
              This odd feature can be of use when using a fast squelch  detector  in  combination
              with  the  signal  level  detector.  A  squelch  delay  will allow the signal level
              detector to do its work before an indication of squelch open is sent to  the  logic
              core.  A  delay  might  be  needed  when  using  the voter to choose among multiple
              receivers. A normal value could be somewhere in between 20-100ms.

       SQL_HANGTIME
              How long, in milliseconds, the squelch  will  stay  open  after  the  detector  has
              indicated  that  it  is closed. This configuration variable will affect all squelch
              detector types. Settable at runtime.

       SQL_EXTENDED_HANGTIME
              At low signal strengths it can be beneficial to use a longer  squelch  hangtime  so
              that  it  is  less  likely for the squelch to close. This configuration variable is
              unset by default. A value of 1000 milliseconds may be a good  value  to  start  out
              with.   To   enable   the   extended   squelch   hangtime   feature,   set  up  the
              SQL_EXTENDED_HANGTIME_THRESH variable. Settable at runtime.

       SQL_EXTENDED_HANGTIME_THRESH
              At low signal strengths it can be beneficial to use a longer  squelch  hangtime  so
              that  it  is  less  likely for the squelch to close. This configuration variable is
              unset by default. When set to a signal level it will activate the extended  squelch
              hangtime feature. When the signal strength during a transmission fall below the set
              threshold, the extended hangtime will be used. Start out with a value between 10 to
              15. The SQL_EXTENDED_HANGTIME variable is used to set how long the extended squelch
              hangtime should be. Make sure that you have calibrated the  signal  level  detector
              before turning this feature on. Otherwise it will not work as expected. Settable at
              runtime.

       SQL_TIMEOUT
              Use this configuration variable to set an upper limit, in seconds, for how long the
              squelch  is  allowed  to  be  open. If the timeout value is exceeded the squelch is
              forced to closed. If the squelch close for real, everything is back to normal. When
              it  opens  the  next  time  a squelch open will be signaled.  For example, use this
              feature to make sure that a faulty receiver cannot block the system indefinitely.

       VOX_FILTER_DEPTH
              The number of milliseconds to create the mean value over. A small value  will  make
              the  vox  react  quicker  (<200)  and  larger values will make it a little bit more
              sluggish. A small value is often better.

       VOX_THRESH
              The threshold that the mean value of the samples must exceed for the squelch to  be
              considered  open.  It's  hard to say what is a good value. Something around 1000 is
              probably a good value. Set it as low as possible without getting the vox  to  false
              trigger.

       CTCSS_MODE
              This configuration variable set the CTCSS detection method used. These are the ones
              to choose from:

              •   0 (Default) Will choose the detection mode that is the default in the software.
                  At the moment this is mode 4, "Overlap+Estimated SNR+Frequency estimation".

              •   1  (Neighbor  bins)  This  detection mode will use three narrow frequency bands
                  (~8Hz) to do the detection. One band is centered around the tone to be detected
                  and  then there are one band above and one below the tone. These bands are used
                  to estimate the noise floor. This is  the  detector  that  have  been  used  in
                  SvxLink  for  a long time. It is however rather slow with its detection time of
                  about 450ms.  There is no good reason to use this detector anymore  but  it  is
                  kept in case the new detector does not work for some hardware setup.

              •   2  (Estimated  SNR)  This  is  a  newer detector implementation which have some
                  improvements. The most notable difference  is  that  it  is  faster.  The  mean
                  detection  time will be around 200ms. This is the default detection mode if not
                  specified.  This detector will use a larger  passband  to  estimate  the  noise
                  floor  which  make  it  more  stable.  The  default  config use the whole CTCSS
                  passband but this can be customized using the CTCSS_BPF_LOW and  CTCSS_BPF_HIGH
                  config variables.

              •   3  (Estimated SNR+Phase) This detector is a bit experimental. It is even faster
                  and more narrow than the other detection modes. The mean detection time will be
                  something like 150ms.  The detection bandwidth is very narrow and very sharp so
                  that no adjacent tones will trigger the detector. The price to  pay  for  these
                  improvements is that is it a bit less sensitive.

              •   4  (Overlap+Estimated  SNR+Frequency  estimation) This is an improvement of the
                  mode 3 detector which use another method for extracting the  phase  information
                  from  the signal. This phase information can be used to calculate an estimation
                  of the tone frequency. The accuracy is like tenths of a Herz. Like the  mode  3
                  detector,  this detector is faster and more selective. With its 0.75% frequency
                  tolerance, it will not trigger on adjacent CTCSS tones. However, the "undetect"
                  algorithm does not use the frequency estimation so the squelch may be held open
                  by an adjacent tone if already in active state. One downside is that  it  is  a
                  bit  more  CPU  hungry due to using 75% overlap in the frequency analysis, thus
                  processing each sample three times. The reason  to  use  overlap  is  that  the
                  detector will be faster.

       CTCSS_FQ
              If  CTCSS  (PL,subtone)  squelch  is  used  (SQL_DET  is set to CTCSS), this config
              variable sets the frequency of the tone to use. The tone frequency ranges from 67.0
              to  254.1  Hz.  There  actually  is  nothing  that  will  stop you from setting the
              frequency to something outside this range but there is no guarantee  that  it  will
              work.

              If  desired it is possible to specify a comma separated list of tone frequencies in
              which case the squelch will open on all the tone frequencies. Note  that  for  this
              feature  to work well the receivers frequency response in the CTCSS frequency range
              (67.0 to 254.1Hz) need to be reasonable flat. When choosing tones,  try  to  select
              tones  that  are  close to each other. However, selecting tones too close may cause
              both to trigger. Also do not select tones that are a multiple of another tone since
              overtones may trigger the wrong one.

       CTCSS_OPEN_THRESH
              If  CTCSS  (PL,  subtone)  squelch  is  used (SQL_DET is set to CTCSS), this config
              variable sets the required tone level to indicate squelch open. The value  is  some
              kind  of  estimated  signal  to noise dB value. If using CTCSS mode 2, 3 or 4 it is
              helpful to set up the CTCSS_SNR_OFFSETS config variable. This  will  make  the  SNR
              estimation pretty good. Default threshold is 15dB.

       CTCSS_CLOSE_THRESH
              If  CTCSS  (PL,  subtone)  squelch  is  used (SQL_DET is set to CTCSS), this config
              variable sets the required tone level to indicate squelch close. The value is  some
              kind  of  estimated  signal  to noise dB value. If using CTCSS mode 2, 3 or 4 it is
              helpful to set up the CTCSS_SNR_OFFSETS config variable. This  will  make  the  SNR
              estimation pretty good. Default threshold is 9dB.

       CTCSS_SNR_OFFSET
              This  configuration  variable  should  not  be used unless you know why you use it.
              Using CTCSS_SNR_OFFSETS is often more appropriate.

       CTCSS_SNR_OFFSETS
              This config variable is used when CTCSS_MODE is set to 0, 2, 3 or 4. It will adjust
              the  estimated  SNR values so that they become very close to a real SNR value. This
              value  will  have  to  be  adjusted  if  CTCSS_FQ,  CTCSS_MODE,  CTCSS_BPF_LOW   or
              CTCSS_BPF_HIGH changes.

              Use  the  siglevdetcal  utility  to  find  out what to set this config variable to.
              There is no requirement to set this config variable up. The downside  is  that  you
              will then need to experiment more with the CTCSS_OPEN_THRESH and CTCSS_CLOSE_THRESH
              config variables to find  the  correct  squelch  level.  If  using  multiple  CTCSS
              frequencies  it  may  not  be  possible to find good threshold values due to uneven
              frequency characteristics for the receiver.

              The format for this config variable is a comma separated list  of  frequency:offset
              pairs.  The  CTCSS_SNR_OFFSET variable may be used as a form of fallback value that
              is used if a specific tone frequency in use is missing from this list.

       CTCSS_BPF_LOW
              When CTCSS_MODE is set to 0, 2, 3 or 4, this  config  variable  will  set  the  low
              cutoff  frequency  for  the  passband  filter.  It  normally  should not have to be
              adjusted but could improve the detector  if  some  interference  falls  within  the
              passband (e.g. mains hum). Note however that the more narrow you make the passband,
              the less stable the detector will be. You may need to compensate by increasing  the
              open/close thresholds or by setting up SQL_DELAY and SQL_HANGTIME. Default is 60Hz.

       CTCSS_BPF_HIGH
              When  CTCSS_MODE  is  set  to  0, 2, 3 or 4, this config variable will set the high
              cutoff frequency for the passband  filter.  It  normally  should  not  have  to  be
              adjusted  but  could  improve  the  detector  if some interference falls within the
              passband. Note however that the more narrow you make the passband, the less  stable
              the  detector  will  be.  You  may  need to compensate by increasing the open/close
              thresholds or by setting up SQL_DELAY and SQL_HANGTIME. Default is 270Hz.

       CTCSS_EMIT_TONE_DETECTED
              This configuration variable defaults to 1 which mean that a tone detected signal is
              emitted  when  a CTCSS tone is detected. This is required for the function of other
              features in SvxLink like CTCSS_TO_TG and OPEN_ON_CTCSS. In some situations  it  may
              be   necessary   to  disable  this  behavior,  like  when  using  advanced  squelch
              configurations where some tones are actively blocked due to nearby interference.

       CTCSS_DEBUG
              Set this to 1 to enable  continuously  printing  SNR  values  for  the  CTCSS  tone
              measurements.  This is only meant to be activated temporarily while searching for a
              problem or for initial adjustment.

       SERIAL_PORT
              If SQL_DET is set to SERIAL, this config  variable  determines  which  serial  port
              should  be used for hardware squelch input (COS - Carrier Operated Squelch).  Note:
              If the same serial port is used for the PTT, make sure you specify exactly the same
              device  name. Otherwise the RX and TX will not be able to share the port.  Example:
              SQL_PORT=/dev/ttyS0

       SERIAL_PIN
              If SQL_DET is set to SERIAL, this config  variable  determines  which  pin  in  the
              serial  port that should be used for hardware squelch input (COS - Carrier Operated
              Squelch). It is possible to use the DCD, CTS, DSR or RI pin. If inverted  operation
              is desired, prefix the pin name with an exclamation mark (!).

              Example: SQL_PIN=!CTS

       SERIAL_SET_PINS
              Set  the  specified serial port pins to a static state. This can be good if using a
              pin for reference voltage or if a pin  have  to  be  in  a  certain  state  to  not
              interfere  with  the  operation  of  some  equipment.  There  are two pins that are
              possible to use, RTS and DTR. If prefixed with an exclamation  mark  (!),  the  pin
              will be cleared and if not it will be set.

              Example: SERIAL_SET_PINS=RTS!DTR will set RTS and clear DTR.

       EVDEV_DEVNAME
              Specify  which  /dev/input  device  node to use for the EVDEV squelch detector.  To
              find out which device node and event codes to use, install the evtest utility. Find
              a  candidate  device node under /dev/input/ or /dev/input/by-id/ and try the evtest
              utility on it. Press some keys on the device you  want  to  read  events  from.  If
              you're in luck, events will be printed on the screen.

       EVDEV_OPEN
              Use  the  evtest  utility, as described above, to find out type, code and value for
              the event you want to use to open the squelch. For example if type is  1,  code  is
              163 and value is 1, set this config variable to 1,163,1.

       EVDEV_CLOSE
              Use  the  evtest  utility, as described above, to find out type, code and value for
              the event you want to use to close the squelch. For example if type is 1,  code  is
              163  and  value  is  0,  set  this  config variable to 1,163,0. If you set the same
              type,code,value combination for both EVDEV_OPEN and EVDEV_CLOSE,  that  event  will
              toggle the squelch.

       GPIO_PATH
              Use  this  configuration  variable  to  set the path to the sys control devices for
              GPIO.  This normally is /sys/class/gpio but on some hardware, like the  Orange  Pi,
              the path is /sys/class/gpio_sw.

       GPIO_SQL_PIN
              If  SQL_DET is set to GPIO this configuration variable is used to choose which GPIO
              pin to use for squelch input. The most common name  is  gpio<number>,  like  gpio4.
              Some  GPIO  drivers use more complex names, like gpio33_pe11. If inverted operation
              is desired, prefix the pin name with an exclamation mark (!).

              Example: GPIO_SQL_PIN=!gpio4

       SQL_GPIOD_CHIP
              The GPIO chip to use for squelch. The application tries to figure out  whether  the
              value is the path to the GPIO chip, its name, label or number.

              Example: SQL_GPIOD_CHIP=gpiochip0

       SQL_GPIOD_LINE
              If  GPIOD  was  specified in SQL_DET, set this config variable to the gpiod line of
              the GPIO pin to use. If a number is specified it is assumed  to  be  the  GPIO  pin
              offset  within  the chip. If a pin name is specified SvxLink will try to find a pin
              with that name within the chip.

              Normally, the pin will be active high but if the pin specification is prefixed with
              an exclamation mark it will be active low instead.

              For   some  hardware  platforms  you  may  need  to  also  set  the  SQL_GPIOD_CHIP
              configuration variable, if the pin you want to use is not on the default GPIO chip.

              Example: SQL_GPIOD_LINE=17

       SQL_GPIOD_BIAS
              This config variable is only available when SvxLink has been built with libgpiod >=
              1.5.  It  makes  it  possible to set if the squelch GPIO pin should be pulled up or
              down. If you don't know what that mean you should check the documentation for  your
              hardware  interface,  whether  it  require  a  pull up or down. It's an electronics
              thing. In essence, a pull up will force the pin high if nothing is connected to  it
              and a pull down will force it low.

       SQL_COMBINE
              This  configuration  variable  is  used to set a logical expression that is used to
              combine multiple  squelch  types.  The  expression  syntax  consist  of  names  for
              configuration  file  sections  where  a  specific squelch type is set up and of the
              operators '| (logical or), '&' (logical and) and '!' (logical negation).  Parts  of
              the  expression  may  be  grouped by surrounding them with parentheses, effectively
              changing operator precedence. The normal precedence is that '&' bind harder to  its
              operands than '|'. The '!' operator bind hardest.

              Below is a simple example of how to set up a combined squelch.

                [Rx1:CTCSS]
                SQL_DET=CTCSS
                CTCSS_FQ=77.0
                CTCSS_SNR_OFFSETS=77.0:-3.22

                [Rx1:SIGLEV]
                SQL_DET=SIGLEV
                SQL_SIGLEV_RX_NAME=Rx1
                SQL_SIGLEV_OPEN_THRESH=30
                SQL_SIGLEV_CLOSE_THRESH=2

                [Rx1]
                ...
                SQL_DET=COMBINE
                SQL_COMBINE=Rx1:CTCSS | Rx1:SIGLEV
                ...

              The  configuration  section names used above is just a convention but it is wise to
              include the name of the associated RX for better diagnostic messages.

              Squelch timing parameters like SQL_DELAY, SQL_HANGTIME etc may be  set  up  in  the
              receiver  configuration  section (Rx1 above). The parameters will not be applied to
              each subsquelch but rather to the combiner itself. It is often  better  to  set  up
              parameters  in  each  squelch specific configuration section unless you really know
              what you are doing.

       SQL_SIGLEV_RX_NAME
              When using the SIGLEV squelch type, specify the name of the receiver  that  provide
              the  signal level. This is only useful when the squelch configuration is not in the
              same configuration section as the receiver, like when  using  the  COMBINE  squelch
              type.  The  default  is  to  use the same configuration section as where the SIGLEV
              squelch is configured.

       SIGLEV_DET
              Choose which type of signal level detector  to  use.  The  available  choices  are:
              "NONE", "NOISE", "TONE", "AFSK" or "SIM", "CONST". Depending on other configuration
              there may be more choices available. For example, if a Ddr receiver is  used  there
              will  also  be a DDR signal level detector available.  The signal level detector is
              only needed when using multiple receivers in a voter configuration  or  when  using
              the SIGLEV squelch type.

              Type  NONE  disable  the signal level detector. This may be used if no signal level
              detector is needed.

              Type NOISE use a bandpass filter in the range of 5 -  5.5kHz  (CARD_SAMPLE_RATE  >=
              16000)  or  a  high-pass filter at 3.5kHz (CARD_SAMPLE_RATE = 8000) to estimate the
              amount of noise present on the signal. If the passband contain a  small  amount  of
              energy,  a  strong signal is assumed. If the passband contain more energy, a weaker
              signal is assumed.  The noise detector must be  calibrated  for  the  receiver  and
              audio  levels  you  use.  This  is  done  using  the SIGLEV_SLOPE and SIGLEV_OFFSET
              configuration variables. See chapter CALIBRATING THE SIGNAL  LEVEL  DETECTOR  below
              for more information.

              Type  TONE  is  not really a signal level detector but rather a transport mechanism
              for getting signal level measurements from a remote receiver site,  linked  in  via
              RF,  to  the  main  SvxLink site.  It is using ten tones, one for each signal level
              step, in the high audio frequency spectrum (5.5 - 6.4kHz, 100Hz step)  to  indicate
              one of ten signal levels.  Only the receiving part have been implemented in SvxLink
              at the moment. On the remote receiver side an Atmel AVR ATmega8 is used to map  the
              signal  level  voltage  to tone frequencies.  Use the TONE_SIGLEV_MAP configuration
              variable to map each tone to a corresponding signal level value in between 0 - 100.

              Type AFSK is like the TONE detector really  a  transport  mechanism.  Signal  level
              values  are transmitted using Audio Frequency Shift Keying, AFSK, over the receiver
              uplink channel from a remote receiver site. AFSK reception must have  been  enebled
              by setting OB_AFSK_ENABLE=1 and also optionally IB_AFSK_ENABLE=1.

              Type SIM is a simulated signal level detector that can be used to debug problems in
              the   SvxLink   software.   Use   the   SIGLEV_MIN,   SIGLEV_MAX,   SIGLEV_DEFAULT,
              SIGLEV_TOGGLE_INTERVAL   and   SIGLEV_RAND_INTERVAL   configuration   variables  to
              configure the simulator.

              Type CONST is not a detector at all. Instead it  is  possible  to  set  a  constant
              signal  level. This can be used for audio sources that does not have the concept of
              a signal level. If configured in a receiver managed by a Voter it can  be  used  to
              determine  priority  in  comparison  to other receivers and audio sources.  Use the
              SIGLEV_CONST configuration variable to set the signal level.

       HID_DEVICE
              This parameter defines the device your hidraw adapter is connected to. This port is
              created by the linux/hidraw driver.  e.g. HID_DEVICE=/dev/hidraw3

       HID_SQL_PIN
              Define  the  pin  your hardware squelch (from RX) is connected to. Valid values are
              VOL_UP, VOL_DN, MUTE_PLAY or MUTE_REC.

              Example: HID_SQL_PIN=VOL_UP

       SIGLEV_SLOPE
              The slope (or gain) of the signal  level  detector.  See  chapter  CALIBRATING  THE
              SIGNAL LEVEL DETECTOR below for more information.

       SIGLEV_OFFSET
              The  offset  of the signal level detector. See chapter CALIBRATING THE SIGNAL LEVEL
              DETECTOR below for more information.

       SIGLEV_BOGUS_THRESH
              This configuration variable set an upper threshold for the estimated  signal  level
              when  using the noise signal level detector.  If the estimation goes over the given
              threshold, a signal level of 0 will be reported. This can be used as  a  workaround
              when  using a receiver with squelched audio output. When the squelch is closed, the
              receiver audio is silent. The signal level estimator will interpret this as a  very
              strong  signal.  Setting  up  the bogus signal level threshold will counteract this
              behavior but a better solution is to use unsquelched audio if possible.

              By default this feature is disabled. If enabling it, start with a  value  somewhere
              around 120.

       TONE_SIGLEV_MAP
              This  configuration  variable  is  used  to  map  tones to signal level values when
              SIGLEV_DET=TONE. It is a comma separated list of ten values in the 0 -  100  range.
              The  first  value  map to the 5500Hz tone, the second to the 5600Hz tone and so on.
              The last value map to the 6400Hz tone.  What levels the tones should be  mapped  to
              depends on the tone sender implementation. The default tone map is 10,20,30...,100.

              The Atmel AVR processor used by the author have a reverse mapping so that the first
              tone (5500Hz) indicate the highest signal  strength  and  the  last  tone  (6400Hz)
              indicate  the  lowest  signal  strength.  It  is  also  not  linear since it's more
              important to have fine measurement granularity in the lower signal strength  range.
              This is how the mapping look for the AVR: 100,84,60,50,37,32,28,23,19,8.

       SQL_SIGLEV_OPEN_THRESH
              This  is  the squelch open threshold for the SIGLEV squelch detector.  If using the
              NOISE signal level detector, make sure to first calibrate the signal level detector
              using  the SIGLEV_SLOPE and SIGLEV_OFFSET configuration variables. The signal level
              detector should normally be calibrated so that full signal strength is 100  and  no
              signal  is  0.  Depending  on  your  background  noise  level a good value for this
              configuration variable is between 5 and 20.

       SQL_SIGLEV_CLOSE_THRESH
              This is the squelch close threshold for the SIGLEV squelch detector.  If using  the
              NOISE signal level detector, make sure to first calibrate the signal level detector
              using the SIGLEV_SLOPE and SIGLEV_OFFSET configuration variables. The signal  level
              detector  should  normally be calibrated so that full signal strength is 100 and no
              signal is 0. Depending on your  background  noise  level  a  good  value  for  this
              configuration variable is between 1 and 10.

       SIGLEV_MIN
              The minimum signal level used by SIM signal level detector.

       SIGLEV_MAX
              The maximum signal level used by SIM signal level detector.

       SIGLEV_DEFAULT
              The default signal level set on startup by the SIM signal level detector.

       SIGLEV_TOGGLE_INTERVAL
              The  interval,  in  milliseconds,  that  the  SIM signal level detector will use to
              toggle between the maximum and the minimum signal levels.

       SIGLEV_RAND_INTERVAL
              The interval, in milliseconds, that the SIM signal level detector will use  between
              randomizing a new signal level value. At each interval, the simulator will randomly
              either increase or decrease the signal level with one step.

       DEEMPHASIS
              Apply a deemphasis filter on received audio. The deemphasis  filter  is  used  when
              taking  audio  directly  from  the  detector in the receiver, like when using a 9k6
              packet radio connector. If not using a deemphasis filter the high frequencies  will
              be amplified resulting in a very bright (tinny) sound.

       SQL_TAIL_ELIM
              Squelch  tail  elimination  is  used  to  remove  noise  from the end of a received
              transmission. This is  of  most  use  when  using  CTCSS  or  SIGLEV  squelch  with
              unsquelched  input audio. A normal value is a couple of hundred milliseconds.  Note
              that the audio will be delayed by the same amount of milliseconds.  This  does  not
              matter much for a simplex link but for a repeater the delay might be annoying since
              you risk hearing the end of your own transmission.

       PREAMP The incoming signal will be amplified by the specified number of dB.  This  can  be
              used  as  a  last  measure if the input audio level can't be set high enough on the
              analogue side. A value of 6dB will double the signal level. Note  that  this  is  a
              digital  amplification.  Hence  it  will  reduce the dynamic range of the signal so
              usage should be avoided if possible. It's always better to correct the audio  level
              before sampling it.

       PEAK_METER
              This  is  a  help  to  adjust the incoming audio level. If enabled it will output a
              message when distortion occurs. To adjust the audio level, first open the  squelch.
              Then  increase  the  audio  level until warning messages are printed.  Decrease the
              audio level until no warning messages are printed. After the  adjustment  has  been
              done, the peak meter can be disabled. 0=disabled, 1=enabled.

       DTMF_DEC_TYPE
              Specify the DTMF decoder type. Set it to INTERNAL to use the internal software DTMF
              decoder. To use the S54S interface featuring a hardware DTMF  decoder,  set  it  to
              S54S.   To  control  it  over a pseudo tty device set it to PTY.  Setting it to PTY
              will install the PTY dtmf decoder. SvxLink creates a symlink linked to a slave  pty
              device  on runtime. The name has to be defined with DTMF_PTY.  If AFSK reception is
              enabled using OB_AFSK_ENABLE/IB_AFSK_ENABLE, remotely decoded DTMF  digits  may  be
              received by setting this configuration variable to AFSK.  NONE or commenting it out
              will disable DTMF detection.

       DTMF_MUTING
              Mute the audio during the time when a DTMF digit is being received. Note  that  the
              audio will be delayed like 40-75ms, depending on the DTMF decoder used, to give the
              decoder time to do its work.  This does not matter much on a simplex link but on  a
              repeater  it  could  be annoying since you will hear the last 40-75 milliseconds of
              your own  transmission.   To  counteract  the  added  delay  one  can  set  up  the
              SQL_TAIL_ELIM configuration variable to at least 40 milliseconds.  Legal values for
              DTMF_MUTING are 0=disabled, 1=enabled.

       DTMF_HANGTIME
              This configuration variable can be used  if  the  DTMF  decoder  is  too  quick  to
              indicate  digit  idle. That does not matter at high signal strengths but for weaker
              signals and mobile flutter it's not good at all. Each DTMF digit will  be  detected
              multiple  times.   Using  this configuration variable, the time (ms) a tone must be
              missing to be indicated as off can be extended. Setting this value  too  high  will
              cause  the  decoder  to  be a bit sluggish and it might consider two digits as one.
              The hang time only affect consecutive digits of the same value (e.g. 1  1).   If  a
              detected  digit differs from the previously detected digit (e.g 1 2), the hang time
              is immediately canceled and the detected digit is considered as a new one.  A  good
              default value is 50-100ms.

       DTMF_SERIAL
              When  using  an  external  hardware  DTMF  decoder  this config variable is used to
              specify a serial port (e.g. /dev/ttyS0).

       DTMF_PTY
              When using the PTY DTMF "decoder" this configuration variable will set the path  to
              the  PTY  slave  softlink  that the external interface script use to communicate to
              SvxLink. Over this softlink a very simple communication protocol is used to  notify
              SvxLink  about received DTMF digits: 0-9, A-F, *, #. "E" is the same as "*" and "F"
              is the same as "#". Sending a digit tell SvxLink when it starts.  To  tell  SvxLink
              that the digit has ended, send a space character.

              The  PTY  DTMF  "decoder"  can  be  used  by an external script to interface custom
              devices, modems or other hardware to SvxLink. Look for nhrcx.pl or  trx_pty_ctrl.py
              for an example.

              It  is  possible  to specify the same PTY for multiple functions (e.g. squelch, ptt
              etc) in both TX and RX configurations. This may be good  if  there  is  one  script
              handling all functions.

              Example: /tmp/rx1_dtmf.

       DTMF_MAX_FWD_TWIST
              DTMF  use two tones to encode digits 0-9, A-F. These two tones should normally have
              the sample amplitude. The difference in amplitude is called twist. Forward twist is
              when the higher frequency tone is lower in amplitude than the lower frequency tone.
              According to the standards, 8dB forward twist should be allowed.  Some transmitters
              do  not  correctly  modulate  the  DTMF  tones  to get zero twist.  The most common
              situation is that the forward twist is too  large.  Increasing  this  configuration
              variable  above  8dB  might allow DTMF from these transmitters to be detected. When
              doing this, the DTMF detector will be more sensitive to noise and might cause  more
              false triggers.

       DTMF_MAX_REV_TWIST
              DTMF  use two tones to encode digits 0-9, A-F. These two tones should normally have
              the sample amplitude. The difference in amplitude is called twist. Reverse twist is
              when the lower frequency tone is lower in amplitude than the higher frequency tone.
              According to the standards, 4dB reverse twist should be allowed  but  SvxLink  will
              allow  6dB  by  default.  The most common reason for getting reverse twist is a bad
              de-emphasis filter or that none at all is used, like  when  taking  audio  directly
              from  the  FM  discriminator.  Have a look at the DEEMPHASIS configuration variable
              before starting to modify this configuration variable.

       DTMF_DEBUG
              Set to 1 to continuously print software  DTMF  decoder  decision  parameters.  This
              should  only  be used for a short while to pinpoint problems with the DTMF decoding
              since it will print one row of  analysis  parameters  100  times  per  second.  The
              following parameters are printed.

              •   pwr - The power in the audio signal. Must be over about -50dB.

              •   q  -  Quality.  Should be close to 1.00 for a good detection.  If the signal is
                  strong but the value is low anyway, the signal probably is distorted  for  some
                  reason. The input audio level may be too high for example.

              •   twist  - The amplitude difference between the two tones.  Should be around 0dB,
                  which means the tones should ideally be  of  the  same  strength.  By  default,
                  values  between  -6dB  to +8dB are accepted but the thresholds can be set using
                  the DTMF_MAX_FWD_TWIST and DTMF_MAX_REV_TWIST configuration variables.

              •   rowq - Quality of the row (low group) tone. Should be close to one.

              •   colq - Quality of the column (high group) tone. Should be close to one.

              •   digit - The digit mapped to the two detected tones.

              •   row3rd - The row tone relation to its third overtone.  Should be close to zero.
                  If it's not, the signal is probably distorted.

              •   col3rd  -  The  column tone relation to its third overtone.  Should be close to
                  zero. If it's not, the signal is probably distorted.

              •   im - The relation of the two tones to their intermodulation product.  Should be
                  close to zero. If it's not, the signal is probably distorted.

       1750_MUTING
              Mute  the  audio during a call tone of 1750Hz is received. Note that the audio will
              be delayed 75ms to give the tone detector time to  do  its  work.   This  does  not
              matter much on a simplex link but on a repeater it could be annoying since you will
              hear the last 75 milliseconds of your own transmission.  To  counteract  the  added
              delay  one  can  set  up  the  SQL_TAIL_ELIM  configuration variable to at least 75
              milliseconds.  Legal values for 1750_MUTING are 0=disabled, 1=enabled.

       SEL5_TYPE
              Define here your selective tone call system. You have the choice of  the  following
              types:  ZVEI1, ZVEI2, ZVEI3, PZVEI, PDZVEI, DZVEI, CCITT, EEA, CCIR1, CCIR2, NATEL,
              EURO, VDEW, AUTO-A, MODAT, PCCIR and EIA. Only one system can be used at  the  same
              time. Please take into consideration that some Sel5 standards are using the same or
              similar tones so it may have some unwanted effects if you define ZVEI1 for  SvxLink
              and a (e.g.) ZVEI3 sequence is received.

       SEL5_DEC_TYPE
              At  the moment only SEL5_DEC_TYPE=INTERNAL is valid. Maybe we have support for some
              external tone detectors later. To disable SEL5 tone decoding, specify NONE or  just
              comment the configuration variable out.

       RAW_AUDIO_UDP_DEST
              Setting  this configuration variable makes it possible to stream the raw audio from
              the sound device to an UDP socket. The sample format is the one used internally  in
              SvxLink,  that is each sample is represented by a 32 bit float.  The sample rate is
              the same as the one chosen for the audio device.  The destination is  specified  as
              ip-address:port.

              Example: RAW_AUDIO_UDP_DEST=127.0.0.1:10000

       OB_AFSK_ENABLE
              Set  to  1  to  enable  reception  of metadata like signal level measurements, DTMF
              digits and tone detections via out-of-band  (OB)  AFSK.  The  out-of-band  AFSK  is
              transmitted  above the voice band so that it is possible to transmit AFSK bursts at
              the same time as someone is speaking. The AFSK bursts are filtered out  before  the
              audio  is  handed  on  to the next stage so normal users should never hear the AFSK
              bursts. The AFSK feature is  typically  used  on  a  remote  receiver  uplink.  The
              protocol  used  is  SvxLink  specific. Data is transmitted in 300Bd with a shift of
              170Hz and a  center  frequency  of  5500Hz.  The  RemoteTrx  application  have  the
              capability to transmit this protocol.

       OB_AFSK_VOICE_GAIN
              To  be  able  to  send  both voice and AFSK at the same time it may be necessary to
              lower the level of the voice audio as to not overdrive  the  transmitter.  This  is
              compensated in the link receiver by amplifying the voice audio back to its original
              level. This configuration variable should thus be set to the negated value  of  the
              same  configuration  variable  in  the  transmitter  section  of  the  transmitting
              RemoteTrx. If it's set to -6dB in the transmitter configuration it should be set to
              6dB here.

       IB_AFSK_ENABLE
              Set  to  1  to  enable reception of an initial signal level measurement via in-band
              (IB) AFSK. This is used in cooperation with the out-of-band AFSK feature to quickly
              transfer  a signal level measurement to get the squelch opened. The in-band AFSK is
              transmitted in the voice band and can thus use the higher baudrate of 1200Bd. Since
              it's  only  transmitted  when  the squelch is closed the end user will not hear the
              AFSK burst. The AFSK feature is typically used on a  remote  receiver  uplink.  The
              protocol  used  is  SvxLink specific. Data is transmitted in 1200Bd with a shift of
              1000Hz and a center frequency  of  1700Hz.   The  RemoteTrx  application  have  the
              capability to transmit this protocol.

       CTRL_PTY
              Set  this  configuration  variable  to  the  path of a PTY to use for controlling a
              receivers frequency and modulation. This can be used to  interface  a  receiver  to
              SvxLink  using  a  translation  script,  like  trx_pty_ctrl.py.  To set the receive
              frequency, SvxLink will send the sequence "f<frequency>;". The frequency will be in
              Hz, e.g. f145550000; will be sent to set the receiver to 145.550MHz.

              To set the modulation the command is "m<modulation>;". Look at the documentation of
              the MODULATION configuration variable to see which modulations that are  available.
              To set "normal" 25kHz channel spaced FM the command would be mFM;.

              It  is  possible  to specify the same PTY for multiple functions (e.g. squelch, ptt
              etc) in both TX and RX configurations. This may be good  if  there  is  one  script
              handling all functions.

       LADSPA_PLUGINS
              Used  to  set  up  one  or  more  LADSPA plugins to process the received audio. The
              processing chain is applied just before the final  stages  of  the  receiver  audio
              processing and will only affect how the audio sounds. Any digital signal processing
              done on the audio before that, like DTMF, CTCSS etc, is unaffected.

              LADSPA is a framework for sharing pluggable audio components and there are numerous
              plugins  to  choose  from.  Each  plugin  has  a  name  ("label")  and zero or more
              configuration parameters ("control input ports"). To find  out  which  plugins  are
              installed  on  your  system, use the "listplugins" command. If you are missing some
              plugin it may be available to  install  using  your  package  system  (rpm/yum/dnf,
              deb/apt  etc). To find out more information about a plugin, use the "analyseplugin"
              command (e.g. analyseplugin filter hpf). Learn more about the LADSPA  framework  in
              their official documentation.

              In  SvxLink only plugins that have exactly one audio input and one audio output can
              be used, so all stereo plugins are excluded for example.  The same thing  is  valid
              for input-only or output-only plugins.

              The  analyseplugin utility will, among other things, list the ports. All ports that
              are typed as "input, control" can be used to configure the plugin. Valid range  and
              a default value may also be listed. The format for the LADSPA_PLUGINS configuration
              variable                     in                     SvxLink                      is
              "label1:port1:port2:...:portN,label2:port1:port2:...:portN,...".   Note  that  only
              control  input  ports  are  counted  here  so  when  applying  the  parameters  any
              intermingled ports of other types are skipped.

              Example: LADSPA_PLUGINS=hpf:1000,tap_dynamics_m:4:500:15:15:13

   Ddr Receiver Section
       A  special  kind  of local receiver is the Digital Drop Receiver (DDR). It will use either
       the rtl_tcp utility or a direct USB connection to interface to a RTL2832U based DVB-T  USB
       dongle  and use that as a wide-band receiver. These USB dongles can be bought cheaply from
       an Internet shop (~$10). The radio performance may not be great but better than one  might
       think. Usage as a cheap local coverage receiver or as a link receiver may work very well.

       One  big  advantage  of  using a wide-band receiver is that it is possible to monitor more
       than one narrow band channel at a time. The only limit is the CPU power and the  bandwidth
       of the wide-band tuner. You probably need a Pentium4 or better to fulfill the CPU demands.

       Getting the DVB-T dongle running is out of scope for this document but what you absolutely
       need to do is to find out the frequency error on  your  specific  dongle.  When  you  have
       figured  out what the frequency error is, set up the FQ_CORR configuration variable in the
       wide-band receiver configuration section.

       The rtl_tcp utility is in a package named similar to something  like  rtl-sdr.   When  you
       have  the  rtl-sdr  stuff  installed,  just  start  rtl_tcp. No command line arguments are
       needed. Then configure a Ddr receiver in SvxLink. All  configuration  variables  that  are
       available  for an ordinary local receiver is also available for a Ddr receiver, except the
       audio device related ones which are just ignored. The  following  configuration  variables
       are available in addition to the ordinary ones.

       FQ     The narrow-band channel frequency to tune to.

       MODULATION
              The modulation used on the channel. Legal values are: "FM" (two-way radio frequency
              modulation), "NBFM" (two-way radio narrow frequency modulation), "WBFM"  (broadcast
              wide-band  frequency modulation), "AM" (two-way radio amplitude modulation), "NBAM"
              (two-way radio narrow band amplitude modulation),  "USB"  (Upper  Sideband),  "LSB"
              (Lower Sideband), "CW" (Continuous Wave, e.g. Morse), "WBCW" (CW wide).

       WBRX   The  configuration  section for the wide-band receiver to connect this DDR to.  See
              "wide-band Receiver Section" below.

       SIGLEV_DET
              For a Ddr there also is a special signal level detector available, DDR,  that  will
              measure  the  RF  power  before  demodulation.  This  is  much  more  reliable than
              estimating the signal power through the audio which is normally  done  in  SvxLink.
              The  drawback  is  that  the  Ddr  signal level is not completely comparable to the
              ordinary SvxLink signal level measurements since it have a  larger  dynamic  range.
              Set SIGLEV_DET=DDR to activate the Ddr signal level detector.

   Wide-band Receiver Section
       A wide-band receiver section is used to configure access to a wide-band receiver which can
       be used by a Digital Drop Receiver (DDR), described above, to handle multiple  narrow-band
       channels  using  the  same hardware. The only hardware supported at the moment is RTL2832U
       based DVB-T USB dongles. SvxLink access the dongle directly via USB or through the rtl_tcp
       utility,   which  make  the  dongle  available  on  a  TCP  network  port.  The  following
       configuration variables are available:

       TYPE   The type of wide-band receiver used.  The  only  supported  values  right  now  are
              "RtlTcp" and "RtlUsb".

       DEV_MATCH
              When  using RtlUsb, this configuration variable is used to select the dongle to use
              if there are multiple dongles connected to the computer. When looking for  dongles,
              SvxLink  will  try  to  match  the  string  given in this configuration variable in
              different ways. First, if it's a digit, a match against the device index is  tried.
              The device index is just a number, zero and up, that is given to a dongle when it's
              inserted.

              If the device index does not match, a match against the beginning, end or the whole
              serial number will be tried.

              Default: 0 (first device found)

       HOST   The name of the host that the rtl_tcp utility is running on (Default: localhost).

       PORT   The TCP port that rtl_tcp is listening on (Default: 1234).

       SAMPLE_RATE
              The  sample  rate used by the dongle. Legal values are 960000 and 2400000 (Default:
              960000).

       FQ_CORR
              This is probably the most important configuration variable. Most  dongles  are  far
              off  in frequency so they need to be calibrated. Calibrating the dongle can be done
              in multiple ways. The recommended  way  is  to  use  the  devcal  utility  that  is
              distributed  along  with  SvxLink.  The  calibration  procedure is described in the
              devcal (1) manual page.

              The end result should be a correction value for  how  far  off  the  dongle  is  in
              frequency  counted  in parts per million (PPM). That is, how many Hz per MHz is the
              tuner off by. Typical values are in the range -100 to 100.

       CENTER_FQ
              The frequency,  in  Hz,  that  the  wide-band  tuner  should  be  placed  at.  This
              configuration  variable  should  normally  be  left unset since SvxLink will try to
              place the wide-band tuner to cover all set up Ddr frequencies.  SvxLink  will  also
              try  to avoid placing a Ddr on the center frequency of the wide-band spectrum since
              there is usually some noise there. Only use this configuration variable if you need
              to override the automatic placement for some reason.

       XVRTR_OFFSET
              If  a  transverter is used, this configuration variable can be set to the frequency
              offset that the transverter introduce. The frequency set here will be added to  the
              center frequency of the wide-band receiver.

       GAIN   If  unset,  automatic  gain is used. Do not use automatic gain control if using the
              DDR signal level detector. That may mess up the measurements. Finding a  good  gain
              setting may be hard. Too little and you will not hear the signals you want to hear.
              Too much and the tuner will be driven  into  distortion.  One  way  to  decide  the
              maximum  usable  gain  is to use the PEAK_METER explained below.  When there are no
              distortion warning messages printed or just a single one  now  and  then  you  have
              found  the  max  gain.  You  should  probably back at least one step down from this
              value. If the signals you want to receive are very strong, set the gain as  low  as
              possible.

              What  gain  values  that  are  available is tuner dependent. SvxLink will print the
              available gain values when it establishes the  connection  to  the  tuner.  Typical
              values are in the range -10 to 50dB.

       PEAK_METER
              If PEAK_METER is set to 1, a warning will be printed every time the tuner is driven
              into distortion. If it happens too often the gain should be lowered.  At most,  one
              warning per second will be printed.

   LocalSim Receiver Section
       A  simulated  local  receiver  can be used to debug problems in the SvxLink software.  The
       only thing that this very simple simulator does is to play a tone. The generated tone  can
       be controlled using some configuration variables.

       SIM_WAVEFORM
              Set the waveform to use; SIN=sine wave, SQUARE=square wave.

       SIM_TONE_FQ
              Set the frequency of the tone in Hz.

       SIM_TONE_PWR
              Set the tone power in dB. 0dB corresponds to the power in a full-scale sine wave.

   Voter Section
       Receiver  type "Voter" is a "receiver" that combines multiple receivers and selects one of
       them to take audio from when the squelch opens. Which receiver to use is selected directly
       after squelch open. It is possible to set up a voting delay which will make the voter wait
       a while before choosing which RX to use.  This will give all receivers some time to report
       their  signal strengths.  After the initial choice have been made a periodic check is done
       to see if any  of  the  other  receivers  receive  a  stronger  signal.   In  the  default
       configuration file there is a voter section called Voter.

       TYPE   Always "Voter" for a voter.

       RECEIVERS
              Specify  a comma separated list of receivers that the voter should use.  Optionally
              the receiver name may be followed by a colon and a squelch delay value. This can be
              used  to  adjust  the voting delay for receivers that always are slower to open for
              some reason. The delay value given will be subtracted from the voting delay if  the
              receiver is the first one to open.

              The  usage  of  the  delay value is best illustrated with an example.  Let's say we
              have three receivers where two of the receivers take at most 100ms to report signal
              level  and  one  receiver  requires  300ms. We then need to set the VOTING_DELAY to
              something like 350ms so as to be sure that all receivers get  a  chance  to  report
              their  signal  level  measurement.  If only the slow receiver opens there will be a
              total delay of 300+350=650ms. This  is  unnecessarily  long  since  the  other  two
              receivers should have reported their signal strength way earlier. It's thus safe to
              shorten  the   voting   delay   for   the   slow   receiver,   so   we   do   this:
              RECEIVERS=FastRx1,FastRx2,SlowRx:200.  The  total  squelch  open  delay will now be
              100+350=450ms for the fast receivers and 300+350-200=450ms for the  slow  receiver.
              That is, all receivers are now equally fast.

              Example: RECEIVERS=Rx1,Rx2:200,Rx3

       VOTING_DELAY
              Specify  the delay in milliseconds that the voter will wait after the first squelch
              open detection until the decision of which receiver to use is made. This time  must
              be  set sufficiently high to allow all receivers to calculate and report the signal
              level. Incoming audio and DTMF digits will be buffered for all receivers during the
              delay  time  so  nothing  will be lost, but of course the audio will be delayed the
              specified amount of time. This is most noticeable when using a repeater logic.  Use
              the  BUFFER_LENGTH configuration variable to adjust the buffer length.  The default
              voting delay is 0.

       BUFFER_LENGTH
              Use this configuration variable to adjust the length of the  voting  delay  buffer.
              If  not  specified,  the  buffer  length will be the same as the voting delay. When
              using the voter with a repeater logic, try to keep this variable at 0 to reduce the
              latency.  Only  increase  it  if  you  feel  audio  is  lost  in  the  beginning of
              transmissions.

       REVOTE_INTERVAL
              This is the interval time in milliseconds  with  which  the  voter  will  check  if
              another  receiver  is  receiving a stronger signal. If that is the case, a receiver
              switch will be initiated.  Default is 1000 milliseconds.

       HYSTERESIS
              The hysteresis setting will prevent the voter from switching back and forth between
              two  receivers  that are equal in signal strength. For a switch to occur, the other
              receivers signal strength must exceed the current receivers signal strength by  the
              percent  specified  in  this configuration variable. So if the hysteresis is set to
              50% and the received signal strength on  the  current  receiver  is  40,  a  signal
              strength  of  40*1.5=60  is  required  on another receiver to initiate a switch. At
              squelch open, if the received signal strength plus hysteresis is larger  than  100,
              the voting delay will be skipped.  The default hysteresis is 50 percent.

       RX_SWITCH_DELAY
              When  a  receiver  switch  is  initiated  by  the voter, it will wait the number of
              milliseconds specified in this configuration variable  before  actually  performing
              the  switch.  The  switch will only occur if the other receivers signal strength is
              still higher.  Default is 500 milliseconds.

       SQL_CLOSE_REVOTE_DELAY
              The voter will wait the number of milliseconds specified in  this  config  variable
              after  a squelch close before voting in another receiver. There are two reasons for
              using this delay. The first is to prevent the voter  from  going  into  idle  state
              immediately  when  the squelch close for a fluttery signal. If it goes to idle, the
              procedure with voting delay may cause longer dropouts than necessary.   The  second
              reason  to  use  this config variable is if different receivers have different hang
              times (explicitly or implicitly). If both a slow and fast receiver is receiving the
              same signal and the faster is currently chosen, when the PTT is released the slower
              receiver will be voted before closing.  This will cause a double squelch  tail  and
              double roger beep.  Default is 500 milliseconds.

       COMMAND_PTY
              Specify  the path to a PTY that can be used to control the voter from the operating
              system. Available commands:

              •   ENABLE rx_name - Enable the given receiver

              •   MUTE rx_name - Mute the given receiver

              •   DISABLE rx_name - Disable the given receiver

              The difference between MUTE and DISABLE is that in the mute state only the  content
              (audio,  dtmf,  selcall  tone  detectors  etc)  is  muted but the receiver is still
              operational. That is probably only useful if also setting VERBOSE=1 so that squelch
              open/close  can  be  monitored  in the log. That may be useful if a new receiver is
              connected to the system which you want to monitor for a  while  without  having  it
              actually  participate in the voting. It may also be of use if a receiver misbehaves
              in which case it can be monitored until it stops misbehaving.

              Commands can be issued using a simple echo command from the  shell.  Example:  echo
              "DISABLE Rx1" >/dev/shm/voter_ctrl

       VERBOSE
              Set  this  to 1 to enable verbose mode. In verbose mode the squelch state events of
              the satellite receivers will be printed. This can be used  for  fine  tuning  voter
              timing parameters. Default: 0 (disabled)

   Networked Receiver Section
       A networked receiver section is used to specify the configuration for a receiver connected
       through a TCP/IP network. In the default configuration file there is a networked  receiver
       configuration  section  called NetRx.  The section name could be anything. It should match
       the RX configuration variable in the logic core where the receiver  is  to  be  used.  The
       available  configuration variables are described below. How to use a networked receiver is
       further described in the remotetrx(1) manual page.

       TYPE   Always "Net" for a networked receiver.

       HOST   The hostname or IP address of the remote receiver host.

       TCP_PORT
              The TCP port that RemoteTrx listen on. The default is 5210.

       LOG_DISCONNECTS_ONCE
              Set this configuration variable to 1 to suppress  logging  of  multiple  disconnect
              messages  in  a  row,  like  when  there is no RemoteTrx running on the other side.
              Thus, failed reconnect attempts will not be logged at all. This may be of use if  a
              RemoteTrx  is  missing  for a long time or if it's only used from time to time. The
              default is 0 which means that all reconnect attempts will be logged.

       AUTH_KEY
              This is the authentication key (password)  to  use  to  connect  to  the  RemoteTrx
              server.  The  same  key have to be specified in the RemoteTrx configuration.  If no
              key is specified in the RemoteTrx config, the login will be unauthenticated. A good
              authentication key should be 20 characters long.  If the same RemoteTrx is used for
              both RX and TX, the same key must be specified in the RX  as  well  as  in  the  TX
              configuration section.  The key will never be transmitted over the network. A HMAC-
              SHA1 challenge-response procedure will be used for authentication.

       CODEC  The audio  codec  to  use  when  transferring  audio  from  this  remote  receiver.
              Available   codecs  are:  RAW  (512kbps),  S16  (256kbps),  GSM  (13.2kbps),  SPEEX
              (8-25kbps), OPUS (8-64kbps). These are raw bit-rate  values.  There  will  be  some
              overhead  added  to this so the real bit-rates on the wire are a little bit higher.
              The OPUS codec is the most modern one and it also have the best quality for a given
              bit-rate.

       SPEEX_ENC_FRAMES_PER_PACKET
              Speex  encoder  setting.  Each Speex frame contains 20ms audio. If using a low bit-
              rate configuration, the network overhead will be quite noticeable if  sending  each
              frame  in  its own packet. One way to lower the overhead is to send multiple frames
              in each network packet. The drawback with doing this is that you get more delay. If
              setting  this  option  to  something  like  4  (default),  the  delay will be about
              4x20=80ms.

       SPEEX_ENC_QUALITY
              Speex encoder setting. Specify the encoder quality using  a  number  between  0-10.
              Lower values give poorer quality and lower bit-rates.

       SPEEX_ENC_BITRATE
              Speex  encoder setting. Specify the bit-rate to use. Speex will snap to the nearest
              lower possible bit-rate. Possible values range from 2150 to 24600 bps.  You  should
              probably not specify quality at the same time as bit-rate. Not sure though...

       SPEEX_ENC_COMPLEXITY
              Speex encoder setting. The complexity setting (0-10) tells the encoder how much CPU
              time it should spend on doing a good job. The difference in SNR between the  lowest
              and  highest value is about 2dB. Set it as high as possible without overloading the
              CPU on the encoding computer (check CPU usage using command "top").

       SPEEX_ENC_VBR
              Speex encoder setting. Enable (1) or disable (0)  variable  bit-rate  encoding.  If
              enabled, the encoder will try to keep a constant quality by increasing the bit-rate
              when needed.

       SPEEX_ENC_VBR_QUALITY
              Speex encoder setting. The quality (0-10) to use in variable bit-rate mode.

       SPEEX_ENC_ABR
              Speex encoder setting. The average bit-rate encoding will try to keep a target bit-
              rate by continuously adjusting the quality. This configuration variable specify the
              target bit-rate and enable ABR. It also need to have VBR enabled so don't force  it
              to off.

       SPEEX_DEC_ENHANCER
              Speex  decoder  setting.  Enable  (1) or disable (0) the perceptual enhancer in the
              decoder.  Perceptual enhancement is a part of the decoder which,  when  turned  on,
              attempts  to  reduce  the  perception  of  the  noise/distortion  produced  by  the
              encoding/decoding process. In most cases, perceptual enhancement brings  the  sound
              further  from  the original objectively (e.g. considering only SNR), but in the end
              it still sounds better (subjective improvement).

       OPUS_ENC_FRAME_SIZE
              Opus encoder setting. Specify how large, in milliseconds, each audio packet  should
              be. Default: 20ms.

       OPUS_ENC_COMPLEXITY
              Opus  encoder setting. The complexity setting (0-10) tells the encoder how much CPU
              time it should spend on doing a good job.  Set  it  as  high  as  possible  without
              overloading the CPU on the encoding computer (check CPU usage using command "top").
              Default: 10.

       OPUS_ENC_BITRATE
              Opus encoder setting. This is the bit-rate that the encoder will encode for.  Rates
              from  about  8000  to 64000 bits per second are meaningful but the codec can handle
              from like 2500 to 512000 bps. Default: 20000bps.

       OPUS_ENC_VBR
              Opus encoder setting. Enable (1) or disable  (0)  variable  bit-rate  encoding.  If
              enabled, the encoder will try to keep a constant quality by increasing the bit-rate
              when needed and decrease it when the quality can be assured with a lower  bit-rate.
              The target average bit-rate is the one set by OPUS_ENC_BITRATE.  Default: 1.

   Local Transmitter Section
       A  local transmitter section is used to specify the configuration for a local transmitter.
       In the default configuration file there  is  a  configuration  section  called  Tx1.   The
       section name could be anything. It should match the TX configuration variable in the logic
       core where the transmitter is to  be  used.  The  available  configuration  variables  are
       described below.

       TYPE   Always "Local" for a local transmitter.

       TX_ID  A  single  character  ident  for  this transmitter. It is for example used in state
              events published by transmitters through a STATE_PTY or other state event consumers
              within SvxLink.

       AUDIO_DEV
              Specify  the  audio device to use. Normally alsa:plughw:0. Have a look at the AUDIO
              DEVICE SPECIFICATIONS chapter for more information.

       AUDIO_CHANNEL
              Specify the audio channel to use. SvxLink can use the left/right stereo channels as
              two mono channels. Legal values are 0 or 1.

       AUDIO_DEV_KEEP_OPEN
              The  normal  behaviour for SvxLink is to open an audio device when needed and close
              it when it does not have to be open  anymore.  This  may  cause  problems  in  some
              applications  or  with some sound hardware. Set this variable to 1 to force SvxLink
              to keep the audio device open from application start to exit.

       LIMITER_THRESH
              Set the threshold, in dBFS, for the audio limiter. The audio limiter  really  is  a
              compressor  with  a  very steep compression ratio like 10:1. The limiter is used to
              help keeping down the audio level to  not  overmodulate  the  transmitter.   For  a
              properly  calibrated SvxLink node max FM deviation is -6dBFS. A good value to start
              with for this parameter is then -6 but try to lower it further (like -9 to -12)  if
              it does not affect audio quality negatively.

       PTT_TYPE
              Use this configuration variable to specify which type of hardware to use to control
              the PTT.   Specify  "SerialPin"  for  using  a  pin  in  the  serial  port,  "GPIO"
              (sysfs=deprecated)/"GPIOD" to use a pin in a GPIO port, "PTY" if you want to use an
              external interface script via a pseudo tty port or "Hidraw" to use the linux/hidraw
              driver to support hidraw devices like CM108 sound card, e.g.  URI device from DMK.

              Set  PTT_TYPE  to  "Dummy"  or  "NONE" to not use any PTT hardware at all. It is an
              error to not specify PTT_TYPE.

              Use PTT_PIN to specify the pin to use for "SerialPin" or "GPIO",

              Use PTT_GPIOD_LINE and PTT_GPIOD_CHIP to specify the GPIO pin to use for "GPIOD".

       PTT_PORT
              Specify the serial port that the PTT is connected to. E.g. /dev/ttyS0 for COM1.

       PTT_PIN
              If PTT_TYPE is set to "SerialPin", specify the pin(s) in the serial port  that  the
              PTT  is  connected to. It is possible to specify one or two serial port pins.  Some
              interface boards require that you specify two pins since one pin does  not  provide
              enough  drive  power  to  the  circuit.  A  "!"  in front of the pin name indicates
              inverted operation. Some of the possible values are RTS, DTRRTS, !DTR!RTS  or  even
              DTR!RTS.

              If  GPIO was specified in PTT_TYPE, set the PTT_PIN config variable to the pin name
              of the GPIO-pin to use. The most common name is  gpio<number>,  like  gpio3.   Some
              GPIO drivers use more complex pin names like gpio33_pe11.  Have a look at the USING
              GPIO section for information on how to set up the operating system.  Normally,  the
              pin will be active high but if the pin name is prefixed with an exclamation mark it
              will be active low instead. For some hardware platforms you may need  to  also  set
              the GPIO_PATH configuration variable.

       GPIO_PATH
              Use  this  configuration  variable  to  set the path to the sys control devices for
              GPIO.  This normally is /sys/class/gpio but on some hardware, like the  Orange  Pi,
              the path is /sys/class/gpio_sw.

       PTT_GPIOD_CHIP
              The GPIO chip to use for PTT. The application tries to figure out whether the value
              is the path to the GPIO chip, its name, label or number.

              Example: PTT_GPIOD_CHIP=gpiochip0

       PTT_GPIOD_LINE
              If GPIOD was specified in PTT_TYPE, set this config variable to the gpiod  line  of
              the  GPIO  pin  to  use.  If a number is specified it is assumed to be the GPIO pin
              offset within the chip. If a pin name is specified SvxLink will try to find  a  pin
              with that name within the chip.

              Normally, the pin will be active high but if the pin specification is prefixed with
              an exclamation mark it will be active low instead.

              For  some  hardware  platforms  you  may  need  to  also  set  the   PTT_GPIOD_CHIP
              configuration variable, if the pin you want to use is not on the default GPIO chip.

              Example: PTT_GPIOD_LINE=17

       PTT_PTY
              If  PTT_TYPE  is set to "PTY" this configuration variable will set the path for the
              PTY slave softlink that is used by the external script to communicate to SvxLink.

              SvxLink sends a 'T' to start transmitting and a 'R' to turn  the  transmitter  off.
              This can be used by an external script to interface custom devices, modems or other
              hardware to SvxLink.  Look for nhrcx.pl to see an example.

              It is possible to specify the same PTY for multiple functions (e.g.  squelch,  DTMF
              etc)  in  both  TX  and  RX configurations. This may be good if there is one script
              handling all functions.

       HID_DEVICE
              Define the device node where your hidraw device is accessible at.

              Example: HID_DEVICE=/dev/hidraw3

       HID_PTT_PIN
              Define the pin  your  ptt  control  is  connected  to.  Valid  parameters  are  are
              GPIO1,GPIO2,GPIO3,GPIO4.  Note  that  some sound cards like SSS1621 may not support
              GPIO3 and GPIO4! You can invert the behavior with a "!" in front of the name.  Only
              one value is supported.

       SERIAL_SET_PINS
              Set  the  specified serial port pins to a static state. This can be good if using a
              pin for reference voltage or if a pin  have  to  be  in  a  certain  state  to  not
              interfere  with  the  operation  of  some  equipment.  There  are two pins that are
              possible to use, RTS and DTR. If prefixed with an exclamation  mark  (!),  the  pin
              will  be cleared and if not it will be set. This configuration variable can only be
              used when PTT_TYPE is set to "SerialPin".

              Example: SERIAL_SET_PINS=RTS!DTR will set RTS and clear DTR.

       PTT_HANGTIME
              Use this configuration variable to set a PTT hangtime. This can be good to have  on
              a  transmitter  in  combination  with using a tone squelch. When the transmitter is
              ordered to stop transmitting, the tone  is  immediately  turned  off,  causing  the
              squelch  to close on the other side. Since the transmitter keeps transmitting for a
              while, no squelch tail will be heard.

              Another use is on a remote receiver link  transmitter  where  you  don't  want  the
              transmitter  to  turn  on and off between transmissions or if the squelch close and
              open quickly due to for example mobile flutter.

       TIMEOUT
              This  is  a  feature  that  will  prevent  the  transmitter  from   getting   stuck
              transmitting.   Specify the number of seconds before the transmitter is turned off.
              Note that this is a low level security mechanism that is meant to only kick  in  if
              there  is a software bug in SvxLink. Just so that the transmitter will not transmit
              indefinitely. It is not meant to be used to keep people from talking too long.

       TX_DELAY
              The number of milliseconds (0-1000) to wait after the transmitter has  been  turned
              on  until  audio  is starting to be transmitted. This can be used to compensate for
              slow TX reaction or remote stations with slow reacting squelches.

       CTCSS_FQ
              The frequency in Hz of the CTCSS tone  to  transmit.  It  is  possible  to  specify
              fractions  using  "." as decimal comma (e.g. 136.5). For the tone to be transmitted
              the CTCSS_LEVEL variable must also be setup and also the TX_CTCSS variable  in  the
              logic core configuration section.

       CTCSS_LEVEL
              The  level in dBFS of the CTCSS tone to transmit. A value of 0 is the highest level
              and lower (negative) values give a  lower  level.  What  level  to  set  depend  on
              multiple   factors   like   the   audio   calibration  settings  and  the  low-pass
              characteristics of the hardware. Assuming an ideal audio  path  with  a  completely
              flat  frequency  response  over  the  whole  audio  spectrum,  including  the CTCSS
              frequency band, and  a  standard  audio  calibration  where  maximum  FM  deviation
              corresponds to -6 dBFS, the following applies.

              The  FM  deviation of the CTCSS tone should be in between 500-800 Hz if using an FM
              channel with a maximum deviation of 5 kHz. Given that you can  calculate  what  the
              level in dBFS should be:

                Llow  = 20 * log10(500/5000) - 6 = -26
                Lmid  = 20 * log10(650/5000) - 6 = -24
                Lhigh = 20 * log10(800/5000) - 6 = -22

              The  default  in  the configuration file is -24. For the tone to be transmitted the
              CTCSS_FQ variable must also be set up and also the TX_CTCSS variable in  the  logic
              core configuration section.

       PREEMPHASIS
              Enable this feature if you are modulating the FM modulator directly, like through a
              9k6 packet radio input. If no preemphasis filter is applied to the audio,  it  will
              sound  very  dark  when  received.  If  you  modulate  the  transmitter through the
              microphone input the radio will apply a preemphasis filter so this  feature  should
              be disabled. 0=disabled, 1=enabled.

       DTMF_TONE_LENGTH
              The  duration,  in  milliseconds,  of  DTMF digits transmitted on this transmitter.
              100ms is the default.

       DTMF_TONE_SPACING
              The spacing, in milliseconds, between DTMF digits transmitted on this  transmitter.
              50ms is the default.

       DTMF_DIGIT_PWR
              The power, in dB, of DTMF digits transmitted on this transmitter. Zero dB will give
              the same power in the generated signal as there is in  a  maximum  amplitude  (full
              scale) sine wave. -15dB is the default.

       TONE_SIGLEV_MAP
              It  is  possible to transmit one of ten tones along with the normal transmission to
              indicate a signal strength value to the receiver. This is of most use when using  a
              local  transmitter as a link transmitter in a RemoteTrx. It is not implemented, and
              probably not useful, in SvxLink Server. Another requirement  is  that  SvxLink  has
              been compiled in 16kHz mode. Otherwise this feature is disabled.

              The  TONE_SIGLEV_MAP  configuration  variable  is used to map tones to signal level
              values. It is a comma separated list of exactly ten values in the 0  -  100  range.
              The  first  value  map to the 5500Hz tone, the second to the 5600Hz tone and so on.
              The last value map to the 6400Hz tone.  What levels the tones should be  mapped  to
              depends  on  the  tone  receiver  implementation.  Typically,  if  using  a SvxLink
              application as a receiver, the  TONE_SIGLEV_MAP  should  be  the  same  in  the  RX
              configuration for that node.

       TONE_SIGLEV_LEVEL
              It  is  possible to transmit one of ten tones along with the normal transmission to
              indicate a signal strength value to the receiver. This is of most use when using  a
              local  transmitter as a link transmitter in a RemoteTrx. It is not implemented, and
              probably not useful, in SvxLink Server. Another requirement  is  that  SvxLink  has
              been compiled in 16kHz mode. Otherwise this feature is disabled.

              The  TONE_SIGLEV_LEVEL configuration variable is used to set the tone level.  It is
              a value in the 1-100 range which indicate  the  output  level  in  percent  of  the
              maximum possible level. The default is 10.

       MASTER_GAIN
              This configuration variable can be used to fine tune or increase the audio gain for
              all transmitted sound if it's not possible  to  do  using  the  normal  sound  card
              hardware gain controls. The gain should be given in dB and can be both positive and
              negative.

       OB_AFSK_ENABLE
              Set to 1 to enable transmission of metadata like signal  level  measurements,  DTMF
              digits  and  tone  detections  via  out-of-band  (OB) AFSK. The out-of-band AFSK is
              transmitted above the voice band so that it is possible to transmit AFSK bursts  at
              the  same  time as someone is speaking. The AFSK bursts are filtered out before the
              audio is handed on to the next stage so normal users should  never  hear  the  AFSK
              bursts.  The  AFSK  feature  is  typically  used  on  a remote receiver uplink. The
              protocol used is SvxLink specific. Data is transmitted in 300Bd  with  a  shift  of
              170Hz  and  a  center  frequency  of  5500Hz.  The  RemoteTrx  application have the
              capability to transmit this protocol.

       OB_AFSK_VOICE_GAIN
              To be able to send both voice and AFSK at the same time  it  may  be  necessary  to
              lower  the  level  of  the voice audio as to not overdrive the transmitter. This is
              compensated in the link receiver by amplifying the voice audio back to its original
              level.  This  configuration variable should thus be set to the negated value of the
              same configuration variable in the receiver section of the receiving node. If  it's
              set to 6dB in the receiver configuration it should be set to -6dB here.

       OB_AFSK_LEVEL
              The out-of-band AFSK modulation level in dBFS (dB full scale). Default is -6dB.

       OB_AFSK_TX_DELAY
              The  number  of milliseconds to send AFSK flag bytes before sending the actual data
              when transmitting an out-of-band packet.

       IB_AFSK_ENABLE
              Set to 1 to enable transmission of an initial signal level measurement via  in-band
              (IB) AFSK. This is used in cooperation with the out-of-band AFSK feature to quickly
              transfer a signal level measurement to get the squelch opened. The in-band AFSK  is
              transmitted in the voice band and can thus use the higher baudrate of 1200Bd. Since
              it's only transmitted when the squelch is closed the end user  will  not  hear  the
              AFSK  burst.  The  AFSK  feature is typically used on a remote receiver uplink. The
              protocol used is SvxLink specific. Data is transmitted in 1200Bd with  a  shift  of
              1000Hz  and  a  center  frequency  of  1700Hz.   The RemoteTrx application have the
              capability to transmit this protocol.

       IB_AFSK_LEVEL
              The in-band AFSK modulation level in dBFS (dB full scale). Default is -6dB.

       IB_AFSK_TX_DELAY
              The number of milliseconds to send AFSK flag bytes before sending the  actual  data
              when transmitting an in-band packet.

       CTRL_PTY
              Set  this  configuration  variable  to  the  path of a PTY to use for controlling a
              transmitters frequency and modulation. This can be used to interface a  transmitter
              to  SvxLink  using  a translation script, like trx_pty_ctrl.py. To set the transmit
              frequency, SvxLink will send the sequence "F<frequency>;". The frequency will be in
              Hz, e.g. F145550000; will be sent to set the receiver to 145.550MHz.

              To set the modulation the command is "M<modulation>;". Look at the documentation of
              the MODULATION configuration variable to see which modulations  are  available.  To
              set "normal" 25kHz channel spaced FM the command would be MFM;.

              It  is  possible  to specify the same PTY for multiple functions (e.g. squelch, ptt
              etc) in both TX and RX configurations. This may be good  if  there  is  one  script
              handling all functions.

   Networked Transmitter Section
       A  networked  transmitter  section  is used to specify the configuration for a transmitter
       connected through a TCP/IP network. In the default configuration file there is a networked
       transceiver  configuration  section  called NetTx.  The section name could be anything. It
       should match the TX configuration variable in the logic core where the transmitter  is  to
       be used. The available configuration variables are described below. How to use a networked
       transmitter is further described in the remotetrx(1) manual page.

       TYPE   Always "Net" for a networked transmitter.

       TX_ID  A single character ident for this transmitter. It is  for  example  used  in  state
              events published by transmitters through a STATE_PTY or other state event consumers
              within SvxLink. SvxLink cannot at this moment get the  TX  ident  from  the  remote
              transmitter so it must be specified here.

       HOST   The hostname or IP address of the remote transmitter host.

       TCP_PORT
              The TCP port that RemoteTrx listen on. The default is 5210.

       LOG_DISCONNECTS_ONCE
              Set  this  configuration  variable  to 1 to suppress logging of multiple disconnect
              messages in a row, like when there is no  RemoteTrx  running  on  the  other  side.
              Thus,  failed reconnect attempts will not be logged at all. This may be of use if a
              RemoteTrx is missing for a long time or if it's only used from time  to  time.  The
              default is 0 which means that all reconnect attempts will be logged.

       AUTH_KEY
              This  is  the  authentication  key  (password)  to  use to connect to the RemoteTrx
              server. The same key have to be specified in the RemoteTrx  configuration.   If  no
              key is specified in the RemoteTrx config, the login will be unauthenticated. A good
              authentication key should be 20 characters long.  If the same RemoteTrx is used for
              both  RX  and  TX,  the  same  key must be specified in the RX as well as in the TX
              configuration section.  The key will never be transmitted over the network. A HMAC-
              SHA1 challenge-response procedure will be used for authentication.

       CODEC  The  audio  codec  to  use  when  transferring  audio  to  this remote transmitter.
              Available  codecs  are:  RAW  (512kbps),  S16  (256kbps),  GSM  (13.2kbps),   SPEEX
              (8-25kbps),  OPUS  (8-64kbps).  These  are  raw bit-rate values. There will be some
              overhead added to this so the real bit-rates on the wire are a little  bit  higher.
              The OPUS codec is the most modern one and it also have the best quality for a given
              bit-rate. There also is a NULL codec that will just throw away samples which can be
              used in special situations when the audio is sent through another audio path.

       SPEEX_ENC_FRAMES_PER_PACKET
              Speex  encoder  setting.  Each Speex frame contains 20ms audio. If using a low bit-
              rate configuration, the network overhead will be quite noticeable if  sending  each
              frame  in  its own packet. One way to lower the overhead is to send multiple frames
              in each network packet. The drawback with doing this is that you get more delay. If
              setting  this  option  to  something  like  4  (default),  the  delay will be about
              4x20=80ms.

       SPEEX_ENC_QUALITY
              Speex encoder setting. Specify the encoder quality using  a  number  between  0-10.
              Lower values give poorer quality and lower bit-rates.

       SPEEX_ENC_BITRATE
              Speex  encoder setting. Specify the bit-rate to use. Speex will snap to the nearest
              lower possible bit-rate. Possible values range from 2150 to 24600 bps.  You  should
              probably not specify quality at the same time as bit-rate. Not sure though...

       SPEEX_ENC_COMPLEXITY
              Speex encoder setting. The complexity setting (0-10) tells the encoder how much CPU
              time it should spend on doing a good job. The difference in SNR between the  lowest
              and  highest value is about 2dB. Set it as high as possible without overloading the
              CPU on the encoding computer (check CPU usage using command "top").

       SPEEX_ENC_VBR
              Speex encoder setting. Enable (1) or disable (0)  variable  bit-rate  encoding.  If
              enabled, the encoder will try to keep a constant quality by increasing the bit-rate
              when needed.

       SPEEX_ENC_VBR_QUALITY
              Speex encoder setting. The quality (0-10) to use in variable bit-rate mode.

       SPEEX_ENC_ABR
              Speex encoder setting. The average bit-rate encoding will try to keep a target bit-
              rate by continuously adjusting the quality. This configuration variable specify the
              target bit-rate and enable ABR. It also need to have VBR enabled so don't force  it
              to off.

       SPEEX_DEC_ENHANCER
              Speex  decoder  setting.  Enable  (1) or disable (0) the perceptual enhancer in the
              decoder.  Perceptual enhancement is a part of the decoder which,  when  turned  on,
              attempts  to  reduce  the  perception  of  the  noise/distortion  produced  by  the
              encoding/decoding process. In most cases, perceptual enhancement brings  the  sound
              further  from  the original objectively (e.g. considering only SNR), but in the end
              it still sounds better (subjective improvement).

       OPUS_ENC_FRAME_SIZE
              Opus encoder setting. Specify how large, in milliseconds, each audio packet  should
              be. Default: 20ms.

       OPUS_ENC_COMPLEXITY
              Opus  encoder setting. The complexity setting (0-10) tells the encoder how much CPU
              time it should spend on doing a good job.  Set  it  as  high  as  possible  without
              overloading the CPU on the encoding computer (check CPU usage using command "top").
              Default: 10.

       OPUS_ENC_BITRATE
              Opus encoder setting. This is the bit-rate that the encoder will encode for.  Rates
              from  about  8000  to 64000 bits per second are meaningful but the codec can handle
              from like 2500 to 512000 bps. Default: 20000bps.

       OPUS_ENC_VBR
              Opus encoder setting. Enable (1) or disable  (0)  variable  bit-rate  encoding.  If
              enabled, the encoder will try to keep a constant quality by increasing the bit-rate
              when needed and decrease it when the quality can be assured with a lower  bit-rate.
              The target average bit-rate is the one set by OPUS_ENC_BITRATE.  Default: 1.

   Multi Transmitter Section
       A  multi  transmitter  section  is  used if one wants to transmit on multiple transmitters
       simultaneously. The name of the section can be anything. Just point it  out  from  another
       transmitter specification like the TX variable in a Logic core configuration.

       TYPE   Always "Multi" for a multi transmitter section.

       TRANSMITTERS
              A comma separated list of transmitters.

   Module Section
       A  module  section  contain  the configuration for a specific module. It have some general
       configuration variables and some module  specific  configuration  variables.  The  general
       configuration variables are listed below.

       NAME   The  name  of  the module. This name must match the namespace used in the TCL event
              handling script. If not set, NAME will be set to the section name.

       PLUGIN_NAME
              The base name of the plugin. For example if this configuration variable is  set  to
              Foo,  the  core will look for a plugin called ModuleFoo.so. If not set, PLUGIN_NAME
              will be set to the same value as NAME.

       ID     Specify the module identification number. This is the number  used  to  access  the
              module from the radio interface.

       TIMEOUT
              Specify  the  timeout  time, in seconds, after which a module will be automatically
              deactivated if there has been no activity. Not including this parameter removes the
              timeout.

       MUTE_LOGIC_LINKING
              Set  to 1 to mute all logic linking audio when the module is activated or 0 to keep
              logic linking unmuted at all times. Default is 1 (mute).

       Module specific configuration variables are described in the man page for that module. The
       documentation  for  the Parrot module can for example be found in the ModuleParrot.conf(5)
       manual page.

   LocationInfo
       STATUS_SERVER_LIST
              Enter a space separated list of EchoLink status servers that should be used to send
              node    status    beacons.    Your    node    information    can    be   found   on
              http://www.echolink.org/links.jsp.  The format is host:port. Host - hostname or  IP
              address,  port  -  UDP port.  Don't change the default unless you know what you are
              doing. If you don't want to update the EchoLink status  server,  comment  out  this
              configuration variable.

              Example:
              STATUS_SERVER_LIST=aprs.echolink.org:5199

       APRS_SERVER_LIST
              This  configuration  variable  specifies connection parameters for connecting to an
              APRS server  network  using  the  TCP  protocol.  In  this  case,  the  positioning
              information   is   forwarded  to  the  worldwide  APRS  network.  Have  a  look  at
              http://aprs.fi/.

              To choose a suitable APRS server from the so called tier 2 network, have a look  at
              http://www.aprs2.net/.  Either  choose  a  specific  server  or one of the regional
              addresses. The regional addresses bundle all APRS servers within a region so that a
              random  tier  2 server is chosen within the region. There are five regions defined:
              noam.aprs2.net - North America, euro.aprs2.net -  Europe,  asia.aprs2.net  -  Asia,
              soam.aprs2.net  -  South  America  and  Africa,  aunz.aprs2.net - Australia and New
              Zealand.  The format is a  space  separated  list  of  host:port  entries.  Host  -
              hostname or IP address, port - TCP port.

              Example:
              APRS_SERVER_LIST=euro.aprs2.net:14580

       LON_POSITION
              The longitude of the station position, entered as "degrees.arcminutes.arcseconds"

              Example:
              LON_POSITION=09.02.20E

       LAT_POSITION
              The latitude of the station position, entered as "degrees.arcminutes.arcseconds"

              Example:
              LAT_POSITION=51.02.22N

       CALLSIGN
              Enter  your  callsign for the APRS network with a prefix that indicates the type of
              station, (ER- for repeaters, EL- for links).

              Examples:
              CALLSIGN=EL-DL1ABC    # callsign for a link
              CALLSIGN=ER-DB0ABC    # callsign for a repeater

       FREQUENCY
              The tx-frequency of the link/repeater in MHz. For repeaters, information about  the
              RX/TX shift in the COMMENT configuration variable may be useful.

              Example:
              FREQUENCY=430.050     # tx-frequency is 430.050 MHz

       TX_POWER
              The power of your transmitter in watts.

              Example:
              TX_POWER=10           # tx output is 10 watts

       ANTENNA_GAIN
              The gain of your antenna in dBd.

              Example:
              ANTENNA_GAIN=5        # antenna gain is 5 dBd

       ANTENNA_HEIGHT
              The  height  of the link-/repeater antenna in meters or feet above the terrain, not
              sealevel.

              Example:
              ANTENNA_HEIGHT=10m    # 10 meters above the ground
              ANTENNA_HEIGHT=90     # 90 feet

       ANTENNA_DIR
              Main beam direction of the antenna in degrees. If  an  omni  direction  antenna  is
              used, specify -1 as the direction.

              Example:
              ANTENNA_DIR=-1        # an omni directional antenna is used
              ANTENNA_DIR=128       # main beam direction is 128 degrees

       PATH   The  PATH  variable  controls  the  way  of  forwarding your beacon inside the APRS
              network if it is gated by a local APRS digipeater. In  some  cases  it  has  to  be
              changed  according  to local requirements. Please contact your local APRS sysop for
              further information. Changes should be made only according to the NEWn-N  paradigm.
              Leave  this  variable  untouched  if  you  are unsure of its setting.  No spaces or
              control characters are allowed. PATH has no influence on the propagation on  non-RF
              networks.

              Examples:
              PATH=WIDE1-1
              PATH=WIDE1-1,WIDE2-2

       BEACON_INTERVAL
              The  interval,  in minutes, with which beacons will be sent to the APRS network.  A
              good value is 10 minutes. If your beacon is  gated  via  RF,  please  increase  the
              interval  a  bit to keep the APRS traffic on RF produced by the APRS RF gate as low
              as possible. Intervals shorter than 10 minutes will be changed to 10.

              Example:
              BEACON_INTERVAL=30    # APRS-beacons will be sent every 30 minutes.

       TONE   The CTCSS sub-audible tone that is to be used  for  operation  over  your  link  or
              repeater. If you don't use tone control set it to 0.

              Examples:
              TONE=136      # we are using a CTCSS-tone of 136.5 Hz
              TONE=0        # we don't use CTCSS sub-audible or call tones
              TONE=1750     # the link/repeater use a tone burst of 1750 Hz

       STATISTICS_INTERVAL
              Defines  the  interval  in  minutes in that an aprs statistic is sent into the aprs
              network. Range: 5-60, default is 10 minutes

       COMMENT
              Specify a short comment here, maybe a link to  your  website  or  information  that
              could  be  interesting  for others. The length should not exceed 255 characters and
              may not have control characters like "Carriage Return" (\r)  or  "Line  Feed"  (\n)
              inside.  Make  your  comment as short as you can to give users with a small display
              (TH-D7) the chance to display the full comment text.

              Example:
              COMMENT=[svx] Running SvxLink by SM0SVX

       PTY_PATH
              Specify a path to a communications PTY that can be used by external applications to
              inject APRS packets into the APRS-IS network.

AUDIO DEVICE SPECIFICATIONS

       The  AUDIO_DEV configuration variables specify which audio device to use for a receiver or
       transmitter. SvxLink support a number of different audio input  and  output  devices.  The
       format  of  the configuration variable is "type:dev_spec". There are three different types
       of audio devices supported, "alsa", "oss" and "udp".

       The "alsa" type will use the specified Alsa device. Example:  "alsa:plughw:0".  Describing
       the format of Alsa device names is outside the scope for this document.

       The  "oss"  type  will use the specified OSS audio device. Example "oss:/dev/dsp".  OSS is
       the old sound system used by Linux. Alsa should be used when possible.

       The "udp" type is not really an audio device but instead will read and write audio from/to
       a  UDP  socket.  This can be used to interface SvxLink to all sorts of audio sources/sinks
       capable of streaming raw audio through UDP. One example usage is to interface SvxLink with
       GNU Radio.  Example: "udp:127.0.0.1:10000". Note however that the only supported format is
       raw 16 bit signed samples, two interleved channels. Sampling frequency can be chosen using
       the CARD_SAMPLE_RATE config variable as usual.

USING GPIO

       GPIO  (General  Purpose  IO)  is  used to access hardware pins that are made available for
       example on an embedded system. Before starting to use a pin in SvxLink some setup need  to
       be done in the operating system. With the standard distribution of SvxLink there is a pair
       of scripts that help with setting up and taking down the GPIO pins. The scripts are  named
       svxlink_gpio_up  and  svxlink_gpio_down.  The configuration file, which can be found among
       the other SvxLink configuration files (typically in /etc/svxlink), is called gpio.conf.

CALIBRATING THE SIGNAL LEVEL DETECTOR

       The signal level detector is used when using multiple receivers or when using  the  SIGLEV
       squelch.  The  signal  level  is  used  by a voter to choose the receiver with the highest
       signal strength. The choice is made directly after squelch open. For the voter to  make  a
       correct choice, the signal level detector must be calibrated on each receiver.

       To  use  the  noise  signal  level  detector,  first  set SIGLEV_DET=NOISE.  There are two
       configuration variables that is used to calibrate the detector.  They are SIGLEV_SLOPE and
       SIGLEV_OFFSET  in  a local receiver section. The slope is the gain of the detector and the
       offset is used to adjust the detector so that when there is no input signal, the  detector
       will  return  0.  The goal is to adjust the detector so that when no signal is received, a
       value of 0 is produced and when full signal strength  is  received,  a  value  of  100  is
       produced. It will never be exakt but that does not matter.

       The  calibration  is normally done by using the siglevdetcal(1) application. To be able to
       do a correct calibration, it must be possible to open the squelch so that  only  noise  is
       received.  The  antenna  cable  should  be  disconnected  or  a dummy load should be used.
       WARNING: Before starting the siglevdetcal application, pull the PTT cable  since  the  PTT
       might get triggered during the calibration procedure.

       The  siglevdetcal  utility  will  also  measure  the  CTCSS  tone  SNR  offset so that the
       CTCSS_SNR_OFFSETS config variable can be set up to a proper value.

       If the siglevdetcal application cannot be used for some reason, the manual procedure below
       might be used. This procedure will only work for a receiver with unsquelched audio.  Note:
       To calibrate a remote receiver it must be connected to the SvxLink server.  Otherwise  the
       squelch will not open.

              1   Connect  a  dummy  load  or disconnect the antenna from the transceiver. If you
                  disconnect the antenna, make sure to also disconnect the PTT.

              2   Set SIGLEV_SLOPE=1 and SIGLEV_OFFSET=0 and restart SvxLink.

              3   Open the squelch so that there is only noise coming into SvxLink.

              4   Use a second transceiver to make a short, unmodulated transmission. Release the
                  PTT  when  the  "Squelch  OPEN"  message is printed. Repeat this for about five
                  times.

              5   Calculate the mean diff (open level - close level) and the mean lower  (squelch
                  close)  value.  Make  sure  to  use  at  least  four significant digits in your
                  calculations.

              6   SIGLEV_SLOPE = 100 / (mean diff)

              7   SIGLEV_OFFSET = - (mean lower) * SIGLEV_SLOPE

              8   After changing SIGLEV_SLOPE and SIGLEV_OFFSET, restart SvxLink and check to see
                  that  the  squelch  open value is now around 100 and the squelch close value is
                  around 0.

STATE PTY FORMAT

       The format of the output from the state PTY is:

           <timestamp> <context>:<event name> <event data>

       where the different parts mean:

           timestamp = <seconds since 1 jan 1970>.<milliseconds>
           context = Name of context
           event_name = Name of event
           event data = Event specific data

       An event must be all on one line so there must be no line breaks. JSON event data  in  the
       examples below use line breaks to be easier to read.

       Pretty  printing  events  containing  JSON  formatted  event  data  can  be done using the
       following one-liner.

           awk '{ print "{\"name\":\"" $2 "\",\"time\":\"" strftime("%c", $1) "\",\"data\":" $3 "}"; fflush() }' /dev/shm/state_pty | jq .

       The following specific events exist.

       Tx:state
              Report the state for a transmitter. The event  specific  data  is  a  JSON  object.
              Example:

                  {
                    "id": "T",
                    "name": "Tx1",
                    "transmit": false
                  }

              where the different fields mean:

                  name = Configuration file section name for transmitter
                  id = The transmitter ID from configuration
                  transmit = Set to true if the transmitter is transmitting

       Voter:sql_state
              Report  the  state  of all squelches and signal levels for all receivers. The event
              specific data is a JSON array containing an object for each receiver. Example:

                  [
                    {
                      "name": "Rx1",
                      "id": "E",
                      "enabled": true,
                      "sql_open": true,
                      "active": true,
                      "siglev": 59
                    },
                    {
                      "name": "Rx2",
                      "id": "R",
                      "enabled": true,
                      "sql_open": true,
                      "active": false,
                      "siglev": 33
                    },
                    {
                      "name": "Rx3",
                      "id": "D",
                      "enabled": false
                    }
                  ]

              where the different fields mean:

                  name = Configuration file section name for receiver
                  id = The receiver ID from configuration
                  enabled = Set to true if the receiver is enabled
                  sql_open = Set to true if the squelch is open
                  active = Set to true if the receiver is the active one, selected by the voter
                  siglev = The measured signal level

FILES

       /etc/svxlink/svxlink.conf (or deprecated /etc/svxlink.conf)
              The system wide configuration file.

       ~/.svxlink/svxlink.conf
              Per user configuration file.

       /etc/svxlink/svxlink.d/*
              Additional configuration files. Typically one configuration file per module.

AUTHOR

       Tobias Blomberg (SM0SVX) <sm0svx at svxlink dot org>

REPORTING BUGS

       Bugs should be reported using the issue tracker at https://github.com/sm0svx/svxlink.

       Questions about SvxLink should not be asked using the issue tracker. Instead use the group
       set up for this purpose at groups.io: https://groups.io/g/svxlink

SEE ALSO

       svxlink(1), remotetrx(1), siglevdetcal(1), devcal(1)