Important :

Ce tutoriel vous guide dans l'installation de SvxLink, version 24.02, publiée le 25 février 2024.

Présentation de SvxLink

SvxLink est un projet open-source destiné à la communauté des radioamateurs, dédié au développement d’un logiciel puissant et flexible pour la gestion de répéteurs et de passerelles radio.

Initialement créé en 2003 comme application EchoLink pour Linux, le projet a progressivement évolué pour devenir une plateforme beaucoup plus complète et sophistiquée.

SvxLink est un système de services vocaux avancé qui, lorsqu’il est connecté à un émetteur-récepteur, peut fonctionner aussi bien comme :

🔹 répéteur simplex avancé

🔹 répéteur duplex classique et avancé

On peut même le considérer comme un véritable système d’exploitation pour répéteur.

SvxLink Logo

SvxLink - Système de répéteur open source

SvxLink est très extensible et modulaire. Les services vocaux sont mis en œuvre sous forme de modules isolés les uns des autres. Les modules peuvent être activés ou désactivés selon la volonté des sysops.

📦 Modules Disponibles

Aide

Un système d'aide

🌐

EchoLink

Connectez-vous à d'autres stations EchoLink

🌤️

MetarInformation

Lire les informations météorologiques

🦜

Parrot

Lit tout ce qui est reçu

📞

DtmfRepeater

Le répéteur a reçu des chiffres DTMF

📧

TclVoiceMail

Envoyer des messages vocaux

📡

PropagationMonitor

Annonce les avertissements de propagation

📻

Frn

Connectez-vous aux serveurs FRN

SvxLink peut être installé sur un ordinateur (PC) dédié ou sur un Raspberry Pi que vous hébergez chez vous en locale ou sur un site radio.

Les répéteurs SvxLink peuvent être interconnectés entre eux à travers des réflecteurs qu'on les appelle SvxReflector.

Type d'Installation

Comme cité ultérieurement, il y a deux types d'installation : sur PC ou sur Raspberry Pi. Mais les deux sont identiques car ils sont basés sur DEBIAN.

💻

PC

Installation sur PC
Debian 12 ou versions ultérieures

📟

Raspberry Pi

Installation sur Raspberry Pi
Raspbian Bookworm Lite ou versions ultérieures

Pour l'exemple qui suit j'ai fait l'installation sur un Raspberry Pi avec la carte son USB à puce CM108 que vous trouveriez toutes les explications concernant ce montage sur Modifier une CM108 pour piloter des répéteurs interconnectés.

Les Préparatifs avant de commencer l'installation

💻

Sur le PC

Installez Debian 12 ou versions ultérieures.

📟

Pour le Raspberry Pi

Téléchargez et installez la version Raspbian Bookworm Lite ou versions ultérieures, sur une carte SD.

🔌

Connexion

Insérez la carte microSD dans le Raspberry Pi, connectez la carte son CM108 à l'un des ports USB, puis branchez l'alimentation.

NB:

Pour les utilisateurs du Raspberry Pi Zero 2 W, il est impératif d’installer Raspbian Lite en version 32 bits.

Les tests avec Raspbian Bookworm Lite 32 bits se sont révélés concluants.

La version 64 bits n’est pas compatible avec cette plateforme.

Important :

Pour installer SvxLink avec un autre type de carte son ou autres interfaces, veillez à les connecter au port USB avant de mettre l'appareil sous tension.

Configuration du système SvxLink

1- Installation de la carte son USB CM108

Démarrez votre machine puis connectez-vous en SSH.

A Dans le terminal tapez :

ls -l /dev/

Vous trouverez plus que probablement une ligne au début qui ressemble à :

ls -l /crw------- 1 root root 241, 0 Nov 1 13:17 hidraw0

hidraw0

hidraw0 : c'est le nom de la carte USB

B L'étape suivante consiste à permettre au "udev" de contrôler le fonctionnement interne de la carte son USB.

Pour cela, il est nécessaire d’ajouter une règle udev dans le fichier /etc/udev/rules.d/99-com.rules.

