allstarlink logo Cet article est essentiellement un mémo personnel, mais peut être utile à d'autres.
AllStarLink est un réseau de répéteurs radioamateurs, de stations de base distantes et de HotSpots accessibles les uns aux autres via le protocole de voix sur Internet. C'est le logiciel que nous utilisons sur notre réseau privé TKNet et installé sur des Raspberry Pi..
Acronymes
Explication timings
Réglages niveaux audio TX et RX
Changement de langue
Fichiers sons
Paramétrage GPS.conf
Balise par crontab
Copie de la carte SD

Acronymes :
ASL: All Star Link
CLI : Command Line Interface (mode commande en ligne)
COR : Carrier Operated Relay (Squelh)
CT : Courtesy tone (bips)
ID : IDentification (message balise voix ou Morse)
URA : USB Radio Adapter
URI : USB Radio Interface

Note : Les procédures ci-dessous ne concernent qu'un fonctionnement en DUPLEX avec un espacement de canaux de 25 kHz et l'utilisation d'une interface avec une carte son (DSP) et une interface USB comme l'Interface audio USB pour le réseau TKNet.

Fichiers de configurations :

Il faut principalement modifier les fichiers rpt.conf, usbradio.conf (ou simpleusb.conf), iax.conf, gps.conf, modules.conf, extensions.conf, dnsmgr.conf.

Suivant le type d'interface USB et/ou type de radio, il faut choisir la bonne interface.
Radio sans préaccentuation ni désaccentuation ou sans décodeur CTCSS, il faut choisir usbradio.conf qui utilise un DSP et peut donc décoder le CTCSS et permet plus de fonctions.
Pour une configuration plus simple, utiliser simpleusb.conf.
Il faut activer un seul et bon module dans le fichier modules.conf

Il faut ensuite déterminer le numéro du node qui sera utilisé en fonction de l'environnement. ( connexion node à node, serveur public AllStarLink ou serveur privé)

Le fichier usbradio.conf contient la configuration "hard" de l'émetteur et du récepteur utilisés.
Fonctionnement de la carte son, simplex, duplex, fréquences CTCSS, délais divers, filtres audio, pré/désaccentuations, états PTT et squelch.

Le fichier rpt.conf  contient la configuration du node, la télémétrie (balises), morse, niveaux BF, commandes DTMF, etc...

Le fichier modules.conf configure les modules qui seront chargés au démarrage.
Il convient de mettre load en face du type d'interface :
load => chan_usbradio.so

Le fichier extensions.conf est utilisé pour router les connexions entrantes vers le bon node dans app_rpt.

Le fichier iax.conf définit la manière d'enregistrer un nœud auprès de l'autorité d'attribution des nœuds de liaison Allstar, et attribue un contexte que les connexions entrantes reçoivent afin que les déclarations dans extensions.conf puissent diriger la connexion vers le nœud local correct. iax.conf contient deux sections pertinentes pour app_rpt. La section [general], et la section [radio].

Le fichier dnsmgr.conf permet de configurer le service de mise à jour des DNS Allstarlink
Dans le cas où une connexion au réseau AllStarlink n'est pas souhaité :
enable = no

Le fichier gps.conf permet de configurer la balise APRS qui sert à afficher le relais sur une carte APRS. aprs.radioamateur.tk dans notre cas.

Timings :
Les différents paramétrages des timings et délais du séquençage RX/TX sont un peu compliqués à appréhender du fait de leur noms..
Le diagramme des temps ci-dessous permet de mieux les comprendre.

Dans rpt.conf

[wait-times]
telemwait = 2000 ; Time to wait before sending most telemetry
idwait = 1000 ; délai en ms avant envoi fichier son (Time to wait before starting ID)
unkeywait = 1000 ; délai en ms avant envoi bips (Time to wait after unkey before sending CT's and link telemetry)
calltermwait = 2000 ; Time to wait before announcing "call terminated"
 
[8] (or your  node number)
hangtime = 500 ; squelch tail hang time (in ms) (optional, default 5 seconds, 5000 ms)
althangtime = 0 ; longer squelch tail
totime = 60000 ; transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)

Réglages niveaux radio :

Voici le synoptique du fonctionnement des étages BF dans le CM109 avec les paramètres audio assignés.

Une bonne calibration des niveaux BF est essentielle pour assurer une bonne qualité de retransmission et un niveau constant de node à node.
Si la carte interface URI possède ses propres réglages de niveaux en émission et réception, commencer par des réglages médians.
La difficulté est de garder un niveau audio acceptable pour l'entrée du chip DSP. 

