Stacja Domowa z Funkcją DIGI Pomocniczego na APRX i DireWolf

By | 22 czerwca 2017

Po przetestowaniu, skuteczności działania oprogramowania DireWolf. Zachęcony tym jak fajnie to działa. Postanowiłem przygotować krótki opis konfiguracji stacji domowej z funkcjonalnością digipitera pomocniczego, który będzie oparty o to programowe  TNC.


Do uruchomienia będziemy potrzebować dodatkowej karty muzycznej na USB, w innych opisach w sieci znalazłem polecany model za niecałe 6 dolarów (https://www.amazon.com/external-Adapter-Windows-Microphone-SD-CM-UAUD/dp/B001MSS6CS). Ja użyłem czegoś przypadkowego z allegro.

Karta muzyczna na USB

Karta muzyczna na USB

Na początku rozpoczynamy prace od przygotowania karty SD z obrazem RaspberyPi.
Użyjemy obrazu Raspbian Jessi Lite, a do wgrania obrazu na kartę SD, posłuży program: Win32DiskImager.

Po zalogowaniu się do RaspberryPi (login: pi, hasło raspberry) musimy uaktualnić system, komendy poniżej:

sudo apt-get update
sudo apt-get upgrade

Warto uruchamić serwer ssh tak by mieć dostęp zdalny do naszego digi:

sudo /etc/init.d/sshd start

Rozpoczynamy procedurę instalacji DireWolfa, na początek instalujemy niezbędne pakiety:

sudo apt-get install libasound2-dev
sudo apt-get install git

Ważne też jest usunięcie pakietów pulseaudio który według opinii twórców DireWolfa może powodować komplikacje:

sudo apt-get remove --purge pulseaudio
sudo apt-get autoremove
rm -rf /home/pi/.pulse

Ściągamy źródła DireWolfa do katalogu domowego użytkownika pi:

cd
git clone https://www.github.com/wb2osz/direwolf

Następnie wchodzimy do katalogu (utworzył się pod nazwą direwolf w katalogu /home/pi) ze źródłami i rozpoczynamy kompilację, wydając po kolei następujące komendy:

make
sudo make install
make install-conf

Po skompilowaniu przechodzimy do katalogu /home/pi a gdzie możemy skonfigurować DireWolfa.
Zanim zaczniemy konfigurację wato sprawdzić czy karta dźwiękowa jest widoczna w systemie:

aplay -l

Powinniśmy zobaczyć mniej więcej coś takiego:

pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
pi@raspberrypi:~ $

Używamy karty muzycznej podłączonej do portu USB. I to tę kartę należy skonfigurować w pliku konfiguracyjnym który po instalacji DireWolfa znajduje się w /home/pi/direwolf.conf. Konfigurujemy także pin GPIO który będzie naciskał PTT w radiu za pomocą dodatkowego układu wykonawczego, możemy także ustawić sygnalizację dekodowania ramki na kolejnym pinie GPIO:

ADEVICE plughw:1,0
PTT GPIO 25
DCD GPIO 24

Dzięki takiej konfiguracji DireWolf będzie korzystał z urządzenia 0 na karcie 1.
Wydając polecenie direwolf możemy uruchomić TNC i przetestować dekodowane ramek. Jednocześnie na porcie 8001 jest aktywna usługa TNC w trybie KISS. Podczas dekodowania DireWolf podaje także siłę sygnału audio i ostrzeżenia o przesterowaniu jest to dobry moment by ustawić sobie odpowiedni poziom sygnału audio.

Pracujący soundmodem DireWolf

Pracujący sound modem DireWolf

Konfiguracja DireWolfa jest zasadniczo ukończona, gdyż w naszym scenariuszu wykorzystujemy ten pakiet tylko jako TNC w trybie KISS.

Przechodzimy do instalacji i konfiguracji APRX-a.
Na początek musimy ściągnąć paczkę instalacyjną najnowszej wersji APRX-a którą znajdziemy na stronie:
http://thelifeofkenneth.com/aprx/debs/

Dla ułatwienia robimy to z poziomu raspberrypi :

wget http://thelifeofkenneth.com/aprx/debs/aprx_2.9.0_raspi.deb

Następnie uruchamiamy instalatora:

sudo dpkg -i aprx_2.9.0_raspi.deb

Po pomyślnej instalacji w katalogu /etc znajdziemy plik konfiguracyjny aprx.conf, który powinniśmy edytować.
Na początek wykonamy jego kopię (będzie do czego wracać w razie problemów)

sudo cp /etc/aprx.conf /etc/aprx.conf.oryg

A następnie uzywając prostego i przyjaznego edytora „pico” rozpoczynamy edycję pliku konfiguracyjnego.
W oknie putty lub bezpośrednio w terminalu raspberrypi wpisujemy:

sudo pico /etc/aprx.conf

By uzyskać przejrzystość pliku wykasowałem z niego wszystkie informacje i skonfigurowałem wszystko po kolei.
Na początek mój znak podstawowy i koordynaty. Znak podstawowy można później używać jak zmiennej w innych miejscach w pliku a koordynaty podane w konfiguracji służą podczas używania fitrów odległości.

mycall  SQ9MDD-3
myloc lat 5215.02N lon 02055.59E

Następnie konfiguruję interface do sieci APRSIS tak by przekazywać automatycznie do niej wszystkie usłyszane ramki. Interfejsu tego będę mógł także użyć jako źródła danych w sekcji digi, ale o tym później.

<aprsis>
  login     $mycall
  passcode  29666
  server    sp.aprs2.net          14580
  filter m/5
</aprsis>

Następna sekcja dotyczy logowania, w moim przypadku normalnie podczas pracy używam tylko pliku aprx-rf.log
w którym mogę na bieżąco podglądać stan pracy stacji.

<logging>
  pidfile /var/run/aprx.pid
  rflog /var/log/aprx/aprx-rf.log
  #aprxlog /var/log/aprx/aprx.log
</logging>

Następnie konfigurujemy interface radiowy czyli w naszym przypadku połączenie z DireWolfem:

<interface>
  tcp-device 127.0.0.1 8001 KISS
  callsign    $mycall
  tx-ok       true
  telem-to-is false
  alias         WIDE,WM,SP
</interface>

Konfigurujemy własny beacon, mile widziane jest poprawne skalkulowanie w nim parametru PHG oraz wpisanie częstotliwości lokalnej dla naszego rejonu tak by podróżujący koledzy wiedzieli gdzie mogą nawiązać łączność.

<beacon>
  beaconmode radio
  cycle-size 30m
  beacon interface $mycall via WIDE2-1 symbol "/-" lat "5215.02N" lon "02055.59E" comment "PHG1004 145.575MHz Rysiek"
</beacon>

Ostatnia sekcja, to konfiguracja digipitera który będzie obsługiwał tylko ramki usłyszane bezpośrednio i nie powtórzone przez regularne digipitery dzięki czemu tak skonfigurowana stacja domowa będzie bardzo dobrym wypełnieniem na mapie białych plam. Jest to szczególnie przydatne dla obsługi ruchu stacji ręcznych pracujących małą mocą:

<digipeater>
 transmitter   $mycall

  <wide>
   maxreq 3
   maxdone 3
   keys WM,SP
  </wide>

  <trace>
   maxreq 3
   maxdone 3
   keys WIDE
  </trace>

  <source>
   source         $mycall
   relay-type     directonly
   viscous-delay  5
   ratelimit      60 120
   filter m/5
  </source>

</digipeater>

Ostatnia czynność konfiguracyjna to dopisanie do pliku /etc/rc.local (na samym końcu ale powyżej „exit 0″) kilku komend które sprawią że będzie można się zdalnie zalogować do raspberrypi za pomocą ssh. A także zapewni nam automatyczny start usług DireWolf i APRX:

/etc/init.d/ssh start
su -l pi -c direwolf > /dev/null &
aprx

Tak skonfigurowane RaspberryPi możemy podłączyć do radia za pomocą interfejsu który opisywałem już tutaj na stronie.

Stacja domowa z funkcją digi pomocniczego jest już gotowa, i będzie działać automatycznie po uruchomieniu. Wskazując naszą lokalizację, dając innym kolegom informacje na temat lokalnej częstotliwości. możemy też wystawiać jakieś przydatne obiekty, na przykład podczas imprez z naszym udziałem itd. Jednakże terminal linuksowy nie jest atrakcyjnym interfejsem do podglądania ruchu w sieci, obserwowania przejeżdżających stacji mobilnych czy też do wysyłania wiadomości. Dlatego użyjemy oprogramowania APRSIS32 jako interfejsu użytkownika. DireWolf w takiej konfiguracji jaką zrobiliśmy udostępnia dwa porty komunikacyjne. Jeden już wykorzystaliśmy do komunikacji z APRX-em a drugi port typu AGW możemy użyć do połączenia z oprogramowaniem APRSIS32, które możemy mieć zainstalowane na innym komputerze, laptopie albo tablecie. Konfiguracja sprowadza się do ustawienia po stronie APRSIS32 nowego portu typ AGW i wpisaniu adresu IP oraz portu: 8000.

Konfigurujemy nowy port

Konfigurujemy nowy port

 

konfiguracja portu agw

konfiguracja portu agw

konfiguracja ip/port

konfiguracja ip/port

APRSIS32 podłączony do DireWolf

APRSIS32 podłączony do DireWolf

 

Na koniec jeszcze spostrzeżenie. Testy porównawcze na specjalnym pliku testowym WA8LMF, które wykonałem, mocno mnie zaskoczyły. Wynik testu nie jest referencyjny gdyż moje źródło sygnału to kiepski laptop jednakże w porównaniu do wyników uzyskanych w tym samym środowisku DireWolf okazał się skuteczniejszy niż inne przetestowane przeze mnie rozwiązania.

Arduino TNC 450 zdekodowanych poprawnie pakietów
Arduino TNC+ 710 zdekodowanych poprawnie pakietów
DireWolf 1005 zdekodowanych poprawnie pakietów

Oznacza to że taka konfiguracja to nie jest produkt zastępczy ale całkiem fajne, dobre i stabilne rozwiązanie.

Przydatne linki:

https://www.raspberrypi.org/downloads/raspbian/
https://sourceforge.net/projects/win32diskimager/
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
https://github.com/wb2osz/direwolf
http://aprsisce.wikidot.com/