SVXLink Interface für Raspberry Pi

Die für unsere Repeater entwickelte Raspberry Pi SVXLink Platine wurde nun in der Version 1.1 als Open Source Projekt auf Github veröffentlicht und ist unter https://github.com/dl1com/c14_rpi_svxlink_if zu finden.

Hier der Link zum ersten Teil der Serie zur Einrichtung von SVXLink auf Raspberry Pi: https://charly14.de/svxlink-installation-und-konfiguration/

Die Schnittstelle bietet die folgenden Merkmale:

  • Generischer DB9-Stecker für den Anschluss an Transceiver(s)
  • Isolierte Audio rx/tx und Signalwege (PTT, Squelch)
  • Audiopegel können mit Potis eingestellt werden
  • Lüftersteuerungsausgang und Tachoeingang
  • Telemetrie-Eingänge:
    • ADS1115 ADC (z. B. für Spannungs- oder RSSI-Messung)
    • I2C-Anschlüsse (z. B. für Temperatursensoren)

Wir haben uns bewusst dagegen entschieden, einen Soundkarten-IC auf der Schnittstelle zu platzieren. Wir verwenden stattdessen eine externe, generische USB-Soundkarte, da diese Art von Soundkarten sehr einfach und günstig auf verschiedenen Marktplätzen zu bekommen sind.

Das Konzept basiert auf dem SVXLink Interface von Aleksander, S65AL

SvxLink Teil III – weitere Konfiguration

Um Einstellungen am Verhalten von SvxLink vorzunehmen die über die Möglichkeiten die die svxlink.conf bzw. die Konfigurationsdateien der Module hinaus gehen, gibt es noch eine weitere Art von Dateien: die TCL Skripte.

Diese Dateien beschreiben das Verhalten von SvxLink bei so gut wie allen Events die im Repeater vorkommen. Daher kann man durch Änderung der mitgelieferten Dateien das Verhalten von SvxLink sehr detailliert steuern.

Um die Originaldateien nicht abändern zu müssen (z.B. weil sie bei einem Update wieder überschrieben werden würden), gibt es bei SvxLink das sogenannte “locale” Konzept. Das bedeutet dass abgeänderte Dateien in einem Unterordner namens “locale” abgelegt werden. Existiert dieser Ordner und entsprechende Dateien in ihm, so werden diese verwendet – ansonsten die Originaldateien.

Für unsere Installation haben wir bisher zwei Anpassungen an tcl Dateien vorgenommen: Um die Zwischenmeldung des Repeaters innerhalb des Sprecherwechsels zu unterbinden und um die Zeitansage auf deutsche Grammatik anzupassen.

Zwischenmeldung unterbinden

cd /usr/local/share/svxlink/events.d/
mkdir local
cd local
cp ../RepeaterLogic.tcl ./

In dieser Datei ./local/RepeaterLogic.tcl müssen in der Funktion “repeater_down” folgende Zeilen durch voranstellen eines # auskommentiert werden:

#  spellWord $mycall;
#  playMsg "Core" "repeater";
#  playSilence 250;

Deutsche Grammatik für Zeitansagen

Um der deutschen Aussprache von Zahlen Rechnung zu tragen (z.B. einundzwanzig statt zwanzig-eins) muss auch hier eine Datei angepasst werden.
Hierzu wird unter /usr/share/svxlink/sounds/de_DE/events.d/local/locale.tcl folgender Inhalt abgelegt: https://gist.githubusercontent.com/unixweb/b808ba6d17905d253345efa9cdfbe52b/raw/02fdeb34dafcc36d0071ea4dca1eee8e0f6e57b7/locale.tcl

Um Änderungen an diesen Dateien wirksam zu machen, muss SvxLink neu gestartet werden.

SvxLink Teil II – weitere Konfiguration

Wie im ersten Teil angekündigt werde ich in diesem Beitrag beschreiben wie man das Raspberry Dateisystem in einen “read-only” Modus versetzt. Der Grund hierfür: Durch das Schreiben von Logdateien etc. “verschleißt” die SD-Karte, denn Flash-Speicherzellen haben eine endliche Anzahl von Schreibzyklen bei der sie zuverlässig arbeiten. Danach kann es zu defekten Dateien bis hin zu einem nicht mehr funktionierendem Dateisystem kommen.

