Nachdem ich bereits ein paar LoRa-APRS iGates und LoRa-APRS Tracker aufgebaut habe, dachte ich mir es wäre schön wenn man einige meiner Standorte mit einem 2m APRS iGate komplettieren würde. Das Gateway empfängt die APRS Pakete auf der europäischen APRS-Frequenz 144.800 MHz (2m Band) und überträgt diese über Internet (bzw. HAMNET) an einen APRS-IS-Tier2-Server weiter.
Die hier aufgelisteten Arbeitsschritte sind ein Werk aus meiner Erfahrung beim Aufbau der iGates und einer Zusammenfassung aus den Blog´s von
– Stefan (OE1SCS): https://stefan.schultheis.at/2016/aprs-igate-hamnet-pymultimonaprs/
– Benjamin (DL6BEN): http://dl6ben.darc.de/?APRS-Rasperry_iGate
– Stephan (DO7PSL): https://do7psl.de/aprs-igate-raspberry-pi/
– Raspberry Headless Setup & RTL-SDR: https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/raspberry-headless-setup-rtl-sdr
– Marco (DL1MX) english: https://www.kubonweb.de/?p=130
Der Aufbau eines solchen iGates ist relativ einfach und in der hier beschriebenen Reihenfolge habe ich mein APRS iGate konfiguriert. Folgendes Equipment wird zum Aufbau benötigt
- Raspberry Pi (ich verwende einen Pi2)
- RTL-SDR Stick (RTL2832U, DVB-T Stick)
- Antenne (ich verwende einmal eine einfach Magnetfußantenne und einmal eine Diamond X-30)
- eventuell benötigst du noch Adapter für den Antennenanschluss an den RTL-SDR Stick
Hat man alles zusammen kann man mit der Installation und Konfiguration der Software beginnen.
Installation
Raspberry Pi updaten
- sudo apt-get update
- sudo apt-get upgrade
Standard RTL-Treiber deinstallieren
Als erstes muss man die standard RTL-Treiber des Raspberry deinstallieren. Das ist notwendig damit man RTL-SDR Stick auf der gewollten 144.800 MHz nutzen kann . Dazu muss man die Datei /etc/modprobe.d/raspi-blacklist.conf anpassen damit die Standard-Treiber nicht geladen werden.
Die Datei /etc/modprobe.d/raspi-blacklist.conf wird nun mit
- cd ~
- cd /etc
- cd modprobe.d
- sudo nano raspi-blacklist.conf
aufgerufen und die notwendigen Zeilen eingetragen.
blacklist dvb_usb_rtl28xxu
blacklist rtl_2832
blacklist rtl_2830
blacklist r820t
Die Datei speichern und schliessen.
Um die alten Treiber zu entfernen muss man den Raspberry Pi neu starten.
- sudo reboot
RTL-SDR Software und Treiber installieren
Den RTL-SDR USB Stick am Raspberry Pi anstecken.
- cd ~
- sudo apt-get install git git-core cmake libusb-1.0-0-dev build-essential
- git clone git://git.osmocom.org/rtl-sdr.git
- cd rtl-sdr
- mkdir build
- cd build
- cmake ../ -DDETACH_KERNEL_DRIVER=ON -DINSTALL_UDEV_RULES=ON
- make
- sudo make install
- sudo ldconfig
- sudo cp ~/rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
- sudo reboot
RTL-SDR Stick und Treiber testen
Anzeigen der USB Geräte
- lsusb
Mit folgenden Befehl kannst du den Stick testen
- rtl_test -t
Wenn alles geklappt hat, wird der RTL-SDR Stick erkannt und angezeigt.
pi@raspberrypi:~ $ rtl_test -t Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Using device 0: Generic RTL2832U OE Found Rafael Micro R820T tuner Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 [R82XX] PLL not locked! Sampling at 2048000 S/s. No E4000 tuner found, aborting. pi@raspberrypi:~ $
Hier werden dir dann auch die unterstützen Werte für die Verstärkung „gain“ aufgelistet. Am besten hier einen screenshot machen, damit man die möglichen gain Werte für die weitere Konfoguration bei der Hand hat. Eventuell muß man hier nämlich ein bisschen mit den gain Werten probieren um das Optimum für den Standort zu finden.
RTL-SDR Stick kalibrieren
Da der Stick nicht genau auf der eingestellten Frequenz empfängt, muss er vorher noch kalibriert werden.
Die dafür notwendige Software installierst du wie folgt.
- cd ~
- sudo apt-get install libtool autoconf automake libfftw3-dev
- git clone https://github.com/asdil12/kalibrate-rtl.git
- cd kalibrate-rtl
- git checkout arm_memory
- ./bootstrap
- ./configure
- make
- sudo make install
Dann suchst du mit folgendem Befehl den stärksten Mobilfunksender in deiner Umgebung.
- kal -s GSM900
pi@raspberrypi:~ $ kal -s GSM900 Found 1 device(s): 0: Generic RTL2832U Using device 0: Generic RTL2832U Found Rafael Micro R820T tuner Exact sample rate is: 270833.002142 Hz [R82XX] PLL not locked! kal: Scanning for GSM-900 base stations. GSM-900: chan: 2 (935.4MHz - 27.784kHz) power: 66035.60 chan: 3 (935.6MHz + 36.185kHz) power: 1083181.23 chan: 4 (935.8MHz - 27.566kHz) power: 2205988.43 chan: 13 (937.6MHz - 26.764kHz) power: 1077050.72 chan: 15 (938.0MHz - 26.575kHz) power: 451110.93 chan: 24 (939.8MHz - 25.804kHz) power: 192925.85 chan: 64 (947.8MHz - 25.107kHz) power: 129985.50 pi@raspberrypi:~ $
Es werden je nach Empfang mehrere Kanäle „chan“ angezeigt.
Der „chan“ mit dem höchsten „power“-Wert wird nun ausgewählt. (Kanalnummer notieren)
Nun wird mit folgendem Befehl die Frequenzabweichung in Parts per Million (ppm) ermittelt. (ppm Wert notieren)
- kal -c Kanalnummer
pi@raspberrypi:~ $ kal -c 4 Found 1 device(s): 0: Generic RTL2832U Using device 0: Generic RTL2832U Found Rafael Micro R820T tuner Exact sample rate is: 270833.002142 Hz [R82XX] PLL not locked! kal: Calculating clock frequency offset. Using GSM-900 channel 4 (935.8MHz) average [min, max] (range, stddev) - 22.090kHz [-22106, -22073] (33, 9.302522) overruns: 0 not found: 0 average absolute error: 23.606 ppm pi@raspberrypi:~ $
APRS IGate Software installieren
Zuerst benötigt man den multimon-ng Decoder, da pymultimonaprs die Messages nicht selbst dekodiert.
- cd ~
- sudo apt-get install cmake
- git clone https://github.com/EliasOenal/multimon-ng.git
- cd multimon-ng
- mkdir build
- cd build
- cmake ..
- make
- sudo make install
Du kannst jetzt schon APRS Pakete empfangen. Mit der folgenden Befehlszeile stellst du den Empfänger auf die APRS-Frequenz von 144.800 MHz ein. Hinter dem Parameter –p gibst du die Frequenzabweichung in ppm ein und hinter –g den Wert für die Verstärkung.
- rtl_fm -f 144800000 -s 22050 -p 23 -g 48.0 – | multimon-ng -a AFSK1200 -A -t raw –
Nach einiger Zeit sollten dann APRS-Pakete dekodiert und angezeigt werden.
Dann folgt die Installation der pymultimonaprs Software, damit die empfangen APRS Pakete auch ins Internet weitergeleitet werden.
- cd ~
- sudo apt-get install python2.7 python-pkg-resources
- git clone https://github.com/asdil12/pymultimonaprs.git
- cd pymultimonaprs
- sudo python2 setup.py install
Startscript erstellen
Folgendes Startscript sorgt dafür das pymultimonaprs nach dem Systemstart automatisch gestartet wird.
- cd ~
- cd pymultimonaprs
- sudo cp pymultimonaprs.init /etc/init.d/pymultimonaprs
- sudo chmod +x /etc/init.d/pymultimonaprs
- sudo update-rc.d pymultimonaprs defaults
Konfiguration
Damit das APRS iGate die empfangenen Daten korrekt ins Internet weiter leitet, wird die Datei pymultimonaprs.json angepasst.
Folgende Infos müssen individuell auf dein Rufzeichen und die Standortkoordinaten des Gateways konfiguriert werden.
- Rufzeichen des iGates inkl. Suffix
- APRS-Passcode passend zum Rufzeichen
- Frequenz (144.800 MHz)
- Ermittelter ppm Wert
- Ermittelter gain Wert
- Koordinaten vom Standort des APRS iGates in Dezimalgrad
Für die Übertragung ins APRS-IS-Netzwerk ist ein Passcode notwendig. Im Internet findet man zahlreiche Seiten um seinen APRS-Passcode zu generieren wie z.B. https://apps.magicbug.co.uk/passcode/
Mit folgendem kleine Script kannst du dir deinen APRS-Passcode direkt am Raspberry generieren. Die Eingabe des Rufzeichens erfolgt ohne SSID.
- cd ~
- cd pymultimonaprs
- ./keygen.py CALLSIGN
Key for CALLSIGN: 26856
Die Datei /etc/pymultimonaprs.json wird nun mit
- cd ~
- cd /etc
- sudo nano pymultimonaprs.json
aufgerufen und die notwendigen Parameter eingetragen.
{
"callsign": "CALLSIGN-SSID",
"passcode": "26856",
"gateway": ["euro.aprs2.net:14580","noam.aprs2.net:14580"],
"preferred_protocol": "any",
"append_callsign": true,
"source": "rtl",
"rtl": {
"freq": 144.800,
"ppm": 0,
"gain": 0,
"offset_tuning": false,
"device_index": 0
},
"alsa": {
"device": "default"
},
"beacon": {
"lat": 48.00000,
"lng": 16.00000,
"table": "/",
"symbol": "&",
"comment": "MultimonAPRS iGate",
"status": {
"text": "iGate via Raspberry Pi with RTL-SDR dongle",
"file": false
},
"weather": false,
"send_every": 1800,
"ambiguity": 1
}
}
Die Konfiguration ist nun fertig und das Script wird wie folgt gestartet.
- sudo /etc/init.d/pymultimonaprs start
bzw. wie folgt beendet.
- sudo /etc/init.d/pymultimonaprs stop
Weitere Befehle sind noch status (zeigt den aktuellen Status des Scripts) und restart (Neustart des Scripts).
- sudo /etc/init.d/pymultimonaprs status
- sudo /etc/init.d/pymultimonaprs restart
Zusatzinfos zur Konfiguration
Mögliche weiter APRS Server
APRS-Server via Internet | APRS-Server via Hamnet |
euro.aprs2.net noam.aprs2.net austria.aprs2.net germany.aprs2.net ffl.aprs2.net rotate.aprs2.net rotate.aprs.net | OE1XDS: 44.143.10.90 bzw. aprs.oe1.ampr.at OE2XZR: 44.143.40.90 bzw. aprs.oe2xzr.ampr.at OE7XGR: 44.143.168.96 bzw. aprs.oe7xgr.ampr.at OE2XWR: 44.143.43.90 OE2XGR: 44.143.41.29 OE5XUL: 44.143.105.158 DB0FFL: 44.149.16.136 |
Für die Umrechnung der Koordinaten (falls notwendig) empfehle ich diese Seite: https://www.koordinaten-umrechner.de/
Das angezeigte Symbol kann mit „table“ und „symbol“ eingestellt werden. Ich lasse mal den Defaultwert. Zur Erklärung gibt es einen informativen Link. http://www.aprs.org/symbols.html
Individuelle Kommentare kann man bei „comment“ und „status“ => „text“ eingeben.
Damit meine Aussendung alle 30 Minuten (=1800 Sekunden) übertragen wird, trage ich den Wert 1800 bei „send_every“ ein.
Bei „ambiguity“ wird die Genauigkeit der Positionsdaten festgelegt. Hier habe ich auf „1“ gesetzt um meine Positionen nicht genau im APRS darzustellen. Details dazu auf folgender Seite: https://github.com/asdil12/pymultimonaprs
INFO: Der Betrieb solcher Funkanlagen setzt eine gültige Amateurfunklizenz voraus.
Link Zusammenfassung
- multimon-ng: https://github.com/EliasOenal/multimon-ng
- pymultimonaprs: https://github.com/asdil12/pymultimonaprs
- Info Autostart: https://tutorials-raspberrypi.de/raspberry-pi-autostart-programm-skript/
Einkaufsliste
- Raspberry Pi 3B+
- RTL-SDR Stick (hier gibt es diverse Modelle)
- Antenne für 2m/70cm
- Diamond X30-N (N-Buchse)
- Diamond X-30PL (PL-Buchse)
- Dual-Band Antenne (kleine praktische Antenne, PL-Buchse)
- Diamond MR-77S (Magnetfußantenne SMA-Stecker)
- Diamond MR-77PL (Magnetfußantenne PL-Stecker)
- Magnetfußantenne (SMA-Buchse)
- 16GB SD-Card
- 5V Netzteil für Raspberry
- LAN Kabel
- HDMI Kabel (optional für den Anschluss an einen Monitor)
- Adapter für den Antennenanschluß