Les préaccentuation et désaccentuation doivent s'opérer quelque part et uniquement une seule fois !
Elles ont lieu soit dans l'émetteur (préaccentuation), le récepteur (désaccentuation) ou dans la carte d'interface par le DSP d'Asterisk.

Il est préférable d'utiliser le DSP d'Asterisk afin d'avoir la même bande passante audio sur tous les relais. Il faut pour cela que le récepteur et l'émetteur utilisés possèdent une sortie et une entrée non traitée, aussi appelé "discriminateur", "directe", "flat", etc...
Par ailleurs, le fonctionnement du décodage CTCSS et du squelch par le DSP remplace souvent avantageusement ceux effectués dans les récepteurs.

Si le récepteur ne possède pas de sortie discriminateur, il faut utiliser le mode rxmode = "speaker". Si l'émetteur ne possède pas d'entrée directe, utiliser le mode txprelim = yes.

Note 1 : dans les procédures suivantes, si le banc de mesures autorise le choix entre différents filtres passe-bande ou passe-bas pour la détection audio, utiliser le filtre passe-bande 0,3-3 kHz. La déviation supplémentaire introduite par le CTCSS ne devrait pas être prise en compte. (à vérifier)
Il ne sera alors pas nécessaire de désactiver/activer la génération CTCSS dans les procédures suivantes.

La mesure de la déviation CTCSS se fera avec le filtre low pass 300 Hz du banc de mesure.
Certains bancs n'ont pas toutes ces possibilités et il faut alors en tenir compte dans les réglages.

Réglage du niveau audio de l'émetteur

Vérification de la déviation maximale de l'émetteur
1) Désactiver la génération du CTCSS dans l'émetteur. (Si le CTCSS n'est pas utilisé ou voir note 1, cette étape ainsi que les 6 et 7 ne sont pas nécessaires)
2) Brancher le générateur BF sur l'entrée audio TX utilisée (micro ou autre suivant modèle). Régler le niveau le plus faible possible et la fréquence à 1 kHz sinusoïdal. Connecter  la sortie antenne TX au banc de mesures et passer en émission.
3) Contrôler la déviation, et augmenter le niveau BF graduellement jusqu'à ce que la déviation n'augmente plus. C'est la déviation maximale possible par le TX.
Si l'entrée est directe sur le modulateur, la déviation maximale peut alors être très élevée.
4) Si la déviation est supérieure à 5 kHz, ajuster le potentiomètre de réglage ou la valeur logicielle de déviation maximum de l'émetteur à 5 kHz. Il est probable que l'on constate une certaine distorsion, le limiteur du TX étant entré en action.
5) Réduire le niveau du générateur BF pour obtenir une déviation de 3 kHz, il ne devrait pas y avoir de distorsion. Noter la valeur de la tension BF du générateur.
6) Réactiver, si besoin, la génération du CTCSS dans l'émetteur.
7) Si la valeur de la déviation a changé, (voir note 1 ci-dessus), elle ne devrait pas dépasser 3,6 kHz. Si c'est le cas, ajuster le niveau CTCSS sur le TX pour cette valeur max de 3,6 kHz.

Avec un émetteur ayant une entrée modulation présaccentutée. ( mode txprelim=0 )
Fixer la valeur de txmixaset ou txmixbset = 500 (fichier usbradio_tune_usb.conf) pour commencer. L'augmenter ou la diminuer par la suite si nécessaire.

txmixa = voice ou composite
txmixb = no
txprelim = no
txlimonly = no
txtoctime = no ; ou autre suivant convenance

1) Désactiver la génération du CTCSS dans l'émetteur. (voir note 1 ci-dessus)
2) Vérifier si la commande "Test tone on/off cop,4", normalement *904 dans rpt.conf est activée. Sinon la valider et redémarrer Asterisk. 
3) Passer en mode Asterisk CLI, mode commande en ligne. (asterisk -r)
4) Depuis le CLI, type rpt fun nr_du_node *904  (nr_du_node = numéro du node à tester)
5) L'émetteur devrait passer en émission et transmettre une tonalité de 1 kHz. Ajuster le potentiomètre de l'URI pour obtenir une déviation de 3 kHz, ou modifier la valeur txmixaset (ou txmixbset) à l'aide de radio tune txvoice xxx  (0-999)
6) Couper la transmission avec la commande rpt fun nr_du_node #.  
7) Si le CTCSS a été coupé, le remettre en service et répéter les 3 étapes précédentes. La déviation ne doit pas dépasser 3,6 kHz.
Dans le cas contraire ajuster le niveau de génération du CTCSS pour une déviation maximale de 3,6 kHz à l'aide du réglage interne du TX si le TCS est généré dans le TX.
8) Si le TCS est généra par la carte son : radio tune txtone xxx pour obtenir une déviation CTCSS de 600 Hz 