Um dem entgegenzuwirken, wird das komplette Dateisystem schreibgeschützt, da wir in der Regel während des Betriebs keine Dateien persistent auf der Speicherkarte ablegen wollen. Alle Dateien die zur Laufzeit beschrieben werden müssen, werden in eine sogenannte Ramdisk gelegt, also in ein Dateisystem das im Arbeitsspeicher lebt.
Dies bedeutet aber auch, dass all diese Dateien bei einem Neustart verloren sind.
Will man solche Dateien (z.B. Logdateien) für den Fall eines unvorhergesehenen Events (Absturz, Stromausfall) sichern, muss man sich selber darum kümmern diese Datei von Zeit zu Zeit entweder lokal oder remote zu sichern.

Ich habe mich für das Einrichten des read-only Dateisystems recht nah an diesem Blogbeitrag auf Hamspirit.de orientiert. Hier aber nochmal in meinen Worten bzw. mit meinen Kommentaren:

Entfernen von nicht mehr benötigten Diensten

Zuerst entfernen wir Dienstprogramme, die wir in einem read-only Dateisystem nicht mehr benötigen, bzw. die in einem read-only Dateisystem nicht mehr funktionieren.
Für unsere Anwendung sind diese allerdings auch nicht notwendig.

sudo apt-get remove --purge logrotate triggerhappy dphys-swapfile fake-hwclock samba-common
sudo apt-get autoremove --purge

Ummappen von Systemverzeichnissen nach /tmp

Einige Programme wollen zur Laufzeit in Dateien schreiben. Diese leiten wir nun nach /tmp um, damit diese auch im read-only Dateisystem einen beschreibbaren Ort haben.

sudo rm -rf /var/lib/dhcp/ /var/spool /var/lock
sudo ln -s /tmp /var/lib/dhcp
sudo ln -s /tmp /var/spool
sudo ln -s /tmp /var/lock
sudo mv /etc/resolv.conf /tmp/
sudo ln -s /tmp/resolv.conf /etc/resolv.conf

Einstellungen in der Partitionstabelle

Nun bearbeiten wir /etc/fstab und setzen die boot und root Partitionen auf read-only (“ro”) und erzeugen drei tmpfs Partitionen.
Die hervorgehobenen Anteile müsst ihr in die Datei eintragen, der Rest sollte schon vorhanden sein (die PARTUUID unterscheidet sich auf jedem System)

proc /proc proc defaults 0 0
PARTUUID=d8cc668c-01 /boot vfat ro,defaults 0 2
PARTUUID=d8cc668c-02 / ext4 ro,defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
tmpfs /var/log tmpfs nodev,nosuid 0 0
tmpfs /var/tmp tmpfs nodev,nosuid 0 0
tmpfs /tmp tmpfs nodev,nosuid 0 0

Nun aktivieren wir noch fastboot (wir haben kein beschreibbares Dateisystem und sparen uns somit fsck) und noswap (wir haben kein beschreibbares Dateisystem wo man hinswappen könnte) in der Datei /boot/cmdline.txt.

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fastboot noswap

Alias für rw und ro

Nach einem Neustart würde man nun in einem read-only Dateisystem landen. Um das Dateisystem beschreibbar zu machen, kann man den Befehl sudo mount -o remount,rw / ; sudo mount -o remount,rw /boot nutzen.
Das kann man mit einem bash alias etwas eleganter machen (wie man es eventuell von Pi-Star kennt).

Wir fügen folgendes an die Datei /etc/bash.bashrc an:

set_bash_prompt(){
fs_mode=$(mount | sed -n -e "s/^\/dev\/.* on \/ .*(\(r[w|o]\).*/\1/p")
PS1='\[\033[01;32m\]\u@\h${fs_mode:+($fs_mode)}\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
}

