Benutzer-Werkzeuge

Webseiten-Werkzeuge


svxlink:start

Dies ist eine alte Version des Dokuments!


SVXLink Installation

Diese Anleitung bezieht sich auf ein frisch installiertes Debian Buster lite auf einem Raspberry Pi. Für den remote Login via SSH muss der SSH Server noch aktiviert werden:

sudo systemctl enable ssh

Danach sollte nach einem Reboot des Systems der Login mittels puTTY o.ä. möglich sein.

Zunächst einmal müssen alle Tools und Bibliotheken für die Übersetzung von Svxlink installiert werden:

sudo apt install build-essential git
sudo apt install libasound2-dev g++ gcc make cmake groff gzip doxygen tar 
sudo apt install libsigc++-dev libsigc++-2.0-dev
sudo apt install libspeex-dev libspeexdsp-dev libopus-dev
sudo apt install libpopt-dev
sudo apt install libasound2-dev libgcrypt20-dev libgsm1-dev
sudo apt install librtlsdr-dev libjsoncpp-dev
sudo apt install tcl-dev
sudo apt install libcurl4-openssl-dev

Außerdem muss ein User svxlink angelegt werden, unter dem der Service nachher läuft. Das hat den Vorteil, dass nicht alles mit root Rechten laufen muss:

sudo useradd svxlink

Weiterhin muss der User den Gruppen audio und gpio hinzugefügt werden.

sudo usermod -a -G gpio svxlink
sudo usermod -a -G audio svxlink

Dann wird das svxlink Repository von github geladen und vorbereitet, in dem ein Ordner angelegt wird, in dem die übersetzen Binaries landen:

git clone https://github.com/sm0svx/svxlink.git
cd svxlink/src/
mkdir build
cd build

Dann werden mittels cmake die notwendigen Makefiles für die Übersetzung erstellen. Die Optionen hier sind:

  • CMAKE_INSTALL_PREFIX: Verzeichnis, in dem die Binaries bei der Installation landen
  • SYSCONF_INSTALL_DIR: Hier liegen nach die Konfigurationsdateien
  • LOCAL_STATE_DIR: Darin liegt später die Logdatei
  • USE_QT: Damit wird bestimmt, ob die graphischen Tools wie Qtel auch übersetzt und installiert werden sollen. In diesem Fall brauchen wir das nicht.
  • WITH_SYSTEMD: Bestimmt, ob die .service Daten für die Steuerung mittels systemd installiert werden sollen.
cmake -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DLOCAL_STATE_DIR=/var -DUSE_QT=NO -DWITH_SYSTEMD=yes ..

Jetzt werden Programm und Hilfedateien übersetzt:

make
make doc

Und schließlich werden die Binaries im System installiert und die Verzeichnisse der Bibliotheken aktualisiert:

sudo make install
sudo ldconfig

Konfiguration

Hier sind verschiedene Hinweise für unterschiedliche Konfigurationen zu finden.

DingleBop

GM3x0-APRS Platine „DingleBop“ nach DB9MAT, DG1TAL und DF2ET

svxlink.conf

[Rx1]
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
SQL_DET=HIDRAW
HID_DEVICE=/dev/hidraw0
HID_SQL_PIN=!VOL_DN

[Tx1]
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
PTT_TYPE=Hidraw
HID_DEVICE=/dev/hidraw0
HID_PTT_PIN=GPIO3

SVX HotSpot / SVX_Hat

SvxHotSpot oder SVX_Hat Platine nach DF2ET. Damit der entsprechende Treiber geladen wird, muss die /boot/config.txt angepasst werden. In dieser Konfiguration wird die onboard Karte deaktiviert und stattdessen der SVX_Hat genutzt. Das ALSA Device trägt dann den Namen plughw:0.

Deaktivierung der onboard Karte:

# Enable audio (loads snd_bcm2835)
# dtparam=audio=on

Aktivierung des device tree overlays für SVX_Hat bzw. SVXHotspot:

# Enable WM8731 codec
dtparam=i2c_arm=on
dtparam=i2s=on
dtoverlay=i2s-mmap
dtoverlay=rpi-proto

Danach muss der Raspberry Pi einmal neugestartet werden. Danach sollte die Karte erkannt werden. Das kann mittels Ausgabe von /proc/asound/cards geprüft werden:

$ cat /proc/asound/cards 
 0 [sndrpiproto    ]: snd_rpi_proto - snd_rpi_proto
                      snd_rpi_proto

alsamixer

Für die Platinen mit WM8731 (SVX_Hat SVX-Hotpot) müssen folgende Regler im alsamixer angepasst werden. Für die Sound Ausgabe muss der Regler „Output Mixer Hifi“ aktiviert bzw. ent-muted werden:

Alsamixer Output

Für den Eingang muss jeweils der Line-In Eingang auf der Aufnahmeseite selektiert bzw. geregelt werden:

Alsamixer Input

Damit sollte Soundausgabe und -aufnahme jeweils möglich sein.

svxlink.conf

