• SQ9LM | Polish amateur radio station
  • SN0DN | Klub Dragon-net.pl

Kategoria: Raspberry Pi

iptables

Jak uruchomić lub zatrzymać iptables w Ubuntu

Witam dzisiaj chciałbym pokazać jak uruchomić iptables w Ubuntu

iptables to program sterujący filtrem pakietów (głównie używanym jako zapora sieciowa bądź NAT) opracowany dla systemu operacyjnego Linux.

Do wyboru mamy następujące komendy:

a] ufw command – Polecenie to służy do zarządzania zaporą w linuxie poprzez prosty interfejs

b] iptables command – Polecenie to służy do konfiguracji, i sprawdzania tablic i reguł filtrowania pakietów IPv4 w jądrze Linuxa.

Poznajemy status zapory:

Otwórz konsole jako root wydając polecenie:

$ sudo ufw status

Przykładowy status zapory:

Nieaktywny

Zatrzymanie usługi iptables w Ubuntu

sudo ufw disable

Uruchamianie usługi iptables w Ubuntu

sudo ufw enable

Przeładowanie / restart iptables w Ubuntu

sudo ufw reload

Alternatywna metoda włączania / wyłączania firewalla w innych dystrybucjach Linuxa

Jeśli nie korzystasz z polecenia ufw i / lub ufw nie jest zainstalowany, można wypróbować następujące metody :

Uzyskujemy status IPv4 iptables

$ sudo iptables -L -n -v

Uzyskujemy status IPv6 iptables

sudo ip6tables -L -n -v

Zapisywanie IPv4 iptables

$ sudo iptables-save > $HOME/firewall.txt

Zapisywanie IPv6 iptables

$ sudo ip6tables-save > $HOME/firewall-6.txt

Przywrócenie IPv4 iptables

$ sudo iptables-restore > $HOME/firewall.txt

Przywrócenie IPv6 iptables

$ sudo ip6tables-restore > $HOME/firewall-6.txt

Zatrzymywanie iptables Ipv4 :

sudo iptables-save > $HOME/firewall.txt
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Zatrzymywanie iptables Ipv6 :

sudo ip6tables-save > $HOME/firewall-6.txt
sudo ip6tables -X
sudo ip6tables -t mangle -F
sudo ip6tables -t mangle -X
sudo ip6tables -P INPUT ACCEPT
sudo ip6tables -P FORWARD ACCEPT
sudo ip6tables -P OUTPUT ACCEPT

Instrukcja obsługi RPi0W

Raspberry Pi (RPi) jest bardzo popularnym, jednopłytkowym komputerem (SBC). Większość zna na pewno Raspberry Pi 3 oraz poprzednie wersje, które stały się rozpoznawalne na całym świecie. W ofercie znajdują się również mniejsze moduły. Raspberry Pi Zero pozwala na dołączenie komputera do naprawdę małych projektów. Zero doczekało się tez nowszej wersji  – Zero W – wyposażonej w WiFi i Bluetooth.

Co znajduje się na płytce?

Raspberry Pi Zero (i Zero W) różni się od Raspberry Pi 3. Rozpoczęcie pracy z wersją Zero może sprawić trochę więcej problemów niż trójka, ponieważ wiele złącz wymaga adapterów aby podłączyć monitor lub myszkę. W naszej ofercie dostępne są zestawy zawierające niezbędne elementy, np. All in One.

Mini HDMI

W przeciwieństwie do poprzednich modeli, Raspberry Zero nie wykorzystuje standardowego złącza HDMI. Posiada natomiast wbudowane miniHDMI aby zaoszczędzić trochę miejsca. Do podłączenia z monitorem lub telewizorem, należy wykorzystać odpowiednią przejściówkę lub przewód.

USB OTG

Raspberry Pi 3 oraz pozostałe modele posiadają od 2 do 4 tradycyjne złącza  USB, które pozwalają na podłączenie różnych urządzeń, np. myszki klawiatury, dysku, itp. W Raspberry Pi Zero w celu zaoszczędzenia miejsca zastosowano microUSB OTG. Zero posiada ten sam układ Broadcom IC co oryginalne Raspberry Pi A i A+. Łączy się on bezpośrednio z USB zapewniając funkcjonalność OTG. Natomiast modele B, B+, 2 i 3 wykorzystują wbudowany hub USB pozwalający na podłączenie wielu urządzeń USB.

Aby podłączyć standardową wtyczkę USB do Raspberry Pi Zero, należy wykorzystać przejściówkę OTG.

Podłączając urządzenia USB zaleca się wykorzystać aktywny Hub do ich zasilania. Bezprzewodowe klawiatury i myszki działają najlepiej, gdy są obsługiwane przez jeden klucz USB.

Zasilanie

Tak jak przy pozostałych Raspberry, Zero zasilane jest przez złącze microUSB napięciem od 5 V do 5,25 V.

Slot microSD

Zero, jak i pozostałe modele, wykorzystuje kartę microUSB jako dysk zawierający system operacyjny. 

WiFi i Bluetooth

Raspberry Pi Zero w wersji W posiada bezprzewodowe połączenie WiFi 802.11n oraz Bluetooth 4.0 podobnie jak Raspberry Pi 3. Dzięki temu nie ma potrzeby stosowania dodatkowego adaptera WiFi czy Bluetooth.

Złącze kamery

Raspberry Pi Zero od wersji 1.3 posiada wbudowane złącze kamery CSI. Jednak złącze różni się od tego zastosowanego w dużej wersji. Zero posiada 22-pinowe złącze 0,5 mm. Aby korzystać z kamer do Raspberry Pi należy zastosować odpowiednią taśmę.

GPIO

Tak jak wszystkie modele Raspberry, również Zero posiada wyprowadzone piny GPIO. Oferują one dodatkowe funkcje, np. I2C, SPI, UART, itp. Model posaida 40 piinowe złącze bez wlutowanych złącz. Może je wlutować samemu lub zakupić wersję wyposażoną w złącza.

Dodatkowe połączenia

Zero posiada również 4 dodatkowe piny oznaczone TV oraz Run. Złącza TV umożliwiają podłączenie złącza RCA zamiast używać HDMI. Do pinów Run można podłączyć przycisk, który będzie działał jako reset urządzenia

Pełna specyfikacja wyprowadzeń znajduje się dokumentacji technicznej.

Podłączenie

W zależności od wykorzystania Raspberry Pi Zero można podłączyć w sposób minimalistyczny, jednak jego podłączenie może być również uciążliwe kiedy trzeba podłączyć standardowe urządzenia jak mysz, klawiaturę i monitor.

Aby podłączyć monitor przez HDMI należy zastosować odpowiednią przejściówkę lub przewód. Złącze miniHDMI jest podłączane do Raspberry Zero, a złącze HDMI do monitora. Do złącza USB OTG należy podłączyć odpowiednią przejściówkę OTG. Gdy potrzebujemy użyć większej ilości urządzeń, trzeba również podłączyć Hub. Następnie należy włożyć kartę microSD z odpowiednim systemem do slotu microSD. Po podłączeniu zasilania Raspberry powinno się uruchomić.

Instalacja systemu operacyjnego

Raspberry posiada dwie opcje instalacji systemu operacyjnego.

Opcja 1.

Fundacja Raspberry stworzyła oprogramowanie NOOBS (New Out Of the Box Software). Jest to oficjalny instalator systemów dla Raspberry Pi. Najnowsze karty z systemem NOOBS działają z każdą wersją Raspberry Pi 2, 3, zero i Zero W. Jeśli chcesz nagrać NOOBS samodzielnie nie potrzebujesz żadnego dodatkowego oprogramowanie. Po pobraniu NOOBS należy go rozpakować, a następnie zawartość folderu wgrać bezpośrednio na sformatowaną wcześniej kartę microSD. Po umieszczeniu w Raspberry system powinien się uruchomić. Z jego poziomu można zainstalować jeden z dostępnych systemów operacyjnych postępując zgodnie z instrukcjami wyświetlanymi na ekranie.