Éditez le fichier 99-com.rules.

S’il n’existe pas, il sera automatiquement créé :

sudo nano /etc/udev/rules.d/99-com.rules

Une fois le fichier ouvert :
🔹 s’il contient déjà d’autres règles, faites défiler son contenu puis ajoutez la règle suivante sur une nouvelle ligne ;
🔹 s’il est vide, copiez et collez la règle suivante directement dans le fichier.

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0777"

Cette règle udev définit les permissions d’accès aux périphériques hidraw, afin de les rendre accessibles en lecture et écriture pour tous les utilisateurs.

KERNEL

Configuration udev pour hidraw

Après avoir effectué vos modifications, appuyez sur CTRL + X puis tapez Y suivi d'Enter.

C Pour que le système d'exploitation accepte les modifications, tapez :

sudo udevadm control --reload-rules
sudo udevadm trigger

Le service "udev" redémarre sans qu'il soit nécessaire de redémarrer l'appareil.

2- Définir la carte son USB comme périphérique audio par défaut

Tout d'abord nous devons trouver l'ID du périphérique de la carte son USB.

A Dans le terminal tapez :

arecord -l

Vous devriez obtenir un résultat similaire à :

**** List of CAPTURE Hardware Devices ****
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
arecord

Dans cet exemple la carte son USB a été répertoriée comme Carte 1, Périphérique 0

Dans cet exemple la carte son USB a était répertorié comme Carte 1, Périphérique 0.

On va modifier les lignes default.ctl.card et default.pcm.card en changeant le 0 par 1 qui se trouve dans le fichier alsa.conf.

B Éditez le fichier alsa.conf :

sudo nano /usr/share/alsa/alsa.conf

C Puis modifiez les lignes :

default.ctl.card 1
default.pcm.card 1
alsa.conf

Configuration alsa.conf

Après avoir effectué vos modifications, appuyez sur CTRL + X puis tapez Y suivi d'Enter.

Attention : Pour les utilisateurs de Raspberry PI

Une modification doit être apportée au fichier config.txt de Raspbian pour que la carte son CM108 reste configurée par défaut dans SvxLink, au lieu d'utiliser la sortie son HDMI.

Éditer le fichier config.txt :

sudo nano /boot/firmware/config.txt

Puis trouvez cette ligne dtoverlay=vc4-kms-v3d et ajoutez noaudio :

dtoverlay=vc4-kms-v3d

Devient :

dtoverlay=vc4-kms-v3d,noaudio
config.txt

Modification du fichier config.txt

Pour enregistrer vos modifications, appuyez sur CTRL + X puis tapez Y suivi d'Enter.

Redémarrez maintenant le Raspberry Pi :

sudo reboot

D Après le redémarrage, la carte son USB devrait être la seule carte son déclarée dans le système.

Pour voir le résultat tapez :

aplay -l
aplay -l

Vérification de la carte son par défaut

Section [GLOBAL]

[GLOBAL]
MODULE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink
LOGIC_CORE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink
LOGICS=SimplexLogic
CFG_DIR=svxlink.d
TIMESTAMP_FORMAT="%c"
CARD_SAMPLE_RATE=48000
CARD_CHANNELS=1
#LOCATION_INFO=LocationInfo
#LINKS=LinkToR4

Dans la section [GLOBAL] :

LOGICS : C'est ici que le comportement du noyau LOGIC est spécifié. Activez un ou plusieurs LOGIC on les séparent par des virgules.

Attention!

Il faut activer que SimplexLogic ou RepeaterLogic avec les autres Logic mais pas les deux.

Voici la liste des LOGICS qu'on peut activer :

- SimplexLogic : Pour activer le répéteur en simplex.

- RepeaterLogic : Pour activer le répéteur en duplex.

- ReflectorLogic : Si vous activer cette section vous devez la configurer pour se connecter a un serveur SvxReflector.

CARD_CHANNELS : Activer cette ligne pour que svxlink prend en charge la carte son.