alias ro='sudo mount -o remount,ro / ; sudo mount -o remount,ro /boot'
alias rw='sudo mount -o remount,rw / ; sudo mount -o remount,rw /boot'

PROMPT_COMMAND=set_bash_prompt

Nachdem man sich neu eingeloggt hat, wird nun in der Kommandozeile angezeigt, ob das Dateisystem aktuell schreibbar ist oder nicht (rw / ro). Mit den Befehlen rw und ro kann nun zwischen den beiden Zuständen gewechselt werden.
Will man nun z.B. die svxlink.conf bearbeiten, muss man vorher in den rw Modus wechseln und danach auch wieder in ro.

Besonderheiten

Zeitsynchronisation

Die der Standarddienst zur Zeitsynchronisation über Netzwerk systemd-timesyncd ist ebenfalls auf beschreibbare Dateien angewiesen, deren Zielorte wir mit obigen Kommandos allerdings nicht nicht abgedeckt haben. Es sind folgende Änderungen notwendig um den Service weiterhin nutzen zu können.
In /lib/systemd/system/systemd-timesyncd.service müssen folgende Zeilen auskommentiert bzw. geändert werden:

#CapabilityBoundingSet=CAP_SYS_TIME
#PrivateTmp=yes
StateDirectory=

Nach dem Ändern der Datei muss sie mit sudo systemctl daemon-reload neu eingelesen werden. Nach einem Neustart sollte der Dienst seinen Dienst aufnehmen.

Cronjobs

Was wir nun vermissen werden, ist das Dienstprogramm cron. cron legt Dateien werden in /var/spool/crontab abgelegt, was nun auf /tmp gemappt ist und somit beim Reboot verloren geht.
Lösung: Wir können unsere Cronjobs auch einfach in /etc/crontab ablegen.
Dort habe ich nun die Cron calls für die Telemetrie (Temperatur- und Lüftersensor) abgelegt – weitere Infos dazu in einem der nächsten Artikel!

Im nächsten Beitrag werde ich beschreiben welche Anpassungen ich noch an der Konfiguration von svxlink vorgenommen habe, die über die reine Anpassung der Konfigurationsdatei hinausgehen.

Neubau von DB0TR und DB0FHR

Aufbau im 19 Zoll 2HE Rack

In letzter Zeit war der Betrieb von DB0TR von vielen Problemen und Ausfällen gekennzeichnet. Ganz zum Ärger vieler OMs, da dieses Hochries Relais einen recht großen Einzugsbereich hat.

Nach vielen Reparaturen und Verbesserungsversuchen haben wir uns letztlich zu einem Neubau mit professionellen Funkgeräten von Motorola entschlossen. Bei der Gelegenheit wollten wir auch gleich einige Funktionen wie Temperaturüberwachung der PA und ein SvxLink Modul mit Echolink implementieren.

Im Aufmacherfoto sieht man die Anordnung der einzelnen Komponenten. Diese sind nicht willkürlich, sondern genau durchdacht angeordnet. Die beiden Motorola Geräte (ein Gerät arbeitet im RX Betrieb, während das zweite beim Auftasten den TX Betrieb aufnimmt) sind völlig identisch programmiert. So kann man im Falle eines Defektes die beiden Geräte tauschen und so relativ kurzfristig wieder die Funktion herstellen. Wir hoffen natürlich, daß das nicht notwendig sein wird.

Direkt am Lüfter ist das TX-Gerät angeordnet, da dieses die größte Wärme erzeugt und so direkt mit kalter Frischluft angeblasen wird. Das RX-Gerät entwickelt keine Wärme und die entweichende Luft streicht noch über den Raspberry bevor es über die Bohrungen in der Rückwand wieder das Gerät verlässt.

Oben ist DB0FHR abgebildet, DB0TR ist völlig identisch aufgebaut. Es ist noch eine Stromspar-Variante für DB0TR mit 2 Handfunkgeräten geplant. Dazu mehr im nächsten Artikel.

Andreas, DH9AT

SvxLink Installation und Konfiguration