Si le niveau n'est pas suffisant ou trop important, modifier la valeur de txmixaset et recommencer la procédure.

Avec un émetteur sans préaccentuation (mode flat txprelim = 1)

Fixer la valeur de txmixaset = 500 (fichier usbradio_tune_usb.conf) pour commencer. L'augmenter ou la diminuer par la suite si nécessaire.

txmixa = composite
txmixb = no
txctcssdefault = 88.5
txprelim = yes
txlimonly = no
txtoctime = no

1) Vérifier si la commande "Test tone on/off cop,4" (normalement *904) dans rpt.conf est activée. Sinon la valider et redémarrer Asterisk. 
2) Passer en mode Asterisk CLI, mode commande en ligne. (asterisk -r)
3) Entrer radio tune txtone 0, pour couper la génération de TCS.
4) Depuis le CLI, entrer rpt fun nr_du_node *904  (nr_du_node = numéro du node à tester) ou utiliser la commande DTMF *904
5) L'émetteur devrait passer en émission et transmettre une tonalité de 1 kHz. Ajuster le potentiomètre de l'URI pour obtenir une déviation de 3 kHz, ou modifier la valeur txmixaset (ou txmixbset) à l'aide de radio tune txvoice xxx  (0-999)
6) Couper la transmission avec la commande rpt fun nr_du_node #
7) Entrer radio tune txtone xx, régler la valeur xx pour une déviation de 600 Hz. La transmission ne dure que quelques secondes. Attention à la mesure avec la banc (note 1)
8) Entrer rpt fun nr_du_node *904, pour transmettre simultanément le 1 kHz ET le TCS
7) La déviation ne doit pas dépasser 3,6 kHz (mesure 1000 Hz + TCS). Attention à la note 1 !
Dans le cas contraire ajuster le niveau de génération du CTCSS pour une déviation maximale de 3,6 kHz.

Si le niveau n'est pas suffisant ou trop important, modifier la valeur de txmixaset et recommencer la procédure.

Note : Il semblerait que si la valeur txmixaset + txctssadj > 1000, une distorsion peut apparaître. Il faudrait donc utiliser les 2 sorties audio du DSP et dédier le canal gauche (txmixaset) pour la voix et le canal droit (txmixbset) pour le TCS.

Réglage du niveau audio du récepteur

L'entrée MICIN du chip carte son est connectée au récepteur. La tension doit être d'un niveau suffisant pour permettre un décodage correct mais pas trop élevée pour ne pas saturer l'entrée du DSP. (500 mV par exemple)
Commencer par mettre le paramètre rxboost = 0 pour insérer l'atténuateur 20 dB (la doc. du CM109 parle d'un ampli qui en fait n'existe pas)

L'ampli qui injecte le signal dans le convertisseur ADC est réglé par le paramètre rxmixerset, (fichier usbradio_tune_usb.conf). Commencer par une valeur de 250 (de 0-999).
Si par la suite des réglages, on n'arrive pas à obtenir de bons résultats, modifier cette valeur.

Pour un récepteur avec désaccentuation (sortie sur HP ou préampli BF) : 

rxdemod = speaker
rxctcssoverride =1 (squelch par détection de porteuse issu du récepteur)
carrierfrom = usb ; ou usbinvert (signal squelch vient de la carte interface USB)
ctcssfrom = no (pas de détection du CTCSS par DSP)

1) Injecter dans le récepteur un signal de plusieurs microVolts modulé à 1 kHz avec une excursion de 3 kHz.
2) En mode CLI, taper radio tune rxvoice, le logiciel adaptera le niveau BF après plusieurs mesures.
3) Taper radio tune save pour sauvegarder les réglages qui seront lus à chaque démarrage. (fichier usbradio_tune.conf)
4) Couper le générateur, pour éviter un bug au reboot d'Asterisk.
5) Rebooter Asterisk en tapant rpt restart, et vérifier si l'excursion de l'émetteur suit de façon linéaire celle du récepteur. ( 1kHz -> 1kHz, 2 kHz -> 2 kHz, etc...)

Pour un récepteur avec une sortie sans désaccentuation (sortie discriminateur FM) :

rxdemod = flat
carrierfrom = dsp (détection de porteuse vient du DSP de la carte interface USB)
ctcssfrom = dsp (détection CTCSS vient du DSP de la carte interface USB)