LOCATION_INFO : Activer cette ligne pour donner la localisation du répéteur dans aprs.fi. Mais avant il faut faire de modification dans la section [LocationInfo]

LINKS : Activer cette ligne quand vous aurez activer le "ReflectorLogic", c'est pour lier les logiques entre elles.

Section [SimplexLogic]

[SimplexLogic]
TYPE=Simplex
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail
CALLSIGN=MYCALL
SHORT_IDENT_INTERVAL=15
LONG_IDENT_INTERVAL=30
#IDENT_ONLY_AFTER_TX=4
#EXEC_CMD_ON_SQL_CLOSE=500
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=fr_FR
RGR_SOUND_DELAY=0
RGR_SOUND_ALWAYS=1
#REPORT_CTCSS=136.5
#TX_CTCSS=ALWAYS
MACROS=Macros
FX_GAIN_NORMAL=0
FX_GAIN_LOW=-12
#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink
#QSO_RECORDER=8:QsoRecorder
#ONLINE_CMD=998877
#ONLINE=1
#MUTE_RX_ON_TX=1
#MUTE_TX_ON_RX=1
#STATE_PTY=/var/run/svxlink/state
#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl
#CTCSS_TO_TG=77.0:999,123.0:9990,146.2:9992
#CTCSS_TO_TG_DELAY=1000

NB:

Modifiez cette section seulement si vous voulez installer un répéteur simplex.

Dans la section [SimplexLogic] :

RX : Spécifiez le nom de la section à utiliser. Les configurations sont effectuées dans cette section, par défaut c'est la section "RX1"

TX : Spécifiez le nom de la section à utiliser. Les configurations sont effectuées dans cette section, par défaut c'est la section "TX1"

MODULES : Spécifiez une liste de sections de configuration séparées par des virgules pour les modules à charger. Cela indique à SvxLink quels modules à activer au démarrage. Les modules qu'ont veux pas les activer on les supprime de la liste.

CALLSIGN : Spécifiez votre Indicatif, EX :CN8XXXX.

SHORT_IDENT_INTERVAL : Le nombre de minutes entre les identifications courtes.

LONG_IDENT_INTERVAL : Le nombre de minutes entre de longues identifications.

DEFAULT_LANG : Définissez la langue par défaut à utiliser pour les annonces, puisqu'on a installé au début les voix françaises alors on va définir "fr_FR".

RGR_SOUND_ALWAYS : 1 acctive et 0 désactive le beep roger du répéteur.

REPORT_CTCSS : Annonce la fréquence CTCSS spécifiée lors de l'identification manuelle quand envoyer en DTMF (*).

FX_GAIN_NORMAL : Le gain en dB à utiliser pour les effets audio et les annonces lorsqu'il n'y a pas de traficsur sur le répéteur. Ce gain est normalement réglé sur 0 dB, ce qui signifie qu'il n'y a ni gain ni atténuation.

FX_GAIN_LOW : Le gain en dB à utiliser pour les effets audio et les annonces lorsqu'il y a du trafic sur le répéteur. Ce gain est normalement réglé par default sur -12 dB afin que les annonces et les effets audio soient atténués lorsqu'il y a du trafic.

Section [Rx1]