Opcja 2. Plik obrazu .img

Jeśli potrzebujesz zainstalować inny system niż dostępne w oprogramowaniu NOOBS, musisz go wgrać na kartę pamięci z pliku .img. W sieci można znaleźć wiele różnych systemów stworzonych w konkretnych celach i wykorzystywanych w specyficznych zastosowaniach. 

Przy instalacji systemu Raspbian nie ma znaczenia na jakiej wersji Raspberry to robimy, gdyż są one wymienne. Wystarczy przełożyć kartę do innego Raspberry i system będzie działał prawidłowo. Niektóre systemy jednak posiadają wersję przeznaczone tylko dla danego modelu, np. OSMC czy RetroPi. 

Do instalacji obrazu systemu oprogramowanie Elcher. Wszystkie niezbędne kroki instalacji zawarte są w jednej aplikacji. Należy uruchomić program, wybrać kartę SD, wybrać obraz systemu i wcisnąć przycisk Flash. Po wgraniu przez Elcher systemu, kartę należy przełożyć do Raspberry i podłączyć zasilanie.

Poniżej przedstawiam podstawową obsługę systemu Raspbian.

Raspbian

Logowanie w systemie Raspbian

Początkowe hasła do logowania to:
Username: pi
Password: raspberry

Raspbian oraz większość systemów dla Raspberry jest opartych na Linuksie. Posiada on graficzny interfejs użytkownika podobny do systemu Windows lub MacOS. Nie ma więc potrzeby zapamiętywania komend tekstowych. Wiele rzeczy można zrobić bez ich użycia.

Po uruchomieniu systemu w lewym górnym rogu można zobaczyć sześć ikon. Pierwsza z nich, „Malina” działa tak samo jak Menu Start w systemie Windows. Po kliknięciu pojawia się lista zainstalowanych aplikacji oraz opcje wyłączania. Druga ikona, przypominająca kulę ziemską, to przeglądarka WWW. Kolejne to Menedźer Plików, Terminal, Mathematica oraz Wolfram.

Zmiana hasła

Każde konto linuksa chronione jest hasłem. Domyślnym użytkownikiem Raspbiana jest „pi”, a hasło to „raspberry”. Należy pamiętać aby dla bezpieczeństwa zmienić te dane przy pierwszym użyciu. Aby tego dokonać należy otworzyć terminal i wpisać:

sudo passwd

Zostanie wyświetlona prośba o wpisanie nowego hasła. Dzięki temu urządzenie stanie się bardziej chronione od innych użytkowników i wirusów.

Połączenie z WiFi

Aby połączyć Raspberry Pi Zero W z internetem należy kliknąć w ikonkę WiFi w prawym górnym rogu na pulpicie Raspbiana. Powinna pojawić się lista dostępnych sieci. Po wybraniu jednej z nich nastąpi połączenie. Jeśli sieć jest zabezpieczona hasłem, najpierw pojawi się okienko do wpisania hasła. Zmiana ikonki WIFi sygnalizuje prawidłowe połączenie. Dodanie WiFI nie jest konieczne, ale może być przydatne np. przy aktualizacjach.

Aktualizacja oprogramowania

Kolejną rzeczą, którą powinno się zrobić przy pierwszym uruchomieniu jest aktualizacja oprogramowania. Pakiety aplikacji są ciągle aktualizowane. Linux wykorzystuje menedżer pakietów potrafiący zaktualizować całe oprogramowanie. Aby go uruchomić należy wpisać w terminalu:

sudo apt-get update

Powoduje to pobranie najnowszych informacji o pakietach i poinformowanie menedżera, co należy zaktualizować. 

sudo – (superużytkownik) to polecenie potwierdzające uprawnienia do dokonania zmian

Apt-get – menedżer pakietów. w tym przypadku wydajemy mu komendę aktualizacji (update).

sudo apt-get upgrade

Ta komenda pobiera i instaluje aktualizacje. Procedura zajmuje trochę czasu. Dodatkowo prosi o potwierdzenie, które należy dokonać wpisując: Y.

sudo shutdown -r now

Komenda wyłączająca komputer. Parametr -r powoduje ponowne uruchomienie. Now oznacza reboot natychmiastowy (po wpisaniu 15 komputer wyłączyłby się po 15 minutach). 

Co się stanie gdy nie wpiszesz sudo? System poinformuje, że nie masz wystarczających uprawnień do wprowadzenia zmian. 

Inne przydatne komendy

  • pwd – pokazuje w jakim katalogu się aktualnie znajdujemy
  • ls – wypisuje zawartość bieżącego katalogu. Aby wyświetlić również pliki ukryte należy wpisać ls -a
  • cd – zmiana katalogu. Wpisanie cd nazwa_folderu przenosi do folderu nazwa_folderu. cd .. przenosi jeden poziom do góry. cd ~ przenosi do katalogu domowego.
  • man – instrukcja. Wpisz man i nazwę komendy aby wyświetlić wszystkie możliwości.
  • nano – otwiera prosty edytor tekstu.

Proponuję zapoznać się z obszerniejszym materiałem na temat: „Linux podstawowe komendy”.

Teraz znasz już podstawy korzystania z monikomputera Raspberry Pi na przykładzie Raspberry Pi Zero. Polecamy kontynuować naukę Linuksa, dodatkowo możesz poznac podstawy Pythona, nauczyć się wykorzystywać piny GPIO, zbudowac serwer, domowy NAS, Media Center, konsolę do gier lub wiele innych projektów.

Przydatne linki:
Strona domowa Raspberry Pi
System Raspbian i NOOBS
Dokumentacja graficzna Raspberry Pi Zero i Zero W
Program Elcher do nagrywania obrazów .img
ApplePi Baker do nagrywania obrazów w systemie MacOS

Podstawowe komendy LINUX

Pomoc


man – wyświetla stronę manuala dla polecenia 'program’

  • man program

info – podobnie jak man, wyświetla stronę pomocy dla polecenia 'program’.

Gdy nie znajdzie strony info, szuka strony man i ja wyświetla.

  • info program, pinfo program

–help – każdy program ma opcję –help lub -h, która wyświetla krótką pomoc

  • jakis_program –help

Logowanie


logout – komenda służąca do wylogowania się z terminala


exit – komenda służąca do zakończenia procesu powłoki: tcsh, bash, itp.

Może być używana w skryptach. Pozwala też zwrócić kod wyjścia ze skryptu:

  • exit
  • exit 127

passwd – zmień hasło użytkownika


^D – (Ctrl-D) wysyła komunikat EOF (end-of-file) do terminala

Oznacza koniec wprowadzania danych. W powłoce 'bash’ skutkuje zazwyczaj zamknięciem terminala


whoami – wyświetla nazwę użytkownika


id – wyświetla obecną nazwę i grupę użytkownika oraz ich numery (UID i GID)


