FM-Hotspot für Raspberry Pi
FM-Hotspot USB-powered mit CM108B Soundchip und SA818-TRX-Modul
Bei Aliexpress kann man hier für ca. 70€ einen kleinen FM-Hotspot erwerben, der USB-powered läuft und für einen Raspberry Pi >2B gedacht ist, aber auch aufgrund seiner USB-Konnektivität an anderen Linux-basierenden Systemen zum Einsatz kommen könnte. Gedacht ist er für die Softwareapplikationen SVXLINK und AllStarLink. Ich gehe hier nur auf den Einsatz und die Verwendung mit SVXLINK ein, einer Open-Source-Software von Tobias/SM0SVX zur kompletten Steuerung von FM-Relais (duplex) oder FM-Simplex-Systemen (z.H. Hotspots) mit Zusatzmodulen wie u.a. einer ECHOLINK-Anbindung.
0. Vorwort
Dieser hier vorgestellte FM-Hotspot darf entsprechend aktuell gültiger Gesetze und Vorschriften der Bundesrepublik Deutschland nur von Funkamateuren mit einer gültigen Amateurfunklizenz verwendet und betrieben werden !
Diese Anleitung setzt auch grundsätzlich voraus, das für das Betriebssystem Linux und SVXLINK grundsätzliche Basiskenntnisse vorhanden sein müssen.
1. Technischer Aufbau
Dieses Hotspot-Modul ist ein Simplex-FM-Transceiver und besteht im Wesentlichen aus folgenden Komponenten:
- Soundchip CM108B (USB Anschluß rechts)
- FM-Modul-TRX SA818 (0.5W/1W) VHF/UHF, je nach Ausführung
- CH340 serial converter (USB Anschluß links) zur Programmierung des SA818
- verschiedene LEDs zur Signalisierung verschiedener Betriebszustände (Hinweis: die COS-LED ist derzeit mit SVXLINK nicht nutzbar)
Die Sendertastung EIN/AUS (PTT) und die Rauschsperrenauswertung (SQL) erfolgt durch integrierte GPIO-Möglichkeiten des Soundchips CM108B per USB über sog. HID_RAW_DEVICES. Linux und SVXLINK unterstützen diese Option nativ im Kernel, es ist keine zusätzliche Software oder Libraries erforderlich. Damit kann z.B. bei einem Raspberry Pi der gesamte GPIO-Header für andere Zwecke frei bleiben.
Da dieses Modul USB-Bus-powered ist, MUSS der USB-Port hier bis 1A(!) liefern können. Ursprünglich war USB nur bis 500mA Stromentnahme spezifiziert. Beim Raspberry Pi ist in der /boot/config.txt folgende Zeile zu ergänzen, um bis 1,2A Last an den USB-Ports zu ermöglichen:
max_usb_current=1
Dieses Hotspot-Modul basiert auf einem Hamradio-Projekt aus den USA, genannt SHARI. Zum Download der dort angegeben PDF-Dateien ist leider ein Account bei groups.io erforderlich und die Gruppe https://groups.io/g/shari muss abonniert werden, sonst ist der Zugriff auf die Files-Sektion leider nicht möglich. Hier findet man auch die entsprechenden Schaltbilder.
2. Anpassungen für die Nutzung von SVXLINK
2.0 Anpassungen im Linux
Wir erstellen unter /etc/udev/rules.d/ eine neue Datei mit dem Namen 90-cm108.rules und ergänzen diese Datei mit folgendem Inhalt:
KERNEL=="hidraw*", GROUP="input", MODE="0666"
und starten das System einmal neu.
2.1 Programmierung des SA818-TRX-Modules
Die Programmieroptionen bitte dem Datenblatt des SA818 (Hersteller Nice-RF) entnehmen.
Bitte AT+SETFILTER=1,1,1 und AT+DMOSETVOLUME=7 und AT+SETTAIL=0 genau so programmieren, Frequenz, CTCSS (Tabelle im Datenblatt SA818 verfügbar) und SQL-LEVEL (hier: 3) kann jeder anpassen wie gewünscht. Bitte immer aktuelle Bandpläne beachten und unbedingt den Satellitenbereich meiden !
Es hat sich gezeigt, das die Bandbreite 25kHz bessere Ergebnisse liefert als 12,5kHz. Das war bereits bei den älteren DRA818 so und ist auch bei den hier eingesetzten, neueren SA818-Modulen so. Für die private Nutzung steht also einer Bandbreite von 25kHz nichts im Weg, nur die öffentlichen Relais MÜSSEN mit 12.5kHz betrieben werden, das ist dort Teil der Lizenzbedingungen/Zulassung für automatische Amateurfunkstationen.
Als Beispiel soll das Modul auf 430.025 Mhz, 25Khz Bandbreite mit CTCSS 77Hz (RX+TX) programmiert werden:
AT+DMOSETGROUP=1,430.0250,430.0250,0004,3,0004
# flataudio with all filters OFF
AT+SETFILTER=1,1,1
# optimal audio volume output for AUDIO-IN soundcard
AT+DMOSETVOLUME=7
AT+SETTAIL=0
Die vom USB-2-Serial-Converter erzeugte serielle Schnittstelle lautet /dev/ttyUSB0 (bei angestecktem Modul).
2.2 notwendige Anpassungen der svxlink.conf
Hinweis: Nur die relevanten Optionen für diesen Hotspot werden hier gezeigt
[GLOBAL]
LOGICS=SimplexLogic,ReflectorLogic
CARD_SAMPLE_RATE=48000
CARD_CHANNELS=1
[SimplexLogic]
TYPE=Simplex
RX=Rx1
TX=Tx1
# CTCSS AUS das 818 erzeugt das selbst
# TX_CTCSS=ALWAYS
OPEN_ON_SQL=500
MUTE_RX_ON_TX=1
MUTE_TX_ON_RX=1
[Rx1]
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
SQL_DET=HIDRAW
SQL_START_DELAY=50
# stoppt unkontrolliertes Auftasten des Senders
SQL_DELAY=200
SQL_HANGTIME=100
HID_DEVICE=/dev/hidraw0
HID_SQL_PIN=VOL_DN
SIGLEV_DET=NONE
DEEMPHASIS=1
PREAMP=0
PEAK_METER=1
[Tx1]
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
PTT_TYPE=Hidraw
HID_DEVICE=/dev/hidraw0
HID_PTT_PIN=GPIO3
# HS: bei den 818 braucht der TX etwas laenger
TX_DELAY=800
PREEMPHASIS=1
MASTER_GAIN=0.0
CTCSS wird vollständig in der Hardware durch das SA818 umgesetzt, sowohl die empfangsseitige Auswertung (durch SQL-Signalleitung) als auch die sendeseitige Erzeugung, siehe auch 2.1 Programmierung des SA818-TRX-Modules
2.3 Einstellungen am ALSAMIXER
Aufrufen des Alsamixers:
$ alsamixer -c 1
F5 drücken und wie im folgenden Screenshot die Pegel definieren:
Wichtig ist, AUTO GAIN CONTROL mit der Taste m zu muten, es muss dort MM angezeigt werden.