[Rx1]
TYPE=Local
#RX_ID=T
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
LIMITER_THRESH=-6
SQL_DET=HIDRAW
SQL_START_DELAY=10
SQL_DELAY=0
SQL_HANGTIME=0
#SQL_EXTENDED_HANGTIME=1000
#SQL_EXTENDED_HANGTIME_THRESH=15
#SQL_TIMEOUT=600
#VOX_FILTER_DEPTH=20
#VOX_THRESH=1000
#CTCSS_MODE=2
#CTCSS_FQ=136.5
#CTCSS_SNR_OFFSET=0
#CTCSS_SNR_OFFSETS=88.5:-1.0,136.5:-0.5
#CTCSS_OPEN_THRESH=15
#CTCSS_CLOSE_THRESH=9
#CTCSS_BPF_LOW=60
#CTCSS_BPF_HIGH=270
#CTCSS_EMIT_TONE_DETECTED=0
SERIAL_PORT=/dev/ttyS0
SERIAL_PIN=CTS
#SERIAL_SET_PINS=DTR!RTS
#EVDEV_DEVNAME=/dev/input/by-id/usb-SYNIC_SYNIC_Wireless_Audio-event-if03
#EVDEV_OPEN=1,163,1
#EVDEV_CLOSE=1,163,0
#GPIO_PATH=/sys/class/gpio
#GPIO_SQL_PIN=gpio30
#SQL_GPIOD_CHIP=gpiochip0
#SQL_GPIOD_LINE=22
#SQL_GPIOD_BIAS=PULLDOWN
#PTY_PATH=/tmp/rx1_sql
HID_DEVICE=/dev/hidraw0
HID_SQL_PIN=VOL_DN
#SIGLEV_DET=TONE
SIGLEV_SLOPE=1
SIGLEV_OFFSET=0
#SIGLEV_BOGUS_THRESH=120
#TONE_SIGLEV_MAP=100,84,60,50,37,32,28,23,19,8
SQL_SIGLEV_OPEN_THRESH=30
SQL_SIGLEV_CLOSE_THRESH=10
DEEMPHASIS=0
#SQL_TAIL_ELIM=300
#PREAMP=6
PEAK_METER=0
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=40
DTMF_SERIAL=/dev/ttyS0
#DTMF_PTY=/tmp/rx1_dtmf
#DTMF_MAX_FWD_TWIST=8
#DTMF_MAX_REV_TWIST=4
#1750_MUTING=1
#SEL5_DEC_TYPE=INTERNAL
#SEL5_TYPE=ZVEI1
#FQ=433475000
#MODULATION=FM
#WBRX=WbRx1
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=6
#IB_AFSK_ENABLE=0

NB:

Je ne vais pas tout expliquer parce qu'il y a trop de détails, mais vous pouvez toujours vous référer sur le site svxlink.conf.5.

J'ai mis en rouge toutes les modifications pour faire fonctionner svxlink.conf avec la carte son USB CM108.

Il ne faut pas oublier que c'est seulement mon expérience personnelle.

Dans la section [Rx1] :

AUDIO_DEV : Le périphérique audio à utiliser. Dans mon exemple c'est la carte N°1 car je l'ai déjà consulté dans le paragraphe Définir la carte son USB comme périphérique audio par défaut.

SQL_DET : Spécifiez le type de détecteur de squelch à utiliser. Pour la carte son USB c'est HIDRAW.

Section [Tx1]

[Tx1]
TYPE=Local
TX_ID=T
AUDIO_DEV=alsa:plughw:1,0
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
LIMITER_THRESH=-6
PTT_TYPE=Hidraw
PTT_PORT=/dev/hidraw0
PTT_PIN=DTRRTS
HID_DEVICE=/dev/hidraw0
HID_PTT_PIN=GPIO3
#SERIAL_SET_PINS=DTR!RTS
#GPIO_PATH=/sys/class/gpio
#PTT_GPIOD_CHIP=gpiochip0
#PTT_GPIOD_LINE=17
PTT_HANGTIME=10
TIMEOUT=300
TX_DELAY=1
#CTCSS_FQ=136.5
#CTCSS_LEVEL=-24
PREEMPHASIS=0
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
MASTER_GAIN=13.0
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=-6
#OB_AFSK_LEVEL=-12
#OB_AFSK_TX_DELAY=100
#IB_AFSK_ENABLE=0
#IB_AFSK_LEVEL=-6
#IB_AFSK_TX_DELAY=100

Dans la section [Tx1] :

AUDIO_DEV : Le périphérique audio à utiliser. Dans mon exemple c'est la carte N°1,0 (pour ne pas avoir de conflit de ports entre RX1 et TX1) car je l'ai déjà consulté dans le paragraphe Définir la carte son USB comme périphérique audio par défaut.

SQL_DET : Spécifiez le type de détecteur de squelch à utiliser. Pour la carte son USB c'est HIDRAW.

