aprs-digipeater/README.md

268 lines
8.5 KiB
Markdown

---
gitea: none
include_toc: true
---
# APRS Digipeater
## Ziel
Aufgebaut werden soll ein Multi-APRS-Digipeater für 2m und LoRa mit dxlAPRS auf einem Raspberry Pi.
## Hardware
Für dieses Projekt wird während der Testphase die folgende, vorhandene Hardware benutzt:
* Raspberry Pi 3B+ 2MB mit 8GB SD-Card
* LoRa Raspberry Pi HAT der SWISS-ARTG
* SHARI PiHat Mod2 Board
Sobald alles wie gewünscht funktioniert, wird auf passendere Hardware umgestellt (z.B. Raspberry Pi Zero W, einfacher 2m Transceiver)
## Installation Betriebssystem
Als Betriebssystem wird Raspberry Pi OS Lite (64 Bit) verwendet. Am einfachsten geht die Installation mit dem Raspberry Pi Imager, dieser kann hier heruntergeladen werden: [Install Raspberry Pi OS using Raspberry Pi Imager](https://www.raspberrypi.com/software/)
Nach dessen Installation auf einem PC und Start mit eingelegter SD-Card werden das zu installierende Betriebssystem (RASPBERRY PI OS LITE (64-BIT)) und die SD-Card ausgewählt. Mittels Klick auf das Settings-Icon unten rechts werden die erweiterten Optionen aufgerufen und wie folgt angepaßt (damit später der Zugriff per SSH über WLAN möglich ist):
* Hostname: digipeater
* SSH: aktivieren
empfohlen wird "Authentifizierung via Public-Key", notfalls geht auch "Paßwort zur Authentifizierung benutzen"
* Benutzernamen und Paßwort setzen
Im Folgenden wird der Benutzer "aprsadmin" verwendet, andere Namen sind aber auch möglich.
* WiFi einrichten
Hier werden SSID und der zugehörige Schlüssel (Passwort) eingetragen. WiFi-Land sollte in Deutschland "DE" sein.
* Spracheinstellungen festlegen
Zeitzone Europe/Berlin, Tastaturlayout de
Nach dem Speichern der erweiterten Einstellungen wird das Image durch Anklicken von "Speichern" auf die SD-Card geschrieben.
## Konfiguration Betriebssystem
Zuerst eine Aktualisierung und die Installation von Git und des Midnight Commanders:
```
sudo apt update
sudo apt upgrade
sudo apt install git mc
```
Die folgenden Anpassungen werden mit dem Tools "raspi-config" vorgenommen, welches nach dem Login per SSH wie folgt gestartet wird:
`sudo raspi-config`
* Komplette SD-Card nutzen:
* 6 Advanced Options
A1 Expand Filesystem
* 3 Interface Options
I5 Serial Port
login shell: none
serial port enable: yes
Um dem Benutzer aprsadmin Zugriff auf einen möglicherweise per USB angeschlossenen KISS-TNC zu geben, wird er zur Gruppe dialout hinzugefügt:
`sudo usermod -a -G dialout aprsadmin`
## Anpassungen Betriebssystem
Alle wesentlichen Anpassungen aus Betriebssystem-Ebene können mitels RasPi-Config vorgenommen werden:
`sudo raspi-config`
So können z.B. das Betriebssystem aktualisiert oder die WLAN-Zugangsdatenm geändert werden.
## SHARI PiHat 2m Transceiver
Der SHARI PiHat besteht im Wesentlichen aus dem Transceiver-Modul SA818 und einem Soundkarten-Chip von C-Media (CM119A). Das Transceiver-Modul SA818 muß programmiert werden, die Programmierung wird im einem Flash gespeichert, muß also nicht bei jedem Start wiederholt werden. Die Programmierung erfolgt über die serielle Schnittstelle des RaspBerry mittels eines speziellen Python-Programmes, SA818-prog2.01.py. Das kann unter [https://groups.io/g/SHARI/files](https://groups.io/g/SHARI/files) heruntergeladen werden, dazu ist aber leider eine Anmeldung erforderlich. Nach dem Download wird SA818-prog2.01.py auf dem RaspBerry unter ~/SHARI plaziert. Zusätzlich wird noch das Python-Modul pyserial benötigt, welches wie folgt installiert wird:
```
sudo apt install python3-serial
```
Die Konfiguration wird nun gestartet:
```
python ~/SHARI/SA818-prog2.01.py
```
```
SA818-prog, Version 2.01
Programing SHARI PiXX / SHARI PiHat / SA818(U/V) Module
Programming Device name:
/dev/ttyS0
------------------------------------------------------
Testing serial communications
Serial communications with the SA818 module are OK
What are you programming?
Enter 1,2 or 3 where SHARI PiXX=1, SHARI PiHat=2, SA818 Module=3: 3
Programming a generic SA818 module
Enter Channel Spacing (Narrow=0 or Wide=1): 0
Programming an SA818 module
Narrow channel spacing
Enter band (VHF=1, UHF=2): 1
You chose VHF
Enter transmit frequency in MHz (xxx.xxxx): 144.8000
The transmit frequency is 144.8000 MHz
Enter receive frequency in MHz (xxx.xxxx): 144.8000
The receive frequency is 144.8000 MHz
Do you want to use a sub audible tone? (0 = No, 1 = CTCSS, 2= DCS): 0
You chose No SubAudible Tone
Enter Squelch Value (0-8): 0
Squelch is set to 0
Enter Volume (1-8): 6
Volume is set to 6
Enable Pre/De-Emphasis (y/[n]): n
Pre/De-Emphasis is not enabled
Enable High Pass Filter (y/[n]): n
High Pass Filter is not enabled
Enable Low Pass Filter (y/[n]): n
Low Pass Filter is not enabled
Verify:
------------------------------------------------------
Channel Spacing: 0
Tx Frequency: 144.8000
Rx Frequency: 144.8000
Tx CTCSS code: 0000
Rx CTCSS code: 0000
Reverse Burst: n
Squelch Value: 0
Volume Value: 6
PreEmphasis Enabled: n
High Pass Enabled: n
Low Pass Enabled: n
------------------------------------------------------
Is this correct ([y]/n) ?y
Sending Frequency, Sub Audible Tone, and Squelch Information...
Frequency, Sub Audible Tone, and Squelch information correct
Setting Volume - 6
Setting Reverse Burst
Setting Filters
Programming Successful
Configuration log written to /home/aprsadmin/.SA818.log
```
Bei "What are you programming?" wird nicht "SHARI PiHat=2" gewählt, weil damit automatisch Wide channel spacing (25kHz) konfiguriert werden würde. Für APRS ist aber "Narrow channel spacing" mit 12,5kHz korrekt.
## SHARI PiHat Audio
Wir benötigen die Id der Soundcard des PiHat:
```
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
```
Da steht "card 1", demzufolge ist die Id die "1". Damit kann nun alsamixer mit dem Parameter "-c 1" gestartet werden:
```
alsamixer -c 1 -V all
```
Dort wird werden der MIC (Capture)- und der Speaker-Channel unmuted (mit Cursor links/rechts auswählen, mit "M" Mue umschalten). "Auto Gain Control" und MIC (ohne Capture) wird dagegen gemutet. Für den Anfang wird der Speaker-Level auf 25 und der MIC (Capture)-Level auf 60 eingestellt. Danach kann alsamixer mit Esc beendet werden.
## Dire-Wolf
Dire-Wolf ist ein APRS-Software-Modem. Die Installation erfolgt mittels:
```
sudo apt install direwolf
```
Die Konfiguration wird erstellt:
```
sudo mcedit /etc/direwolf.conf
```
```
ADEVICE plughw:1,0
CHANNEL 0
PTT CM108
```
Nun kann Dire-Wolf für einen ersten Test gestartet werden:
```
/usr/bin/direwolf -c /etc/direwolf.conf
```
Damit sollten die empfangenen APRS-Pakete angezeigt werden.
## Installation dxlAPRS
Ein möglicher Weg zur Installation wäre die Nutzung der fertigen Archive von DL1NUX, welche hier verfügbar sind: [dl1nux/dxlAPRS](https://github.com/dl1nux/dxlAPRS). Das Selbst-Compilieren aus den Original-Quellen ist aber auch nicht viel schwerer, wenn man das direkt auf dem Raspberry macht (unter dem Nutzer "aprsadmin"):
```
sudo apt install libjpeg62-turbo-dev libx11-dev libxext-dev libfftw3-dev
cd
mkdir Develop/
git clone git@github.com:oe5hpm/dxlAPRS.git
cd dxlAPRS/src/
EXTLIB=/usr/lib/aarch64-linux-gnu/ make all
rm ../out/*.o
sudo chown root:root ../out/*
sudo mv ../out/* /usr/local/bin/
sudo mkdir /usr/local/share/dxlAPRS
sudo cp -R ../dxlAPRS_common/www /usr/local/share/dxlAPRS/
```
Der Start der einzelnen Dienste (Programme) erfolgt nicht per Script, sondern über Systemd. Das hat u.a. den Vorteil, daß die Dienste überwacht und bei Bedarf (z.B. Absturz) neu gestartet werden. Die Systemd-Units können später hier heruntergeladen und instaliert werden:
```
sudo mkdir -p /usr/local/lib/systemd/system
sudo cp udpgate4.service /usr/local/lib/systemd/system/
```
## Konfiguration
### udpgate4
Für die Startparameter sind in der Systemd-Unit Defaultwerte eingetragen. Diese können (müssen) über ein Drop-in-File angepaßt werden:
```
sudo mkdir /etc/systemd/system/udpgate4.service.d
sudo nano /etc/systemd/system/udpgate4.service.d/<call>.conf
sudo systemctl daemon-reload
```
Außerdem werden die nötigen Konfigurationsdateien erzeugt:
```
sudo mkdir /etc/dxlAPRS
sudo nano /etc/dxlAPRS/netbeacon.txt
sudo nano /etc/dxlAPRS/password.txt
```
## Start
Der Start der einzelnen Programme erfolgt mittels:
```
sudo systemctl start udpgate4.service
```
Der Digipeater sollte dann auf https://aprs.fi su finden sein. Dem Status kann man sich im Browser unter http://<ip-adresse>:14501/ ansehen.