su – komenda do przelogowania się jako inny użytkownik (su, od 'switch user’)

Pozwala, w tym samym terminalu, zmienić uprawnienia do wykonywania komend chwilowo na innego użytkownika (zmienić aktualny UID i GID)

  • su username – zmień użytkownika na użytkownika o nazwie 'username’
  • su – username   – zmień użytkownika, wyczyść zmienne środowiskowe i ustaw nowe wartości zmiennych HOME, SHELL, USER, LOGNAME, PATH

finger – wypisuje wszystkich użytkowników obecnie zalogowanych na danej maszynie (i ich terminale)

  • finger
  • finger @komputer – użytkownicy zalogowani na komputerze o nazwie 'komputer;
  • finger username – wypisuje informacje o użytkowniku 'username’ i wszystkie terminale na których jest zalogowany
  • finger Marek – wypisuje informacje o wszystkich użytkownikach o imieniu 'marek’

w – podobnie jak finger wypisuje zalogowanych użytkowników i ich aktywne terminale


Podstawowe komendy


cd – zmienia aktualny katalog (od 'change directory’)

  • cd dirname – zmienia aktualny katalog na 'dirname’
  • cd dir1/dir2/dir3 – wchodzi do katalogu 'dir3′, który jest w katalogu 'dir2′, który jest w 'dir1′
  • cd   – z dowolnego miejsca, zmienia katalog na domowy
  • cd .. – przechodzi do katalogu o jeden wyższego w drzewie katalogów niż obecny
  • cd /home/dir – z dowolnego miejsca, przechodzi do katalogu zaczynając od początku drzewa: /
  • cd –  – przechodzi do poprzedniego katalogu

pwd – wypisuje ścieżkę obecnego katalogu (od 'print working directory’)


ls – listuje katalog

  • ls – listuje katalog . (ls .)
  • ls plik1 plik2 plik3 – listuje tylko wymienione pliki
  • ls *.txt – wypisze wszystkie pliki o nazwie kończącej się na ’.txt’
  • ls katalog1 katalog2 – listuje wymienione katalogi
  • ls -l – szczegółowa lista
  • ls -a – wypisuje również ukryte pliki (czyli te których nazwa zaczyna się kropką)
  • ls -R – listuje katalogi rekursywnie (czyli wyświetla również zawartość podkatalogów)
  • ls -d – wyświetla tylko nazwy katalogów, tak jak zwyczajnych plików, czyli nie listuje ich zawartości

cat – wypisuje wszystkie podane mu pliki na standardowe wyjście

  • cat plik – jeśli nie przekierujemy standardowego wyjścia do innego pliku (>, >>) lub programu (|), to wypisze plik na ekran
  • cat plik1 plik2 plik3 – wypisze po kolei zawartość wszystkich plików

tac – wypisuje wszystkie podane mu pliki na standardowe wyjście, ale w odwraca kolejność linii

  • tac plik1 plik2 – wypisze połączone oba pliki, od ostatniej do pierwszej linii

echo – powtarza na standardowym wyjściu słowa podane w argumencie

  • echo costam wypisz, czy echo „costam wypisz” – wypisze 'costam wypisz’ i zakończy znakiem nowej linii
  • echo -n „costam wypisz” – po wypisaniu argumentów, nie wypisze znaku nowej linii
  • echo $HOME – wypisuje zawartość zmiennej środowiskowej HOME

wc – liczy linie, słowa, i znaki w pliku

gdy nie podamy argumentu, czyta ze standardowego wejścia

  • cat plik1 plik2 | wc -l – policzy wszystkie linie z połączonych plików plik1 plik2
  • wc plik – wypisze linie słowa i znaki oraz nazwę pliku
  • wc -m – tylko znaki (lub –chars)
  • wc -l – tylko linie (lub –lines)
  • wc -w – tylko słowa (lib –words)

less – wygodne i szybkie przeglądanie plików tekstowych

  • less plik – wyświetla zawartość pliku i pozwala przewijać strony (q-wyjście)

Pliki i katalogi


touch – zmienia czas dostępu i modyfikacji pliku, lub jeśli plik nie istnieje – tworzy go.

  • touch plik

cp – kopiuje plik

  • cp plik1 plik2 – stworzy ./plik2 identyczny z plik1
  • cp plik3 ../katalog/jakis/ – stworzy plik ../katalog/jakis/plik3
  • cp pom.* podkatalog/ – skopiuje wszystkie pliki zaczynające się na 'pom.’ do ./podkatalog/
  • cp plik5 ~/katalog/jakis/pliczek – stworzy plik ~/katalog/jakis/pliczek

mv – przesuwa plik (tym samym służy również do zmiany nazwy)

  • mv plik1 plik2 – zmieni nazwę pliku z ./plik1 na plik2
  • mv plik3 ../katalog/jakis/ – przesunie plik do ../katalog/jakis/plik3
  • mv plik4 podkatalog/ – przesunie plik ./podkatalog/plik4
  • mv plik5 ~/katalog/jakis/pliczek – przesunie i zmieni nazwę ~/katalog/jakis/pliczek

rm – kasuje plik

  • rm plik –
  • rm -r katalog – kasuje wszystko w katalogu i wszystkie jego podkatalogi (–recursive)
  • rm -f plik – nie pyta się czy skasować (–force)

mkdir – tworzy katalog

  • mkdir moj_nowy_katalog
  • mkdir /home/users/ja/moj_nowy_katalog

rmdir – usuwa pusty katalog

  • rmdir katalog

chmod – zmienia prawa dostępu do pliku

grupy użytkowników: u – user, g – group, o – others, a – all

prawa dostępu: r – read, w – write, x – execute

  • chmod o+r plik – udziel innym prawo do czytania pliku
  • chmod a-x plik – zabierz wszystkim prawo do wykonywania pliku
  • chmod g=rw plik – ustaw prawa do czytania i pisania dla swojej grupy
  • chmod -R go+w katalog – ustawia prawa wszystkim plikom w katalogu i jego podkatalogach (–recursive)

locate – wypisuje gdzie ostatnio, na tym komputerze, był widziany plik o podanej nazwie (lub fragmencie nazwy)


locate raport.txt – locate pdf


find – przejrzyj katalog w poszukiwaniu danego pliku

  • find . -name raport.txt
  • find /home/user -name „rap*xt”

Przekierowania


> – przekierowanie wyjścia z programu do pliku.

Standardowym wyjściem każdego programu jest ekran (konsola tekstowa) a standardowym wejściem jest klawiatura. Można te wejścia i wyjścia przekierowywać dowolnie.

  • echo „ala ma kota” > plik.txt – wyjście z programu echo wpisze do pliku plik.txt
  • ls -l > lista.dat – wypisze listę plików do pliku lista.dat

>> – doklejenie wyjścia z programu na koniec pliku

  • echo „ala ma psa” >> plik.txt – dopisze „ala ma psa” na koniec pliku plik.txt
  • ls -l > lista.dat – wypisze listę plików do pliku lista.dat

| – przekierowanie wyjścia jednego programu na wejście drugiego

  • cat plik.txt | wc -l – cat wypisuje plik.txt na wyjście które przekierowujemy na program liczący wiersze.
  • ls -l | lpr – program drukujący 'lpr’ dostanie na wejście listę plików
  • cat plik.txt | tac | grep „coś” | head > cosie.txt – wypisanie pliku.txt na program 'tac’, który odwraca kolejność wierszy, wynik tego przekierowany na 'grep’, który wypisze tylko linie zawierające słowo „coś”, wynik tego wysłany na program 'head’, który pośle dalej tylko pierwsze 10 wierszy na wyjście, które przekierowaliśmy do pliku cosie.txt.

>! – przekierowanie do pliku. Działa podobnie jak >, ale kontynuuje nawet gdy plik już istnienie. Działa w „tcsh”.

  • echo „ala ma kota” > plik.txt – gdy plik.txt istnieje, ta komenda może się nie powieść.
  • echo „ala ma kota” >! plik.txt – konieczne będzie użycie wykrzyknika >!
  • echo „ala ma kota” >| plik.txt – to samo tylko w 'bash’

< – przekierowanie pliku jako standardowego wejścia.

  • szachy < ruchy.txt – jeśli program szachy przyjmuje ruchy na standardowe wejście, możemy te ruchy spisać do pliku i podać programowi w ten sposób
  • cat ruchy.txt | szachy – to samo można też zrobić tak

<< – podanie na wejście następujących później linii.

  • szachy << DO_KONCA
    E2-B4
    H5-A1
    C6-F5
    DO_KONCA
     – podanie tzw. dokumentu w miejscu. Wszystkie następujące linie między etykietami 'DO_KONCA’ będą podane na standardowe wejście programu 'szachy’.
  • echo „E2-B4
    H5-A1
    C6-F5″ | szachy
     – to samo można też zrobić tak
  • echo -e „E2-B4\nH5-A1\nC6-F5” | szachy – to samo można też zrobić tak

2> – przekierowanie standardowego wyjścia dla błędów do pliku. Oprócz standardowego wyjścia i wejścia, każdy program ma jeszcze standardowe wyjście dla błędów. Je też możemy przekierowywać, na przykład w inne miejsce niż wyjście zwykłe. Działa w „bash”, nie w „tcsh”.

  • find -name „plik.*” >znalezione.log 2>bledy.log – pliki znalezione przez 'find’ wylądują w znalezione.log, komunikaty o błędach nie zaciemnią nam wyniku i wpiszą się do innego pliku – bledy.log
  • cp -r dane/ backup/ 2>error.log – jeśli podczas kopiowania całego katalogu wystąpią błędy, wszystkie komunikaty zostaną wpisane do error.log
  • ( ls > plik.log ) >& plik.err – w 'tcsh’ nie można przekierować samego wyjścia dla błędów, stąd konieczność takiej konstrukcji.

&> lub >& – przekierowanie obu wyjść do pliku.

  • ls >& plik.log – standardowe wyjście i standardowe wyjście dla błędów jest przekierowane do plik.log
  • ls >plik.log 2>&1 – to samo, ale działa tylko w 'bash’. Przekierowanie wyjścia, a potem skopiowanie go na wyjście dla błędów.
  • ls &> plik.log – to samo co >& ale w notacji bardziej właściwej dla 'bash’.

man bash

  • polecam aby uzyskać więcej informacji

man tcsh

  • polecam aby uzyskać więcej informacji

Procesy


ps – wypisuje procesy uruchomione na komputerze

  • ps – wyświetla procesy uruchomione przez użytkownika
  • ps a – wyświetl również procesy innych użytkowników
  • ps -l, ps -f, ps -F – więcej informacji o procesach (od: long, full, extra full)
  • ps f – wyświetla drzewo zależności procesów (od: forest)
  • ps –help – 😛

bg – uruchamia na nowo zatrzymane (Ctrl-Z) zadanie, ale w tle, tak jakby zostało ono uruchomione z &

  • bg – uruchamia ostatnio zatrzymane zadanie
  • bg NUMER – uruchamia zadanie o danym numerze na liście zatrzymanych zadań (jobs)

fg – uruchamia na nowo zatrzymane (Ctrl-Z) zadanie, na pierwszym planie

  • fg – uruchamia ostatnio zatrzymane zadanie
  • fg NUMER – uruchamia zadanie o danym numerze na liście zatrzymanych zadań (jobs)

jobs – wyświetla listę zatrzymanych zadań


kill – zabija podany proces

PID – jest to numer identyfikacyjny procesu (process id), można go odczytać np. używając polecenia ps

  • kill PID – wysyła do procesu o numerze PID sygnał do przerwania procesu
  • kill -KILL PID – zabija proces bez pytania

& – modyfikator który pozwala uruchomić od razu proces w tle.

  • xcalc & – uruchamia program xcalc w tle, dzięki temu mamy wolną konsole

top – interaktywne narzędzie do monitorowania procesów

Sortuje procesy po ich bieżącym użyciu procesora, po użyciu pamięci, itp.


Edytory


vim – zaawansowany edytor tekstowy w trybie tekstowym

Vi iMproved – nowa wersja znanego edytora Vi. Posiada

  • podświetlanie składni dla wielu języków programowania
  • możliwość edycji kilku plików na raz
  • bogatego helpa
  • bardzo zaawansowane funkcje edycji

gvim – vim w trybie graficznym


emacs – zaawansowany edytor tekstowy w trybie graficznym

Emacs podobnie jak Vim jest wszechstronnym edytorem obsługującym wiele języków i posiadającym bogate funkcje.


uemacs – edytor tekstowy w trybie tekstowym

Micro Emacs jest tekstową wersją Emacsa


joe – prosty edytor tekstowy

Joe’s Own Editor. Nadaje się do pisania prostych dokumentów


mcedit – edytor tekstowy w trybie tekstowym

mcedit jest wbudowanym w Midnight Commandera edytorem.

Posiada m.in. podświetlanie składni.


Sieć


pine – program do obsługi poczty

Bardzo dobry, szybki i wygodny program do sprawdzania i wysyłania poczty elektronicznej. Jego największą zaletą jest to, że działa w trybie tekstowym, więc można uruchomić go na zdalnym terminalu.


ssh – program do zdalnego logowania używając szyfrowanego połączenia

Najważniejszy sieciowy program. Umożliwia logowanie się na dowolny komputer na świecie, przy czym połączenie jest bezpieczne dzięki algorytmom szyfrującym opartym na kluczach RSA.

  • ssh anatres – zaloguje mnie na 'antares’a
  • ssh ja@anatres – zaloguje mnie jako użytkownika 'ja’ na 'antares’a
  • ssh ja@antares komenda – zaloguje mnie tylko by wykonać na 'antares’ie komendę

scp – program do kopiowania plików używając szyfrowanego połączenia SSH

scp łączy się z podanym serwerem i kopiuje podane pliki między oboma komputerami

’scp’do połączenia używa programu 'ssh’

  • scp plik ja@antares:~/moje_pliki/ – skopiuje plik do mojego katalogu na antaresie ~/moje_pliki/
  • scp ja@antares:/var/log/plik . – do bieżącego katalogu skopiuje podany plik z antaresa

rlogin – prosty protokół zdalnego logowania

  • rlogin antares – zaloguje mnie na 'antares’a

ping – program diagnostyczny sprawdzający czy istnieje połączenie sieciowe z danym komputerem.

  • ping antares.astrouw.edu.pl – sprawdzamy czy antares odpowiada (i jak szybko)

Dyski


df – wypisuje rozmiary i ilość dostępnego miejsca na zamontowanych dyskach (w kilobajtach i w procentach)

  • df
  • df /dev/sda1 – ogranicz wyniki tylko do jednej partycji
  • df -h – wyświetl rozmiary w wygodnych dla użytkownika jednostkach (human readable)
  • df -m – rozmiary w megabajtach

du – policz rozmiary katalogów i plików zawartych w podanym katalogu

  • du – rozmiar obecnego katalogu
  • du katalog – policz rozmiar podanego katalogu
  • du -s – wypisz tylko sumę, a nie rozmiary poszczególnych podkatalogów
  • du -sm – wypisz tylko sumę dla każdego katalogu i podaj rozmiar w megabajtach
  • du -sm dir* | sort -n – posortuj wyniki od najmniejszego do największego z podanych katalogów

Środowisko


which – wypisuje gdzie znajduje się plik z programem o podanej nazwie

  • which ls – zlokalizuj plik, który zostanie uruchomiony po wywołaniu komendy 'ls’

env – wypisuje aktualne wartości wszystkich zmiennych środowiskowych


alias – ustawia i wypisuje definicje skrótowych komend (’aliasów’), które są obecnie ustawione w środowisku

  • alias – wypisuje aliasy
  • alias ls 'ls –color=auto’ – definiuje nowy alias o nazwie 'ls’ i podanej treści


Urządzenia systemowe


/dev/null – studnia bez dna. Urządzenie do którego możemy pisać do woli, a wszystko co wpiszemy przepada.

  • find -name „plik.*” 2>/dev/null – jeśli wsród wyników szukania nie chcemy oglądać komunikatów o błędach
  • latex plik.tex >/dev/null – program wykona wszystkie czynności, ale nie zaśmieci nam konsoli logami
  • licz >/dev/null 2>/dev/null & – jeśli chcemy puścić program w tle, a potem się wylogować (zamknąć konsole), musimy przekierować wyjścia z programu tak, aby nie próbował pisać do nieistniejącego już urządzenia. Urządzenie 'null’ jest zawsze.

/dev/zero – składnica zer. Jest to urządzenie do czytania, które nigdy się nie kończy. Można z niego wczytać dowolną liczbę bajtów, a wszystkie będą równe zero.

  • dd if=/dev/zero of=zera.txt count=1000 – wczyta tysiąc zer do pliku 'zera.txt’.
  • cat /dev/zero – radzę nie próbować
  • head -c 10 /dev/zero > zera.txt – wypisze pierwsze 10 bajtów z '/dev/zero’ do pliku 'zera.txt’. W wyniku mamy plik z dziesięcioma zerami.

/dev/random – zbiór liczb losowych. Jest to urządzenie do czytania, które daje prawdziwie losowe dane. Korzysta przy tym z systemowego zbiornika entropii, który jest uzupełniany dzięki różnym przejawom aktywności użytkownika. Zbiór ten może się wyczerpać, dlatego nie należy z niego czytać wielu liczb na raz.

  • od -t x1 -N 100 /dev/random – wypisze pierwsze 100 losowych bajtów z urządzenia /dev/random na ekran (w systemie szesnastkowym)

/dev/urandom – zbiór liczba pseudolosowych. Jest to urządzenie do czytania, które podaje liczby pseudolosowe. Ma ich do dyspozycji dowolnie dużo.

  • od -t d1 -N 100 /dev/urandom – wypisze pierwsze 100 bajtów z urządzenia /dev/urandom na ekran (w systemie dziesiętnym)

/dev/stdin – standardowe wejście aktualnego procesu. Każdy proces który próbuje czytać z tego urządzenia, dostanie zawartość własnego wejścia.

  • echo „ma kota” | cat ala.txt /dev/stdin – program cat połączy zawartość pliku ala.txt z tym co dostał na standardowe wejście

/dev/stdout – standardowe wyjście aktualnego programu. Gdy proces wypisze coś do pliku /dev/stdout, pojawi się to na jego standardowym wyjściu.

  • a2ps –output plik.ps plik.txt – program a2ps stworzy dokument postscript w pliku plik.ps
  • a2ps –output /dev/stdout plik.txt – program a2ps wypisze dokument na ekran (jego standardowe wyjście)

/dev/stderr – standardowe wyjście dla błędów aktualnego programu. Gdy proces wypisze coś do pliku /dev/stderr, pojawi się to na jego standardowym wyjściu dla błędów.

W zależności od dystrybucji linuxa poleceniem

apt-get update – aktualizuje się repozytorium

później za pomocą komend apt-get –help (dostęp do pomocy)

$apt-get install mc – komenda instaluje Midnight Commander

koniec! 🙂

Jak uruchomić własny lokalny HBLink?

Wszystkie poniżej komendy w opisie są wykonywane jako użytkownik ‘root‘ na Rapsberry Pi4, ale na RPi3b+ też działa.

Poniżej opis jak uruchomić podstawowy HBLink3 serwer do którego można będzie się podłączyć hotspotami. Można rozważyć instalacje HBLink serwera na wirtualnym komputerze VPS co zapewni nam stabilność i niezawodność naszego serwera na którym oprócz serwera HBLink możemy uruchomić inne usługi dla naszej lokalnej sieci. Poniższe opisane komendy są wykonywane jako użytkownik root lub komendy sudo -s aby mieć uprawnienia użytkownika root.

apt-get update
apt-get upgrade
apt-get install git python-pip python3-pip python-dev python3-dev libffi-dev libssl-dev

PS.
A dla leniwych proponuje zainstalowanie mc bedzie szybciej i nie bedzie trzeba klikać tyle kodów.

apt-get install mc
włączamy po prostu pisząc mc

Instalujemy HBLink3 który używa python3 i wg opinii autorów ma lepszą wydajność niż HBLink z python2. Obecnie kiedy pisałem ten opis Parrot nie jest jeszcze dostępny w wersji HBLink3.

cd /opt
git clone https://github.com/n0mjs710/HBlink3.git
cd /opt/HBlink3

Uruchamiamy instalacje niezbędnych bibliotek python3 dla HBlink3:

chmod 0755 install.sh
./install.sh

Konfiguracja HBLink3. Robimy kopie przykładowej konfiguracji dla HBLink:

cd /opt/HBlink3
cp hblink-SAMPLE.cfg hblink.cfg

Robimy edycje pliku:

nano hblink.cfg

Poniżej pokazuje fragmenty pliku które należy zmienić wg podanych niżej

[LOGGER]
LOG_FILE: /var/log/hblink.log
LOG_HANDLERS: file-timed
LOG_LEVEL: INFO
LOG_NAME: HBlink

Wyłączamy link OpenBridge który nie używamy na obecnym etapie konfiguracji serwera:

[OBP-1]
MODE: OPENBRIDGE
ENABLED: False

Zmieniamy hasło dostępowe (PASSWORD) oraz numer portu (PORT) na jakim będzie dostępny nasz HBLink serwer, Pole IP pozostawiamy puste. Dane te (PORT, PASSWORD oraz zewnętrzny IP) będą później potrzebne dla użytkowników Pi-Star hotspotów którzy będą chcieli się podłączyć do Twojego Master serwera.

Definicja master serwera dla hotspotów

[MASTER-H]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 10
EXPORT_AMBE: False
IP:
PORT: 62000
PASSPHRASE: passw0rd
GROUP_HANGTIME: 5
USE_ACL: True
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

Jeśli planujesz że do HBLink serwera będą podłączane hotspoty które tylko będą korzystać z sieci HBLink a nie będą używać innych sieci np Brandmeister itp i nie będą się łączyć przy pomocy “DMRGateway”, można uruchomić dwa master serwery MASTR-S dla hotspotów simplex na porcie 62000 i MASTER-D dla hotspotów duplex na porcie 62001. Dzięki temu będziesz mógł mapować grupy rozmowne dla TS1 i TS2 odpowiednio dla bezpośrednio połączonych hotspotów duplex do MASTER-D. Jeśli hotspoty będą się łączyć zawsze do HBLink jak do drugiej sieci poprzez DMRGateway wystarczy jeden MASTER-H na którym wszystkie grupy będą na TS2 a każdy użytkownik indywidualnie może sobie zmapować na odpowiednie szczeliny czasowe za pomocą TGRewrite w DMRGateway.

Definicja master serwera dla przemienników:

[MASTER-RPT]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 10
EXPORT_AMBE: False
IP:
PORT: 62002
PASSPHRASE: passw0rd
GROUP_HANGTIME: 5
USE_ACL: True
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

Wyłączamy definicje dla REPEATER-1 i XLX-1 (nie będziemy używali tego)

[REPEATER-1]
MODE: PEER
ENABLED: False
.....

[XLX-1]
MODE: XLXPEER
ENABLED: False
.....

Zapisujemy konfiguracje.

Robimy kopie pliku z regułami mapowania grup:

cp rules_SAMPLE.py  rules.py

Zrobić edycje pliku rules.py

nano rules.py

I należy skasować przykładowe mapowania grup w BRIDGES i zostawić zawartość taką jak niżej:

BRIDGES = {
'TG7': [
   {'SYSTEM': 'MASTER-S',    'TS': 2, 'TGID': 7,    'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE',  'ON': [], 'OFF': [], 'RESET': []},
   {'SYSTEM': 'MASTER-RPT',    'TS': 2, 'TGID': 7, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE',  'ON': [], 'OFF': [], 'RESET': []},
        ]
 }

Więcej o funkcjach w pliku rules.py w opisie

Zapisać plik.

Tworzymy plik do uruchamiania automatycznie podczas startu systemu HBlink3

nano /lib/systemd/system/hblink.service

wklejamy zawartość do pliku:

[Unit]
Description=HB bridge all Service

After=network-online.target syslog.target
Wants=network-online.target

[Service]
StandardOutput=null
WorkingDirectory=/opt/HBlink3
RestartSec=3
ExecStart=/usr/bin/python3 /opt/HBlink3/bridge.py
Restart=on-abort

[Install]
WantedBy=multi-user.target

Zapisujemy plik i następnie aktywujemy HBLink:

systemctl enable hblink.service
systemctl start hblink.service

Sprawdzamy czy HBLink wystartował:

systemctl status hblink.service

Jeśli wszystko jest poprawnie, nasz serwer działa będziemy mieli wynik:

● hblink.service - HB bridge all Service
   Loaded: loaded (/lib/systemd/system/hblink.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-06-10 13:44:38 CEST; 2h 11min ago
 Main PID: 29582 (python3)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/hblink.service
           └─29582 /usr/bin/python3 /opt/HBlink3/bridge.py

cze 10 13:44:38 dmr-torun systemd[1]: Started HB bridge all Service.

Możemy zobaczyć do logu:

more /var/log/hblink.log

Instalujemy HBmonitor który służy do monitorowania na stronie internetowej ruchu na HBLink.

UWAGA! HBmonitor jest w wersji bardzo rozwojowej i niechętnie jest wsparcie do napotkanych problemów z tym narzędziem przez grupę DVSwitch. Dlatego jeśli będziesz miał problemy z HBmonitor raczej nie wysyłaj zapytań do DVSwitch bo możesz spotkać się uwagami że to narzędzie obecnie ma ma supportu. Będziesz musiał sam rozwiązać problem.

Poniżej instalacja mojej wersji HBmonitora która ma zmienioną kolorystykę, dołożona funkcja wyświetlania nazw grup z talkgroup_ids.json itp.

cd /opt
git clone https://github.com/sp2ong/HBmonitor.git
cd HBmonitor
chmod 0755 install.sh
./install.sh
cp config_SAMPLE.py config.py
nano config.py
REPORT_NAME     = 'Dashboard lokalnej sieci DMR'  # Name of the monitored HBlink system
CONFIG_INC      = True                # Include HBlink stats
LASTHERAD_INC   = True
HOMEBREW_INC    = True                  # Include HomeBrew Peers stats
BRIDGES_INC     = True                 # Include Bridge stats (confbrige.py)
HBLINK_IP       = '127.0.0.1'           # HBlink's IP Address
HBLINK_PORT     = 4321                  # HBlink's TCP reporting socket
FREQUENCY       = 10                    # Frequency to push updates to web clients
WEB_SERVER_PORT = 8888                 # Has to be above 1024 if you're not running as root
CLIENT_TIMEOUT  = 0                  # Clients are timed out after this many seconds, 0 to disable

# Files and stuff for loading alias files for mapping numbers to names
PATH            = './'                                                             # MUST END IN '/'
PEER_FILE       = 'peer_ids.json'                              # Will auto-download from DMR-MARC
SUBSCRIBER_FILE = 'subscriber_ids.json'          # Will auto-download from DMR-MARC
TGID_FILE       = 'talkgroup_ids.json'                          # User provided, should be in "integer TGID, TGID name" format
LOCAL_SUB_FILE  = 'local_subscriber_ids.json'    # User provided (optional, leave '' if you don't use it), follow the format of DMR-MARC
LOCAL_PEER_FILE = 'local_peer_ids.json'           # User provided (optional, leave '' if you don't use it), follow the format of DMR-MARC
FILE_RELOAD     = 7                                                   # Number of days before we reload DMR-MARC database files
PEER_URL        = 'https://www.radioid.net/static/rptrs.json'
SUBSCRIBER_URL  = 'https://www.radioid.net/api/dmr/user/?country=Poland'

# Settings for log files
LOG_PATH        = './log/'
LOG_NAME        = 'hbmon.log'

W pliku talkgroup_ids.json możesz dopisać nazwy grup rozmownych które masz zdefiniowane wg formatu który znajdziesz już w wpisanych grupach w tym pliku. Blędy składni w tym pliku mogą skutkować że HBMonitor nie uruchomi się. Podobnie możesz zrobić lokalne własne wpisy w plikach local_subscriber_ids.json (użytkownicy, OPB Linki itp) i local_peer_ids.json (przemienniki)

Zwróć uwagę na LOG_PATH, CLIENT_TIMEOUT, SUBSCRIBER_URL, FILE_RELOAD , WEB_SERVER_PORT (port na którym dostępny jest nasz monitor: http://ip_adres_hblink:8080

Warto mieć na uwadze że HBmonitor używa też portu 9000 do komunikacji (konsola logu), jeśli więc mamy serwer za firewall musimy też ten port zmapować aby był dostępny z zewnątrz.

Tworzymy plik do uruchamiania automatycznie podczas startu systemu HBmonitor

nano /lib/systemd/system/hbmon.service

wklejamy zawartość do pliku:

[Unit]
Description=HBmon Service

After=network-online.target syslog.target
Wants=network-online.target

[Service]
StandardOutput=null
WorkingDirectory=/opt/HBmonitor
RestartSec=3
ExecStart=/usr/bin/python3 /opt/HBmonitor/monitor.py
Restart=on-abort

[Install]
WantedBy=multi-user.target

Zapisać plik i następnie aktywujemy HBmonitor:

systemctl enable hbmon.service
systemctl start hbmon.service

Sprawdzamy czy HBLink wystartował:

systemctl status hbmon.service

Jeśli całość działa poprawnie wynik statusu będzie wyglądał:

● hbmon.service - HBmon
   Loaded: loaded (/lib/systemd/system/hbmon.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-06-10 13:42:06 CEST; 2h 18min ago
 Main PID: 29543 (python)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/hbmon.service
           └─29543 /usr/bin/python3 /opt/HBmonitor/monitor.py

cze 10 13:42:06 dmr-torun systemd[1]: Started HBmon Service.

Możemy teraz sprawdzić jak działa nasz monitor sieci HBLinkhttp://ip_adrres_hblink:8080

Używając HBLink Master serwera który nie jest podłączony do innej sieci DV możemy używać tych samych grup które używaliśmy w sieci BM.
Kiedy nasz Master serwer HBlink będzie miał połączenia do innych sieci np Brandmeister możemy w pliku /opt/HBlink3/rules.py zmapować nasze grupy do grup w sieci Brandmeister

to tyle…
Podziękowania dla SP2ONG za pomoc i poprawki oraz za cały wkład w projekt sieci HBLinków w Polsce

Wirtualny HotSpot

Moja przygoda z pakietem programów DVSwitch zaczęła właśnie od napisania tego tutoriala! W ramach projektu DVSwitch są dostępne programy MMDVM_Bridge, który służy do połączenia z siecią cyfrową i Analog_Bridge, który służy do przesyłania audio analogowego 8000 Hz 16 bitowego do MMDVM_Bridge. W większości wypadków takich rozwiązań przejścia analogu do cyfry było wykorzystanie sprzętowego vocoder AMBE na USB DV3000 którego koszt był rzędu ok $120. Ale propozycja DVSwitch jest na tyle ciekawa, że wykorzystano do kodowania i dekodowania AMBE itp emulator md380 z pakietu md380-tools. Dzięki temu sygnał analogowy wysłany w formacie USRP do Ananlo_Bridge zostaje kodowany i dekodowany przez programowy emulator vocodera AMBE.
Diagram rozwiązania technicznego przedstawiony jest poniżej.

Jednym z najważniejszych elementów tej grupy programów to jest emulator vocodera md380-emu. Emulator działa natywnie na procesorach ARM RPi2, 3, H3, H5, pod Linux na procesorach x86 może być uruchomiony przy pomocy „qemu-arm-static” na dowolnej platformie oraz starszych RPi i ARM procesorach. Oczywiście porównanie jakości audio między DV3000 a md380-emu jest na korzyść DV3000 ale jakość otrzymywanego audio z md380-emu jest zadowalająca do takiego zadania jakie chcemy zrealizować. Zrobiłem Trzy próby na różnych komputerach. Terminal HP5730 emulator dławił się, na RPi 3B+ niestety emulator dostał czkawki! Mam jeszcze w rękawie Rpi4 – test będzie niebawem!

Na pewno całość będzie działać na Raspberry Pi 3 ale nie posiadam takiego więc osobiście nie sprawdzałem.
Musimy mieć do dyspozycji komputer z Linux Debian v9 Stretch (lub ARMBian Stretch na Orange PI, RaspBian Stretch na RPi) i poniższe opisane komendy są wykonywane jako użytkownik root lub komendy sudo -s aby mieć uprawnienai użytkownika root.

Uwaga, jeśli w ramach swojej sieci domowej masz bezpośredni dostęp do sieci 44-NET należy wyłączyć przejście do sieci 44-NET na okres instalacji pakietów DVSwitch. Serwer z pakietami dvswitch.org ma adres 44.xxx ale nie jest dostępny poprzez amatorską sieć bramek tylko jest dostępny w Internet. Dlatego jeśli nie wyłączycie na czas instalacji pakietów dostępu do sieci 44-NET w swojej lokalnej domowej sieci nie pobierzecie pakietów instalacyjnych. Po zakończeniu instalacji można przewrócić ruch do 44-NET w sieci domowej.

Poniższa instrukcja instalacji pochodzi ze strony Waldka sp2ong.

Instalujemy pakiety MMDVM_Bridge/Analog_Bridge/md380-emu.

cd /tmp
wget http://dvswitch.org/install-dvswitch-repo
chmod +x install-dvswitch-repo
./install-dvswitch-repo
apt-get update
apt-get install analog-bridge
apt-get install md380-emu
apt-get install mmdvm-bridge

Ponieważ autorzy pakietu udostępnili nowszą wersje programów ale tylko na Github a nie w paczkach deb, pobieramy nowe wersje programów MMDVM_Bridge i Analog_Bridge:

Komputery na procesorach ARM: Raspberry PI, Orange Pi itp:

cd /opt/MMDVM_Bridge
rm MMDVM_Bridge
wget -O MMDVM_Bridge https://github.com/DVSwitch/MMDVM_Bridge/raw/master/bin/MMDVM_Bridge.armhf
chmod +x MMDVM_Bridge
cd /opt/Analog_Bridge/
wget -O Analog_Bridge.ini https://raw.githubusercontent.com/DVSwitch/Analog_Bridge/master/Analog_Bridge.ini
rm Analog_Bridge
wget -O Analog_Bridge https://github.com/DVSwitch/Analog_Bridge/raw/master/bin/Analog_Bridge.armhf
chmod +x Analog_Bridge

Komputery z Debian 32 bitowym procesory AMD/Intel:

cd /opt/MMDVM_Bridge
rm MMDVM_Bridge
wget -O MMDVM_Bridge https://github.com/DVSwitch/MMDVM_Bridge/raw/master/bin/MMDVM_Bridge.i386
chmod +x MMDVM_Bridge
cd /opt/Analog_Bridge/
wget -O Analog_Bridge.ini https://raw.githubusercontent.com/DVSwitch/Analog_Bridge/master/Analog_Bridge.ini
rm Analog_Bridge
wget -O Analog_Bridge https://github.com/DVSwitch/Analog_Bridge/raw/master/bin/Analog_Bridge.i386
chmod +x Analog_Bridge

Komputery z Debian 64 Bit procesory AMD/Intel:

cd /opt/MMDVM_Bridge
rm MMDVM_Bridge
wget -O MMDVM_Bridge https://github.com/DVSwitch/MMDVM_Bridge/raw/master/bin/MMDVM_Bridge.amd64
chmod +x MMDVM_Bridge
cd /opt/Analog_Bridge/
wget -O Analog_Bridge.ini https://raw.githubusercontent.com/DVSwitch/Analog_Bridge/master/Analog_Bridge.ini
rm Analog_Bridge
wget -O Analog_Bridge https://github.com/DVSwitch/Analog_Bridge/raw/master/bin/Analog_Bridge.amd64
chmod +x Analog_Bridge

Musimy teraz skonfigurować MMDVM_Bridge który służy do komunikacji z wybrana siecią np DMR BM lub HBLink oraz z Analog_Bridge

cd /opt/MMDVM_Bridge
nano MMDVM_Bridge.ini

W sekcji [General] wpisz w „Callsign” swój znak wywoławczy . W polu Id, zalecane jest używanie DMR ID i dołączenie do niego 2-cyfrowej liczby z zakresu od 01 do 99. Te 2 cyfry są określane jako SSID. W ten sposób MMDVM_Bridge loguje się do BrandMeister Master. To sprawi, że dużo łatwiej będzie kontrolować dowolne statyczne grupy rozmowne, które chcesz użyć dla swojego rozwiązania. Potrzebujesz mieć założone konto na BM aby konfigurować dla swojego dodatkowego DMR ID z SSID grupy.
(Aby otrzymać DMR ID dla swojego znaku krótkofalarskiego musisz posiadać pozwolenie amatorskie (UKE) i zarejestrować się na SP-DMR.pl)

[General]
Callsign=SP2ABC
Id=123456701
Timeout=180
Duplex=0

w częsci gdzie są informacje o częstotliwości należy wpisać jak poniżej gdyż ten hotspot nie pracuję na żadnej częstotliwości:

[Info]
RXFrequency=000000000
TXFrequency=000000000
Location=Hotspot w chmurze
....

oraz pozostałe dane wpisać stosownie do swoich danych jakie chcemy podać.

Jeśli chcemy mieć obsługę DMR ustawiamy w Enable wartość 1:

[DMR]
Enable=1
ColorCode=1
EmbeddedLCOnly=1
DumpTAData=0

Skoro chcemy mieć obsługę DMR to musimy teraz ustawić parametry połączenia do wybranego Master serwera czy to sieci BrandMeister lub lokalnej sieci HBLink wpisując odpowiednie dane w Address, Password, Port.

[DMR Network]
Enable=1
Address=
Password=
Port=
Jitter=450
Local=62032
Slot1=0
Slot2=1
Debug=0

Zapisujemy plik konfiguracyjny i przechodzimy do konfiguracji Analog_Bridge. Pobieramy przykładowy plik konfiguracyjny Analog_Bridge.ini z mojego serwera

cd /opt/Analog_Bridge
wget -O Analog_Bridge.ini http://sp2ong.noip.pl/downloads/Analog_Bridge.ini
nano Analog_Bridge.ini

W pliku konfiguracyjnym Analog_Bridge.ini należy wprowadzić / sprawdzić czy następujące zmiany podane niżej są w pliku:

decoderFallBack = true  
useEmulator = true

Warto zwrócić tu uwage na ustawienia useEmulator. Wartość true oznacza że będziemy korzystać z emulatora md380-emu. Kiedy ustawimy wartość false będziemy korzystać z emulatora programowego z Analog Bridge OP25 któr ma gorszej jakości audio niż md380-emu ale z niewiadomych przyczyn zdarza się że użycie md380-emu daje dźwięk w postaci tzw „bełkotu” więc można wtedy ustawić wartość useEmulator na false i korzystać z wewentrznego emulatora OP25.

Następnie ustawiamy porty i mod pracy dla DV (poniżej ustawienia dla DMR, dla innych modów są inne porty (patrz plik w MMDVM_Bridge/DVSwitch.ini). Zwróć uwagę na „gatewayDmrId” w tym polu musi być Twój 7 cyfrowy DMR ID i pod takim DMR ID będzie widziana każda transmisja w sieci DMR. W polu „repeaterID” podajemy taki sam „Id” jak w konfiguracji MMDVM_Bridge.ini tzn nasz DMR ID+ SSID. w Polu „txTg” podajemy na jakiej grupie będzie transmitowane nasze audio z Analog_Bridge w sieci DMR.

[AMBE_AUDIO]
address = 127.0.0.1                  
txPort = 31103                          
rxPort = 31100                          
ambeMode = DMR                       
minTxTimeMS = 2000 

gatewayDmrId = 1234567                       
repeaterID =123456701                       
txTg = 9       
txTs = 2 
colorCode = 1 

Teraz ustawienia dla USRP. podany adres 169.254.42.42 jest adresem używanym wewnętrznie przez Analog_Bridge i jest adresm z klasy APIPA. Pozwala nam rozwiązać problem z adresem docelowym aplikacji. W aplikacji DVSwitch podajemy adres IP fizyczny serwera na którym jest nasz „AMBE server” uruchomiony na bazie MMDVM_Bridge/Analog_Bridge/md380-emu. Numer portu UDP w txPort i rxPort muszą być takie same i dowolne inne niż 12345.

[USRP]
address = 169.254.42.42                      
txPort = 12345                        
rxPort = 12345                      
aslAudio = AUDIO_UNITY                 
agcGain = -10                           
dmrAudio = AUDIO_USE_GAIN                
dmrGain = 0.3                          

aslAudio to audio odbierane z sieci do aplikacji DVSM
dmrAudio to audio z aplikacji DVSM wysyłane do sieci

AUDIO_UNITY – oznacza przekazywanie dźwięku w takiej postaci, w jakiej jest. Brak wzmocnienia lub redukcji.
AUDIO_USE_GAIN – wartość Gain może wynosić od 0,0 do 10,0 lub cokolwiek pomiędzy tymi wartościami. Wartość mniejsza niż 1.0 zmniejsza poziom dźwięku do wartości procentowej. Przykład: .75 to 75 procent pełnej objętości lub jedności. Wartość 1,0 do 10,0 zwiększa moc o liczbę. Przykład: 3.0 oznacza trzykrotność poziomu.

Możemy zmieniać poziomy audio wchodzącego i wychodzącego do aplikacji DVSM wybierając stosowny parametr do korekty oraz wartość korekty w agcGain i dmrGain. Należy dobrać to indywidualnie. Po zmianie ustawień należy zrestartować moduł Analog_Bridge poleceniem:

systemctl restart analog_bridge

Możemy teraz uruchomić cały zestaw programów i sprawdzić czy nasz system zalogował się na nasze konto w Brandmeister lub inny Master serwer np HBlink.

Aktywujemy usługi i uruchamiamy:

systemctl enable md380-emu
systemctl enable mmdvm_bridge
systemctl enable analog_bridge
systemctl start md380-emu
systemctl start mmdvm_bridge
systemctl start analog_bridge

Jeśli będziesz używał swojego htospot’a w chmurze z siecią np HBLink poniższy opis o BM nie jest wymagany do tej sieci i nie musisz mieć konta na BrandMeister.

Jeśli chcemy nasz system ozywać z siecią BrandMeister logujemy się na nasze konto na Brandmeister i z prawej strony panelu dasboard klikamy na „My Hotspots” i rozwinie się nam list naszych hotspotów które są zarejestrowane na BM. Jeśli w wykazie widzimy nasze DMR ID + SSID który wpisaliśmy w MMDVM_Bridge.ini w polu „Id” i ma status „zielony” tzn że poprawnie zalogował się do sieci BM.

Możemy kliknąć na numer Id naszego hotspota który zdefiniowaliśmy w MMDVM_Bridge w celu dodania statycznych grup rozmownych które będą obsługiwały nasz hotspot. Ponieważ obecnie możemy tylko nadawać na jednej grupie zdefiniowanej w Analog_Bridge.ini w polu „txTg” taka grupę rozmowną dodajemy do naszych grup statycznych np 260080 (grupa połączona z reflektorem REF4280). Wpisujemy numer grupy po lewej stronie i klikamy na strzałkę skierowaną w prawą stronę co spowoduje że podana grupa pojawi się w panelu po prawej stronie i wszystkie rozmowy na 260080 będą kierowane do naszego „IP DMR radio hotspota” i odwrotnie. Zaznaczając myszką w prawej stronie wykazu grupę i klikając strzałkę w lewą stronę usuwamy daną grupę z naszego „hotspota”. Możemy dodać kilka grup i będziemy odbierać z każdej grupy aktywność ale nadawać będziemy mogli tylko na jednej zdefiniowanej w Analog_Bridge.ini. Dlatego polecam używanie jednej grupy. Jeśli będziesz chciał monitorować/słuchać kilka grup a nie będziesz nadawał możesz dodać wiele grup. Zawsze możesz zmienić wykaz grup poprzez ten panel.

Instalacja i konfiguracja aplikacji „DVSwitch mobile”

Bardzo ważna aplikacja do tego co chcemy zrobić to aplikacja napisana na Android która pozwoli nam przesłać nasze audio w formacie USRP poprzez sieć do komputera na którym będą zainstalowane MMDVM/Analog_Bridge i md380-emu. Aplikacje „DVSwitch mobile” możecie pobrać z google play.
Po uruchomieniu musimy ustawić konto w aplikacji do naszego „AMBE Server”. W górnych ikonkach głównego panleu programu wybierz „Accounts”, kliknij na pierwszy profil aby go skonfigurować:

Wybierz „Protocol” „USRP”, następnie w „IP adres DVSwitch server” wpisz adres IP w domowej sieci na którym jest uruchomiony MMDVM_Brideg/Ananlog_Bridge, w polu „Callsign” wpisz swój znak wywoławczy a w polu DMR ID swój DMR ID który otrzymałeś podczas rejestracji. Poziomy audio możesz zmieniać w zależności od potrzeb. Zapisz ustawienia. Upewnij się że ma zaznaczony wybrane konto w kwadraciku obok nazwy konta i przejdź do głównego ekranu aplikacji.

Naciskając klawisz PTT możesz rozmawiać na grupie rozmownej zdefiniowanej w Ananlog_Bride, natomiast jeśli wpisałeś więcej grup rozmownych w profilu na BrandMeister będziesz mógł je tylko odbierać.

Wpisując numer na klawiaturze aplikacji np „4” i naciskając klawisz „SEND” zmieniamy numer grupy rozmownej (uwaga w aplikacji pokazują się tylko numery grup, które ma zdefiniowane wewnątrz swoje bazy)

Takie serwer na którym mamy uruchomiony programy DVSwitch możemy mieć w swojej sieci domowej, jeśli mamy dostęp z zewnątrz do swoje sieci domowej to możemy przekierować w firewall port który ustawiony został w Ananlog_Bridge w [USRP] i wtedy możemy korzystać z naszego serwera będąc poza siecią domową.
Innym rozwiązaniem jest instalacja serwer na Virtulanej Maszynie (w chmurze). Mamy wtedy zapewniony warunek stałych adresów IP dla serwera który wpiszmy w DVSwitch Mobile.
Możemy skonfigurować sobie 2 profile w DVSwitch Mobile jeden dla sieci domowej a drugi kiedy jesteśmy na zewnątrz.

Warto zapoznać się z dokumentem o MMDVM_Bridge: https://docs.google.com/document/d/1-Ot5pGaibmEGmmFh-l8HUq2LRyZoujiJYulr-VSga9s/edit

żródło: sp2ong.noip.pl

Telegram Chat