-
Notifications
You must be signed in to change notification settings - Fork 173
/
svxlink.conf.5
3159 lines (3010 loc) · 142 KB
/
svxlink.conf.5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
.TH SVXLINK.CONF 5 "SEPTEMBER 2024" Linux "File Formats"
.
.SH NAME
.
svxlink.conf \- Configuration file for the SvxLink server
.
.SH DESCRIPTION
.
.B svxlink
is a general purpose voice service system for ham radio use. This man-page
describe the SvxLink server configuration file format.
.P
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:
.BR $HOME/.svxlink/svxlink.conf .
If no user specific configuration file can be found, SvxLink will look for
the system wide configuration file
.BR /etc/svxlink/svxlink.conf .
The
.B --config
command line option may also be used to specify an arbitrary configuration file.
.
.SH 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".
.P
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).
.
.SH CONFIGURATION VARIABLES
.
Here is the description of all configuration variables that SvxLink understands. The
configuration variables are described section for section.
.
.SS GLOBAL
.
The GLOBAL section contains application global configuration data.
.TP
.B 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.
.TP
.B 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).
.TP
.B 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.
.TP
.B 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.
.TP
.B 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
.BR 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:
.RS
.IP \(bu 4
.BR %d " - The day of the month as a decimal number (range 01 to 31)"
.IP \(bu 4
.BR %b " - The abbreviated month name according to the current locale"
.IP \(bu 4
.BR %Y " - The year as a decimal number including the century"
.IP \(bu 4
.BR %H " - The hour as a decimal number using a 24-hour clock (range 00 to 23)"
.IP \(bu 4
.BR %M " - The minute as a decimal number (range 00 to 59)"
.IP \(bu 4
.BR %S " - The second as a decimal number (range 00 to 60)"
.IP \(bu 4
.BR %f " - Fractional seconds in millisecond resolution (000-999)"
.P
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".
.RE
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B LINKS
Enter here a comma separated list of section names that contains the
configuration information for linking logics together (see Logic Linking).
.
.SS 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.
.P
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.
.TP
.B 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.
.TP
.B RX
Specify the configuration section name of the receiver to use. All configuration
for the receiver is done in the specified configuration section.
.TP
.B TX
Specify the configuration section name of the transmitter to use. All
configuration for the transmitter is done in the specified configuration
section.
.TP
.B MODULES
Specify a comma separated list of configuration sections for the modules to
load. This tells SvxLink which modules to actually load on startup.
.TP
.B CALLSIGN
Specify the callsign that should be announced on the radio interface.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B SHORT_ANNOUNCE_FILE
The full path to a file to use for custom announcements broadcasted during a
routine short ID.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B LONG_ANNOUNCE_FILE
The full path to a file to use for custom announcements broadcasted during a
routine short ID.
.TP
.B 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.
.TP
.B CW_PITCH
Specify the pitch (frequency in Hz) of the CW that should be used during any CW
traffic, typically announcements. Default: 800.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B TIME_FORMAT
Specify what format the time should be announced as, valid options are
"12"/"24".
NOTE: may not work for all language packs
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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:
.BR 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.
.RS
.IP \(bu 4
.BR 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.
.IP \(bu 4
.BR LOGIC
will transmit CTCSS tone when there is incoming traffic from another logic
core.
.IP \(bu 4
.BR MODULE
will transmit CTCSS tone when there is incoming traffic from a module.
.IP \(bu 4
.BR 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.
.IP \(bu 4
.BR ALWAYS
will always transmit a CTCSS tone as soon as the transmitter is turned on.
.RE
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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
.TP
.B 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.
.TP
.B 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".
.TP
.B ONLINE
Set to 0 to make SvxLink start offline. Settable at runtime. Default is 1
(online).
.TP
.B 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
.B "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
.TP
.B 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
.B "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
.TP
.B CTCSS_TO_TG
Use this configuration 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. Also, the CTCSS squelch
detector must actually be used in the receiver. It's not enough to just set
CTCSS_FQ.
Example: CTCSS_TO_TG=127.3:9993,136.5:9995
.TP
.B 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
.
.SS 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
.BR 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.
.TP
.B TYPE
The type for a simplex logic core is always
.BR Simplex .
.TP
.B 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.
.TP
.B 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.
.TP
.B RGR_SOUND_ALWAYS
Set to 1 to always send roger sound after squelch close, even when no module is
active.
.TP
.B 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
.B "echo 'THE COMMAND TO EXECUTE' > /path/to/pty"
after starting SvxLink.
Valid commands:
.RS
.IP \(bu 4
.BR "CFG <section> <tag> <value>" " --"
Set a configuration variable. Only a few configuration variables support being
set at runtime. Example: CFG RepeaterLogic ONLINE 0.
.IP \(bu 4
.BR "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.
.RE
Example: COMMAND_PTY=/dev/shm/repeater_logic_ctrl
.
.SS 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
.BR 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.
.TP
.B TYPE
The type for a repeater logic core is always
.BR Repeater .
.TP
.B 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.
.TP
.B IDLE_TIMEOUT
The number of seconds the repeater should have been idle before turning the
transmitter off.
.TP
.B 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.
.TP
.B 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. Note that the CTCSS squelch must actually be used as a
squelch detector in the receiver. It's not enough to just set CTCSS_FQ.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.
.SS 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.
.P
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, selected by the CTCSS tone used 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#.
.P
The reflector connection will be authenticated using X.509 certificates. Both
the server and the client requires authentication. The AUTH_KEY authentication
method that were previously used is deprecated. The certificate generation
process is mostly automated. The contents of the certificate can be customized
using the configuration variables with name prefix CERT_. Default values are
good in most cases. CERT_EMAIL may be good to specify so that the SvxLink node
owner can be contacted. Ask the reflector sysop what the convention is.
.TP
.B TYPE
The type for a reflector logic core is always
.BR Reflector .
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B CALLSIGN
The callsign of this node. The callsign also serves as the username when
authenticating to the SvxReflector server.
.TP
.B AUTH_KEY
The authentication key, or password, used when authenticating to the
SvxReflector server.
.TP
.B 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.
.TP
.B 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).
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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.
.TP
.B 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
.TP
.B 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).
.TP
.B VERBOSE
Set to 0 to suppress reflector leave/join printouts.
.P
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.
.TP
.B CERT_PKI_DIR
The path to the directory where PKI (Public Key Infrastructure) files will be
stored.
Example: CERT_PKI_DIR=/var/lib/svxlink/pki
.TP
.B CERT_KEYFILE
The path to the private key for the X.509 client certificate. This file will
be auto generated if it does not exist. It must be kept secure since this is
what authenticates your node. It must NOT be sent in the clear over the
internet for example. Also, if you loose this file you will have to ask the
reflector sysop to issue a new certificate for the new key.
Example: CERT_KEYFILE=/var/lib/svxlink/pki/MYCALL.key
.TP
.B CERT_CSRFILE
The path to the certificate signing request for the X.509 client certificate.
This file will be auto generated if it does not exist or if the configuration
information has been changed. When a new CSR is generated, the reflector sysop
need to sign it before it will become active.
Example: CERT_CSRFILE=/var/lib/svxlink/pki/MYCALL.csr
.TP
.B CERT_CRTFILE
The path to the X.509 client certificate. This file is a public file that is
used to identify your node. It is sent to the reflector during the
authentication procedure. It will be created after the CSR has been signed by
the reflector sysop. The reflector will send this file to the client during
the authentication procedure if it's missing on the node or if the certificate
has been updated.
Example: CERT_CRTFILE=/var/lib/svxlink/pki/MYCALL.crt
.TP
.B CERT_CAFILE
The path to the X.509 certificate bundle. This file contains one or more
certificates that is used to verify the authenticity of the reflector server.
Example: CERT_CAFILE=/var/lib/svxlink/pki/ca-bundle.pem
.TP
.B CERT_DOWNLOAD_CA_BUNDLE
The CA bundle is by default downloaded from the reflector server if it's
missing or need to be updated. Set this configuration variable to 0 to disable
that behaviour. That should be done if you want to provide your own CA bundle.
.TP
.B CERT_SUBJ_GN, CERT_SUBJ_givenName
The name of the person, with which s/he is normally called, owning the
SvxLink node.
Example: CERT_SUBJ_GN=John
.TP
.B CERT_SUBJ_SN, CERT_SUBJ_surname
The family name of the person owning the SvxLink node.
Example: CERT_SUBJ_SN=Doe
.TP
.B CERT_SUBJ_OU, CERT_SUBJ_organizationalUnitName
The name of the organizational unit to which the SvxLink node belongs. That
may be a subdivision of a ham radio organization for example.
Example: CERT_SUBJ_OU="VHF/UHF Unit"
.TP
.B CERT_SUBJ_O, CERT_SUBJ_organizationName
The name of the organization to which the SvxLink node belongs. That may be a
ham radio club for example.
Example: CERT_SUBJ_O=SSA
.TP
.B CERT_SUBJ_L, CERT_SUBJ_localityName
The name of the city where the SvxLink node is located.
Example: CERT_SUBJ_L=Stockholm
.TP
.B CERT_SUBJ_ST, CERT_SUBJ_stateOrProvinceName
The name of the state or province where the SvxLink node is located.
Example: CERT_SUBJ_ST=Södermanland
.TP
.B CERT_SUBJ_C, CERT_SUBJ_countryName
The ISO 3166 country code for the country where the SvxLink node is located.
Example: CERT_SUBJ_C=SE
.TP
.B CERT_EMAIL
A comma separated list of email addresses where the SvxLink node owners can be
reached.
Example: CERT_EMAIL=mycall1@example.com,mycall2@example.com
.
.SS 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.
.TP
.B 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.
.TP
.B 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).
.TP
.B 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)
.TP
.B 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)
.TP
.B 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)
.TP
.B 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)
.TP
.B 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)
.TP
.B 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)
.TP
.B 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:
.RS
.IP \(bu 4
.BR %f " - The full filename with full path"
.IP \(bu 4
.BR %d " - The directory part (what REC_DIR is set to)"
.IP \(bu 4
.BR %b " - The basename, that is, the filename without path and extension"
.IP \(bu 4
.BR %n " - The filename without path but with extension"
.P
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\\"
.BR
ENCODER_CMD=/usr/bin/lame \-\-quiet \\"%f\\" \\"%d/%b.mp3\\" && rm \\"%f\\"
.BR
ENCODER_CMD=/usr/bin/speexenc \\"%f\\" \\"%d/%b.spx\\" 2>/dev/null && rm \\"%f\\"
.BR
ENCODER_CMD=/usr/bin/opusenc \\"%f\\" \\"%d/%b.opus\\" 2>/dev/null && rm \\"%f\\"
.
.SS 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.
.P