Beim Aufbau unserer neuen Repeaterhardware für DB0TR und DB0FHR verwenden wir die Software SvxLink zur Ablaufsteuerung und um weitere Funktionen zur Verfügung zu stellen, wie etwa Echolink-Anbindung.

SvxLink läuft innerhalb des Repeaters auf einem Raspberry Pi 3B+, aber auch ältere Hardwareversionen bieten ausreichend Leistung. Zur Ansteuerung der Funkgeräte und Verarbeitung des empfangenen und zu sendenden Audiosignals ist etwas Peripherie notwendig (u.a. eine externe Soundkarte). Wir nutzen eine eigens dafür hergestellte Platine für diesen Zweck. Die Platine wird demnächst in einem weiteren Artikel vorgestellt.

Es gibt diverse Anleitungen für die Installation von SvxLink auf einem Raspberry, allerdings entwickelt sich einerseits SvxLink, andererseits RaspberryOS/Debian immer weiter, so dass der Teufel manchmal im Detail steckt und die Anleitungen schnell veralten.
Zudem will ich ein paar Extras vorstellen, die nicht bei allen Anleitungen mit enthalten sind, wie z.B. das einrichten eines read-only Dateisystems für den Raspi, so dass die SD Karte nicht unnötig strapaziert wird.

Unsere Platine bietet außerdem noch ein paar kleine Extras, wie das Messen von Temperatur und der Lüfterdrehzahl im Gehäuse und versenden dieser Daten über MQTT. Die Scripte zum Auslesen dieser Daten stelle ich auch separat vor.

Grundkenntnisse im Umgang mit Linux werden vorausgesetzt – und leider kann ich keine Garantie auf Vollständigkeit und Aktualität der Informationen geben, hoffe aber dass es hier und da weiterhilft.

Nun also zum ersten Thema dieser Serie:

Installation von SvxLink auf Debian 11 (Bullseye), Kernel 5.10

Raspbian-Image installieren & erste Schritte

Nach dem Download des Images “Raspberry Pi OS Lite” von https://www.raspberrypi.com/software/operating-systems/ und aufspielen auf die SD Karte wird durch das Erstellen einer Datei mit dem Namen “ssh” (ohne Inhalt) auf der Partition “boot” der SD Karte der SSH Zugang über Netzwerk freigeschaltet.

Mit “sudo raspi-config” sollten folgende Dinge eingestellt werden:

  • System Options
    • Passwort
    • Hostname
  • Advanced Options
    • Expand Filesystem

Zudem sollte wie üblich mit “sudo apt update && sudo apt upgrade -y” das System auf den neuesten Stand gebracht werden.

Installation der SvxLink Abhängigkeiten

Nach einem Neustart geht es weiter mit der Installation der Abhängigkeiten, um SvxLink zu compilieren und zu benutzen.
SvxLink ist nicht in aktuellen Debian-Paketquellen enthalten, daher müssen wir das Programm selbst compilieren.

Mit folgenden Befehlen werden die notwendigen Bibliotheken und Hilfsprogramme installiert:

sudo apt install cmake git
sudo apt install libsigc++-2.0-dev
sudo apt install libpopt0 libpopt-dev tcl tcl-dev libgcrypt20 libgcrypt20-dev libasound2 libasound2-dev libgsm1 libgsm1-dev libspeex1 libspeex-dev libopus0 libopus-dev librtlsdr0 librtlsdr-dev libcurl4 libcurl4-gnutls-dev libjsoncpp-dev libgpiod-dev libogg-dev
sudo apt install alsa-utils opus-tools

Anlegen des SvxLink-Benutzers

SvxLink wird unter einem eigenen Benutzerkonto ausgeführt. Dieses wird angelegt mit:

sudo groupadd svxlink
sudo useradd -g users -rG svxlink,audio,plugdev,gpio,dialout svxlink

Download & Compilieren von SvxLink

Es gibt unter https://github.com/sm0svx/svxlink zwar eine Unterseite “Releases”, diese wird jedoch anscheinend nicht gepflegt. Auf Nachfrage wurde mir versichert, dass es OK sei, jeweils den jüngsten Stand des “master” Branches zu benutzen.