Section [ReflectorLogic]

[ReflectorLogic]
TYPE=Reflector
#DNS_DOMAIN=example.com
HOSTS=reflector-primary.example.org,reflector-secondary.example.org:5301
HOST_PORT=5300
#HOST_PRIO=100
#HOST_PRIO_INC=1
#HOST_WEIGHT=10
CALLSIGN="MYCALL"
AUTH_KEY="Change this key now!"
JITTER_BUFFER_DELAY=0
DEFAULT_TG=999
MONITOR_TGS=99901,99902,99903
TG_SELECT_TIMEOUT=30
ANNOUNCE_REMOTE_MIN_INTERVAL=300
EVENT_HANDLER=/usr/share/svxlink/events.tcl
NODE_INFO_FILE=/etc/svxlink/node_info.json
#MUTE_FIRST_TX_LOC=1
#MUTE_FIRST_TX_REM=1
#TMP_MONITOR_TIMEOUT=3600
#UDP_HEARTBEAT_INTERVAL=15
QSY_PENDING_TIMEOUT=15
#VERBOSE=1

Important :

Dans les sections [ReflectorLogic] et [LinkToR4], les modifications sont envoyées par le SYSOP du réflecteur.

HOSTS : Le nom d'hôte ou l'adresse IP du réflecteur.

HOST_PORT : Le numéro de port utilisé par le serveur. On n'a pas besoin d'ouvrir de ports dans le pare-feu. Le port par défaut est le 5300.

CALLSIGN : L'indicatif de ce nœud. L'indicatif sert également de nom d'utilisateur lors de l'authentification auprès du SvxReflector.

AUTH_KEY : Le mot de passe a utilisé lors de l'authentification auprès du SvxReflector.

JITTER_BUFFER_DELAY : Est utilisé pour éviter les lacunes dans l'audio lorsque la connexion réseau ne fournit pas avec un flux constant de données.

DEFAULT_TG : Le TG par défaut défini par le SYSOP pour se connecter sur le SvxReflector.

MONITOR_TGS : Le ou les TG que votre répéteur reste à l'écoute.

TG_SELECT_TIMEOUT : Le nombre de secondes après lesquelles le répéteur se déconnecte automatiquement du TG sélectionne.

NODE_INFO_FILE : C'est un fichier qu'on peut l'édite pour mètre nos information.

Section [LinkToR4]

[LinkToR4]
CONNECT_LOGICS=ReflectorLogic:9:cn8vx,SimplexLogic:9:cn8vx
DEFAULT_ACTIVE=1
TIMEOUT=300
#ACTIVATE_ON_ACTIVITY=RepeaterLogic

CONNECT_LOGICS : Une liste de spécifications logiques séparées par des virgules pour que les cœurs logiques se connectent ensemble.

DEFAULT_ACTIVE : Le lien sera automatiquement connecté au démarrage de SvxLink si cette variable de configuration est définie sur 1

TIMEOUT : Le nombre de secondes après lesquelles le lien sera automatiquement désactivé s'il n'y a pas eu d'activité.

Section [LocationInfo]

[LocationInfo]
APRS_SERVER_LIST=euro.aprs2.net:14580
#STATUS_SERVER_LIST=aprs.echolink.org:5199
LON_POSITION=12.10.00E
LAT_POSITION=51.10.00N
CALLSIGN=EL-DL0ABC
#FREQUENCY=438.875
#TX_POWER=8
#ANTENNA_GAIN=6
#ANTENNA_HEIGHT=20m
#ANTENNA_DIR=-1
PATH=WIDE1-1
BEACON_INTERVAL=10
#TONE=77.0
COMMENT=SvxLink by SM0SVX (www.svxlink.org)

Dans la section [LocationInfo] :

LON_POSITION : La longitude de la position de la station, saisie sous la forme "degrés.arcminutes.arcsecondes"

LAT_POSITION : La latitude de la position de la station, saisie sous la forme "degrés.arcminutes.arcsecondes"