1) Le récepteur ne devrait pas avoir de squelch et donc générer du bruit permanent sans signal, puisque sans désaccentuation.
2) En mode CLI Asterisk, taper radio tune rxnoise, le logiciel effectuera plusieurs mesures et calculera une valeur moyenne.
3) Injecter dans le récepteur un signal de plusieurs microVolts modulé à 1 kHz avec une excursion de 3 kHz seul (sans CTCSS).
4) En mode CLI, taper radio tune rxvoice, le logiciel adaptera le niveau BF après plusieurs mesures.
5) Couper la modulation à 1 kHz, et moduler avec la tonalité TCS voulue (88,5 Hz) avec 600 Hz de déviation.
6) Taper radio tune rxtone pour réglage automatique du décodage du CTCSS.
7) Couper le générateur. 
8) Réglage du squelch : taper radio tune rxsquelch va donner la valeur mesurée du seuil de squelch. Noter cette valeur. Il faut régler le niveau du paramètre rxsquelch d'environ 50-100 de plus que la valeur mesurée pour un fonctionnement correct. Taper radio tune rxsquelch <valeur> (entre 0 et 999)
9) Taper radio tune save pour sauvegarder les réglages qui seront lus à chaque démarrage. (fichier usbradio_tune.conf)
10) Couper le générateur, pour éviter un bug au reboot d'Asterisk.
11) Rebooter Asterisk en tapant rpt restart, et vérifier si l'excursion de l'émetteur suit de façon linéaire celle du récepteur. ( 1kHz -> 1kHz, 2 kHz -> 2 kHz, etc...)

Changement de langue

Par défaut, ASL est livré avec des fichiers sons en anglais.
Ils sont dans /var/lib/asterisk/sounds

Pour changer de langue et utiliser des fichiers sons en français il faut créer une arborescence fr identique à celle trouvée dans le répertoire sounds .
A savoir:
fr/rpt
fr/digits
fr/letters; etc...
Puis placer les fichiers sons français dans les mêmes répertoires que pour la version anglaise.

Pour activer la version française, modifier le fichier /etc/asterisk/asterisk.conf
Si le stanza [config] n'existe pas, le créer.
Rajouter la ligne suivante : languageprefix = yes

Modifier le fichier /etc/asterisk/chan_dahdi.conf
Dans le stanza [channels], ajouter la ligne : language = fr

Relancer Asterisk.

Fichiers sons

ASL utilise des fichiers sons pour les fonctions de télémétrie et balises.
Ces fichiers sont principalement au format ulaw qui est un standard utilisé par Asterisk et est une norme US conçue pour la téléphonie.
C'est un format sans compression de données ou RAW.
Attention certains logiciels ou site fournissent des fichiers au format RAW-ULAW, mais qui comporte une entête RIFF qui génère un bruit parasite en début de lecture par Asterisk. Il faut absolument obtenir des fichier ulaw sans entêtes.

On peut utiliser le logiciel libre Audacity qui permet d'enregistrer un fichier son, le manipuler et le sauvegarder au bon format.

On peut donc soit enregistrer le fichier à l'aide d'un micro ou utiliser un générateur TTS (Text to sound) en ligne. 
La plupart de ces générateurs nécessitent un abonnement pour enregistrer le fichier son créé. Mais il y a moyen de contourner ce problème en enregistrant le son de démonstration du navigateur à l'aide d'Audacity.

Une fois le fichier son obtenu, il faut le passer en mono s'il a été enregistré en stéréo :
- Menu "Pistes"
- Sous-menu "Mix"
- Choix "Mix stéréo vers mono"

Afin que tous les fichiers sons aient le même volume, il faut normaliser le niveau :
- Menu "Effets"
- Sous-menu "Volume et compression"
- Choix "Normalisation de l'amplitude"
Il faut alors choisir une méthode et un niveau de normalisation. Ici LUFS à -16 dB.

Il reste à enregistrer le fichier au bon format, à savoir ulaw :
- Menu "Exporter"
- Sous-menu "Exporter en WAV"
- Choisir les bons formats comme ci-dessous :

Configuration fichier gps.conf pour APRS

Ce fichier est utilisé pour paramétrer la balise APRS si on veut envoyer les coordonnées d'un relais sur le réseau APRS.
Ci-dessous un exemple pour un de nos sites :