Also holen wir uns den aktuellsten Code und entpacken ihn:

wget https://github.com/sm0svx/svxlink/archive/refs/heads/master.zip
unzip master.zip
cd svxlink-master

Danach wird compiliert:

cd src
mkdir build
cd build
cmake -DUSE_QT=OFF -DWITH_SYSTEMD=ON ..
make -j 4
sudo make install
sudo ldconfig

Mit -DUSE_QT=OFF werden die graphischen Anwendungen (qtel) nicht gebaut, da wir das auf dem Repeater nicht benötigen. -DWITH_SYSTEMD=ON konfiguriert SvxLink als systemd Service, was z.B. den automatischen Start beim Boot vereinfacht.

Download & Installation der Sounddateien

Für die gesprochenen Soundausgaben ist es notwendig, ein Sprachpaket herunterzuladen. Das Standard-Sprachpaket ist en_US.

cd /usr/local/share
sudo mkdir -p svxlink/sounds && cd svxlink/sounds/
sudo wget https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/19.09/svxlink-sounds-en_US-heather-16k-19.09.tar.bz2
sudo tar xvjf svxlink-sounds-en_US-heather-16k-19.09.tar.bz2
sudo ln -s en_US-heather-16k en_US

Es gibt im Internet auch deutsche Sprachpakete zum Download, teilweise sind diese allerdings mit lizenzierter Sprachsynthesesoftware erstellt worden, daher verlinke ich nicht direkt auf ein Paket. Kurze Suche sollte zum Erfolg führen, die Lizenzbedingungen bitte selber prüfen. Das deutsche Sprachpaket wird dann in einen neuen Ordner de_DE ins “/usr/local/share/svxlink/sounds” Verzeichnis entpackt und die Sprache in der SvxLink Konfiguration (siehe unten) als DEFAULT_LANG=de_DE aktiviert.

SvxLink Konfiguration

GPIO Pins

In /usr/local/etc/svxlink/gpio.conf die Pins einstellen die an SQL und PTT angeschlossen werden. In unserem Fall:

GPIO_IN_LOW="gpio22"
GPIO_OUT_LOW="gpio17"

Diese Konfiguration wird vom Service “svxlink_gpio_setup” automatisch vor dem Start des eigentlichen SvxLink Services ausgeführt.

SvxLink Konfiguration

In /usr/local/etc/svxlink/svxlink.conf ist die Konfiguration der SvxLink Software gespeichert. Hier ein Auszug relevanter Teile unserer Konfiguration:

[GLOBAL]
LOGICS=RepeaterLogic
CFG_DIR=svxlink.d
TIMESTAMP_FORMAT="%c"
CARD_SAMPLE_RATE=48000
LOCATION_INFO=LocationInfo
TIME_FORMAT="24"

[RepeaterLogic]
TYPE=Repeater
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink
CALLSIGN=DB0TR
SHORT_IDENT_INTERVAL=10
EVENT_HANDLER=/usr/local/share/svxlink/events.tcl
DEFAULT_LANG=de_DE
RGR_SOUND_DELAY=0
MACROS=Macros
FX_GAIN_NORMAL=0
FX_GAIN_LOW=0
IDLE_TIMEOUT=3
OPEN_ON_SQL=0
OPEN_SQL_FLANK=OPEN