[Rx1]
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
SQL_DET=GPIO
GPIO_SQL_PIN=gpio17
DEEMPHASIS=0
PREAMP=18
PEAK_METER=0

[Tx1]
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
PTT_TYPE=GPIO
PTT_PIN=gpio4
TX_DELAY=500
PREEMPHASIS=0

gpio.conf

GPIO_PATH=/sys/class/gpio
GPIO_IN_HIGH="gpio17"
GPIO_OUT_HIGH="gpio4"
GPIO_USER="svxlink"
GPIO_GROUP="svxlink"
GPIO_MODE="0664"

Dies und Das

Sammlung von ein paar Tips für unterschiedliche Zwecke.

Deutsches Zahlenformat

Für deutsches Zahlenformat wird ein Ordner /usr/share/svxlink/events.d/local angelegt. Darin wird die Datei locale.tcl abgelegt. Danach svxlink neustarten und es sollten Zahlen und Uhrzeiten in deutschem Format ausgebeben werden.

SVX Reflektor

Dafür braucht es einen Account für den Reflektor (→ DF2ET) und ein paar Einträge in der svxlink.conf:

[GLOBAL]
LOGICS=SimplexLogic,ReflectorLogic
LINKS=ReflectorLink
[ReflectorLogic]
TYPE=Reflector
HOST=svxreflector.n18.de
CALLSIGN=N0CALL
AUTH_KEY="Passwort"
AUDIO_CODEC=OPUS
JITTER_BUFFER_DELAY=0
DEFAULT_TG=262
MONITOR_TGS=262,2624
TG_SELECT_TIMEOUT=600
ANNOUNCE_REMOTE_MIN_INTERVAL=300
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=de_DE
[ReflectorLink]
CONNECT_LOGICS=SimplexLogic:9:REF,ReflectorLogic
DEFAULT_ACTIVE=1
TIMEOUT=0
OPTIONS=DEFAULT_CONNECT,NO_DISCONNECT

Das Dashboard des SVX Reflektors ist hier zu finden: https://svxreflector.n18.de/

ALSA Equalizer

Zunächst muss das ALSA plugin installiert werden:

sudo apt install libasound2-plugin-equal

Dann wird für den User svxlink in dessen Heimatverzeichnis eine Datei .asoundrc mit folgendem Inhalt angelegt:

ctl.equal {
  type equal;
}

pcm.plugequal {
  type equal;
  # Modify the line below if you don't
  # want to use sound card 0.   
  slave.pcm "plughw:0,0";
}

pcm.equal {
  type plug;
  slave.pcm plugequal;
}

# Usage:
# $ alsamixer -D equal

Der Equalizer kann damit als user svxlink mit dem folgenden Kommando aufgerufen werden:

$ alsamixer -D equal

Oder unter Verwendung von sudo:

$ sudo su svxlink -c "alsamixer -D equal"

Damit svxlink als Output das Equalizer Device nutzt muss die Config entsprechend angepasst werden:

AUDIO_DEV=alsa:equal

Und wenn svxlink als systemd service läuft muss die service Datei /lib/systemd/system/svxlink.service angepasst werden:

[Service]
EnvironmentFile=/etc/default/svxlink
PIDFile=${PIDFILE}
ExecStartPre=-/bin/touch ${LOGFILE}
ExecStartPre=-/bin/chown ${RUNASUSER} ${LOGFILE}
ExecStart=/usr/bin/svxlink --logfile=${LOGFILE} --config=${CFGFILE}
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
TimeoutStartSec=60
TimeoutStopSec=10
LimitCORE=infinity
WorkingDirectory=/home/svxlink
User=svxlink
Group=audio

Nicht zu vergessen, anschließend das service File neu zu laden mittels:

$ sudo systemctl daemon-reload

Damit sollte der Audio Stream des svxlink Senders per Equalizer einstellbar sein.

Sollte Svxlink nicht starten wollen, weil angeblich das Capture Device belegt ist und folgende Meldungen im Log erscheinen:

Starting logic: RepeaterLogic
Loading RX: Rx1
*** ERROR: Open capture audio device failed: Device or resource busy
*** ERROR: Could not open audio device for receiver "Rx1"
*** ERROR: Could not initialize RX "Rx1"
*** ERROR: Could not initialize Logic object "RepeaterLogic". Skipping...
*** ERROR: No logics available. Bailing out...

muss gepprüft werden, ob remotetrx im Hintergrund läuft und die Soundkarte belegt. Das geht z.B. mit

$ sudo ps ax | grep svxlink

Wenn das der Fall sein sollte, kann remotetrx mittels

$ sudo service remotetrx stop

angehalten werden. Um den Autostart beim Boot zu verhindern kann der Service mittels

$ sudo systemctl disable remotetrx

deaktiviert werden.

Tnx es vy73

Danke an folgende OM für das wertvolle Feedback und die Beiträge zum Wiki:

  • Jürgen, DL2NJM
  • Jürgen, DH9YAP
  • Jan, DG3YJB
  • Danielo, DL7TA
svxlink/start.1590439561.txt.gz · Zuletzt geändert: 25.05.2020 20:46 von df2et