call = TK1ZAR              ; callsign (including SSID) for APRS purposes
password = 12345           ; Password for APRS-IS server for above callsign
comment = Sud UHF (430.175, +9,4, TCS 88.5) http://tknet.radioamateur.tk ; Text to be displayed associated with this station
server = xxxxx.net         ; APRS-IS server to report information to
port = 14580               ; port on server to send data
interval = 600             ; Beacon interval in seconds
icon = r                   ; A CAR (default)   Icon do be displayed for station on APRS display (see below)
;comport = /dev/ttyS0      ; Serial port for GPS receiver (specify this only if using GPS receiver)
;baudrate = 4800           ; Baud rate for GPS receiver (specify this only if using GPS receiver)
;debug = y                 ; set this for debug output
freq= 430.175              ; Display Frequency of station
tone=88.5                  ; CTCSS tone of station (0.0 for none)
lat=41.653192              ; Fixed (default) latitude in decimal degrees
lon=9.178372               ; Fixed (default) longitude in decimal degrees
elev=1068                  ; Elevation of Antenna in Meters (*NOT* HAAT)
power=3                    ; Power level (see below)
height=8                   ; Antenna Height in HAAT (see below)
gain=3                     ; Antenna Gain (see below)
dir=0                      ; Antenna Direction (see below)

Si aucun récepteur GPS n'est relié au contrôleur, il FAUT commenter les lignes comport et baudrate. Renseigner alors les valeurs lat et lon.
Les valeurs power, height, gain, dir sont codées sur un seul chiffre de 0 à 9. Il en résulte une approximation importante.
Si power = 0, seule l'information comment sera transmise. Utile si vous ne voulez pas diffuser les autres informations.

La valeur HAAT n'est PAS l'altitude de l'antenne par rapport au niveau de la mer, mais la hauteur équivalente de l'antenne émettrice, ce qui est la hauteur de l'antenne au-dessus de la hauteur moyenne du terrain entre les distances de 3 et 15 km dans la direction de l'antenne réceptrice !

Le site suivant permet de calculer le HAAT d'un site : https://recnet.com/haat
En général, sauf si le relais est situé sur un sommet qui est le plus élevé de la région, la valeur HAAT est inférieure à l'altitude au dessus du niveau de la mer.

Une fois la valeur HAAT obtenue, il faut la convertir en pieds (feet = m x 3,281).

Les valeurs des données pour power, height, gain, dir peuvent être converties en utilisant le tableau ci-dessous, ou elles peuvent être calculées :
power = la racine carrée de votre puissance
height = ln(HAAT/10)  (ln = log népérien)
Dans les 2 cas, choisir la valeur la plus approchante.

DIGITS   0  1  2   3   4   5   6    7    8    9
-------------------------------------------------------------------
POWER    0, 1, 4,  9, 16, 25, 36,  49,  64,  81  watts  SQR(P)
HEIGHT  10,20,40, 80,160,320,640,1280,2560,5120  feet   LOG2(H/10)
GAIN     0, 1, 2,  3,  4,  5,  6,   7,   8,   9  dB
DIR   omni,45,90,135,180,225,270, 315, 360,   .  deg    (D/45)

Diffusion d'une "balise son" à heures fixes :
On peut avoir envie ou besoin de diffuser une "balise" à l'aide d'un fichier son sur un node local ou sur l'ensemble des nodes à intervalles réguliers.
Dans crontab :
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  user command to be executed

Pour une diffusion sur tous les nodes :
00 * * * * sudo /usr/sbin/asterisk -rx “rpt playback nr_node /fichier_son"

Pour une diffusion sur le node uniquement :
00 * * * * sudo /usr/sbin/asterisk -rx “rpt localplay nr_node /fichier_son"

Copie de la carte SD du Rpi :

La copie de la carte SD utilise le programme rpi-clone
L'exemple ci-dessous décrit une situation simple dans laquelle les cartes SD ont la même dimension. rpi--clone permet cependant de nombreuses options.

rpi-clone permet de copier la carte SD en service sur un Rpi sur une autre vierge, tout en n'interrompant pas le fonctionnement du Rpi !

Installer le logiciel rpi-clone :

git clone https://github.com/billw2/rpi-clone.git
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin

S'assurer que le chemin vers rpi-clone est inclus dans le PATH

echo $PATH

La réponse doit inclure :   /usr/local/sbin

Il faut maintenant déterminer quel port est utilisé. Avant d'insérer l'adaptateur, lancer :
ls /dev/sd*
la réponse peut être du genre  /dev/sda /dev/sdb 

Insérer l'adaptateur USB avec la carte SD et relancer la commande ls /dev/sd*
Déterminer celui qui a été rajouté : /dev/sda /dev/sdb /dev/sdc

Lancer l'exécution de rpi-clone

sudo rpi-clone sdc

La copie de la carte SD 'effectue et la durée est variable selon la qualité des cartes SD et le contenu de celle source.

Liens :
Copie de la carte SD