[Rx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
SQL_DET=GPIO
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=0
GPIO_PATH=/sys/class/gpio
GPIO_SQL_PIN=gpio22
DEEMPHASIS=0
SQL_TAIL_ELIM=0
PREAMP=3
PEAK_METER=1
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=40
DTMF_SERIAL=/dev/ttyS0

[Tx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
PTT_TYPE=GPIO
PTT_PIN=gpio17
TX_DELAY=0
PREEMPHASIS=0
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
MASTER_GAIN=6.0

Die Variablen PREAMP und MASTER_GAIN steuern die Verstärkung des ein- und ausgehenden Audiostreams, separat zu dem synthethisch erzeugtem Audio, das mit den FX_GAIN_… Variablen gesteuert wird. Weitere Stellschrauben für die Lautstärken sind der Linux alsamixer und die Potis auf der Platine.

Falls wie in unserem Fall das Modul Echolink benutzt wird, muss zusätzlich noch die Datei ./svxlink.d/ModuleEcholink.conf angepasst werden.

In der Datei /usr/local/default/etc/svxlink muss der Pfad der Logdatei noch auf /var/log/svxlink angepasst werden.

Aktivieren von Autostart von SvxLink und erster Start

Nachdem die Konfiguration durchgeführt wurde, kann der SvxLink Service gestartet werden:

sudo systemctl start svxlink

Der Erfolg kann mit

sudo systemctl status svxlink

kontrolliert werden. Die Logdatei ist unter /var/log/svxlink zu finden.

Damit SvxLink beim nächsten Systemstart automatisch ausgeführt wird, kann der Service dauerhaft aktiviert werden:

sudo systemctl enable svxlink

Ausblick

Im nächsten Teil stelle ich die erweiterte Konfiguration unseres Setups vor. Wir ändern ein paar Dinge in SvxLink die nicht einfach über die Konfigurationsdatei zu ändern sind (z.B. Korrektur der Zeitansage in deutsch) und verpassen dem Raspberry ein read-only Dateisystem um die SD-Karte zu schonen.

Neues MMDVM Digitalrelais DB0HOB auf Motorola Basis

Die Inbetriebnahme des neuen Digitalrelais DB0HOB ist nun schon eine Weile her (Ende Juni 2020) – trotzdem möchte ich nicht versäumen, einen Überblick über die neue Hardware und weitere Details zu geben.

In der Zeit davor war ein mit dem STM32-DVM Raspberry Modul von Repeater Builder umgebautes Yaesu DR-1X Relais im Einsatz. Allerdings haben sich im Laufe der Zeit die Schwächen des Geräts gezeigt. Das “Schwestergerät” DB0TR mit der selben Hardware hat immer mal wieder Zuverlässigkeitsprobleme. Zudem war es trotz der geballten Kompetenz mehrerer OMs im OV nicht gelungen, DMR für alle üblichen Modelle von Endgeräten (Hytera, Tyt, Anytone, …) gleichermaßen zum Laufen zu bringen. Somit war der Betrieb lange Zeit auf D-Star und YSF beschränkt.

Daher war irgendwann Ende 2019 die Entscheidung gefallen ein Digitalrelais auf Basis von Motorola Geräten aufzubauen, wie es auch schon diverse andere OVs erfolgreich getan haben.

Hardware

Zum Einsatz kommt ein Motorola GM950 (M08RHF6AN2AN) und ein GM300 (M04GMC10D3AA). Die Auswahl wurde relativ spontan auf Basis der aktuellen Verfügbarkeit von Geräten in den Kleinanzeigen/eBay getroffen. Zudem war natürlich geprüft worden ob der Frequenzbereich stimmt und ob es jemanden im Bekanntenkreis gibt, der die Geräte auf die neuen Frequenzen und sonstigen Einstellungen programmieren kann. (Vielen Dank hier an Daniel, DL6FZ!)

Das GM950 stammt aus der “Ariane” Serie von Motorola und ist dem GM300 empfangsmäßig unterlegen. Daher wird das GM950 sendeseitig eingesetzt. Ausser den Einstellungen für Frequenz, TOT, etc. im Codeplug sind keinerlei Modifikationen am Gerät notwendig gewesen.

Um das GM300 zusammen mit der MMDVM Platine zu verwenden, müssen zwei Jumper innerhalb des Geräts umgesetzt werden, um die NF Ausgangsfilter entsprechend zu konfigurieren: P551 auf Position “A”, P601 auf Position “B”.

Umzusetzende Jumper im Inneren des Motorola GM300

Als MMDVM Platine wird das Repeater Kit Board Linker v3 von BI7JTA verwendet. Praktischerweise werden dort auch Adapterplatinen angeboten, die direkt in den Accessory Anschluss der Motorola Geräte passen. Praktischerweise kann dort mit einem Poti auch der Rx-Pegel eingestellt werden. Die MMDVM Platine erwartet hier ca. 1,2 Vpp.

Die MMDVM Platine läuft auf einem Rasperry Pi 3 Model B+ mit dem Pi-Star Image.

GM950Pin
TXD5
PTT3
GND7
GM300Pin
RXD11
RSSI15
GND7
Relevante Pins des Accessory Anschlusses (Vorsicht, kann je nach Motorola Modell abweichen, Handbuch beachten!)
Um sicherzustellen dass das ganze die Mühe wert ist, wurde vor der Integration in ein 19″ Gehäuse ausgiebig mit diversen Funkgeräten getestet.

Integration

Für die Integration in ein 19″ Gehäuse wurde ein bereits vorhandenes Gehäuse recycelt. Es war bereits mit einem Pi-Star kompatiblen Nextion Display ausgestattet und hatte mehr als genug Löcher für alle Anschlüsse.

Es wird ein 92 mm Lüfter von Arctic verwendet. Die vorhandenen Lüftungsöffnungen sind suboptimal (Geräuschentwicklung), aber für den Zweck ausreichend.

Die Funkgeräte sind mittels 3D-gedruckter Winkel am Gehäuseboden fixiert, wobei das GM950 etwas angehoben ist, um auch an der Unterseite von frischer Luft beströmt zu werden.

Vorderansicht
Rückansicht
Ansicht von oben (links: GM950 für Tx, rechts: GM300 für Rx)

Die Spannungsversorgung erfolgt über einen Powerpole Verbinder (mit 3D-gedruckter Halterung) auf eine Verteilplatine mit DC-geeigneten Feinsicherungen. Der Raspberry wird durch einen von Xaver, DB2XF modifizierten Schaltwandler versorgt.

Inbetriebnahme

Nach der Installation des Pi-Star Images müssen die einschlägigen Einstellungen zur Integration in die Digitalnetzwerke der drei Betriebsmodi DMR, D-Star und YSF vorgenommen werden.

Zudem ist es notwendig, den Rx und Tx Pegel für den DMR Betrieb zu kalibrieren. Es gibt diverse Anleitungen dafür, z.B. hier.

Als weiteres Feature wurde ein BM280 Temperatursensor und ein ADS1115 AD Wandler über I2C an den Raspberry angeschlossen. Der Temperatursensor überwacht die Innentemperatur des Gehäuses. Mit dem AD Wandler soll zukünftig über eine Messbrücke das aktuelle SWR und Leistung protokolliert werden. Die Daten werden alle 60 Sekunden an unseren DB0HOB MQTT Broker gesendet und in einer Datenbank abgelegt.

Diese Daten werden unter dashboard.db0hob.charly14.de visualisiert und zeigen neben der Temperatur des Geräts auch die Auslastung durch die verschiedenen Betriebsmodi. Dabei wird auch ersichtlich, welchen Anteil Aktivierungen aus dem Netz haben und wie oft der Repeater lokal aktiviert wird. Das übliche Pi-Star Dashboard ist unter pi-star.db0hob.charly14.de erreichbar.

Das DB0HOB Dashboard

Das Gerät läuft nun seit ca. 3 Monaten problemlos. Den Statistiken zufolge werden vor allem YSF und DMR ausgiebig genutzt. Die Empfindlichkeit ist zufriedenstellend, soll aber noch durch den Einbau eines Bandpassfilters im Rx Zweig verbessert werden.
In Summe belaufen sich die Anschaffungskosten für das Gerät auf ca. 230 Eur (ca. 100 Euro für die Funkgeräte, 100 Euro für Raspi und MMDVM Platine, 30 Euro für Kleinteile).

Bei weiteren Fragen zum Aufbau des Geräts, den verwendeten Teilen, den 3D-Druck Teilen und der Konfiguration des Raspberrys stehe ich gerne zur Verfügung.
Danke an alle, die mir mit Rat und Tat zur Seite standen!

73,
Chris DL1COM