CALLSIGN : Entrez votre indicatif d'appel pour le réseau APRS avec un préfixe qui indique le type de station, (ER- pour repeaters, EL- pour links).

FREQUENCY : La fréquence tx du répéteur en MHz.

TX_POWER : La puissance de votre répéteur en watts.

ANTENNA_GAIN : Le gain de votre antenne en dBd.

ANTENNA_HEIGHT : La hauteur de l'antenne du répéteur en mètres ou en pieds au-dessus du terrain, pas du niveau de la mer.

TONE : Si on utilise le TONE dans notre répéteur EX : CTCSS 77.0Hz

COMMENT : Spécifiez un court commentaire qui s’affichera dans la bulle, La longueur ne doit pas dépasser 255 caractères.

3- Réglage du volume

Si vous constatez que la modulation est faible ou si vous voulez modifier le volume.

Toujours en SSH tapez :

alsamixer

Vous aurez une fenêtre comme suite :

alsamixer

Interface AlsaMixer

Appuyez sur "F5" pour tout afficher :

alsamixer F5

AlsaMixer - Vue complète

Avec les flèches haut et bas du clavier vous pouvez augmenter ou diminuer le volume et avec les flèches droite et gauche vous allez d'une section à une autre.

Après avoir effectué vos modifications, enregistrez les configurations d'Alsamixer :

sudo alsactl store

Redémarrez le Raspberry Pi :

sudo reboot

Gestion de rotation des logs

SvxLink enregistre ses activités dans un fichier de log nommé svxlink, situé par défaut dans /var/log.

Avec le temps, ce fichier peut devenir particulièrement volumineux, surtout sur les systèmes utilisant une carte SD de faible capacité (8 ou 16 Go).

Cette croissance peut finir par saturer l’espace disque et provoquer des dysfonctionnements du système.

Pour éviter ce type de problème, il est fortement recommandé de mettre en place une rotation automatique des logs.

Vérifiez si logrotate est installé :

sudo logrotate --version

Si le terminal vous dit commande introuvable, vous devez l’installer avec les commandes suivantes :

sudo apt update && sudo apt install logrotate

Si une version s'affiche (par exemple, logrotate 3.21.0), alors il est bien installé.

Créez un fichier nommé "svxlink" :

sudo nano /etc/logrotate.d/svxlink

Ajoutez les lignes suivantes :

/var/log/svxlink {
    copytruncate
    rotate 4
    delaycompress
    compress
    missingok
    notifempty
    weekly
}

Enregistrez, quittez et redémarrez SvxLink.

En suivant ces étapes, vous garantirez une gestion optimale des journaux de connexion et de déconnexion, évitant ainsi la saturation de votre espace disque et assurant une performance stable de votre système SvxLink.

Conclusion

Dans ce tutoriel, nous avons vu comment installer et configurer SvxLink sur un Raspberry Pi pour créer un répéteur analogique interconnecté.

Nous avons abordé les étapes d'installation, de configuration du fichier svxlink.conf, d'activation du service, de réglage du volume et de gestion des logs.

Ces étapes sont essentielles pour assurer le bon fonctionnement de votre répéteur et garantir une expérience utilisateur optimale.

📚 Documentation :

N'hésitez pas à consulter la documentation officielle de SvxLink pour plus de détails et d'options de configuration.


🖥️ Interface Graphique

Maintenant que votre répéteur SvxLink est correctement configuré et opérationnel, vous pouvez lui ajouter une interface graphique.

🖥️ Interface graphique pour votre répéteur SvxLink

📦 Les Modules SvxLink

Les modules installés par défaut sur SvxLink peuvent être activés ou désactivés selon vos besoins.

Certains modules ne nécessitent aucune configuration particulière avant leur utilisation, tandis que d’autres doivent être correctement configurés avant d’être activés.

📦 Modules installer par default sur SvxLink

En espérant que ce tutoriel vous ait été utile pour installer et configurer votre répéteur SvxLink. Merci de l'avoir suivi, et bon succès dans vos projets !