--- 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 alle MIC- und der Speaker-Channel unmuted (mit Cursor links/rechts auswählen, mit "M" Mue umschalten). "Auto Gain Control" wird dagegen gemutet. 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/.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://:14501/ ansehen.