logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Własna stacja bazowa GSM oparta na Raspberry Pi 2

ghost666 30 Mar 2016 13:55 18132 11
  • Własna stacja bazowa GSM oparta na Raspberry Pi 2
    W poniższym materiale opisana została budowa i konfiguracja prostej stacji bazowej sieci telefonii komórkowej. Do konstrukcji BTSa wykorzystano komputer Raspberry Pi 2 i moduły UmTRX i Osmocom. Realizacja podobnego układu możliwa była z wykorzystaniem Raspberry Pi w wersji 1, ale oprogramowanie - OpenBTS - jakie do tego wykorzystano było dosyć skomplikowane, a same obliczenia potrzebne do obsługi radia definiowanego programowo (SDR) były bardzo obciążające dla komputera. Raspberry Pi 2 posiada czterordzeniowy procesor ARM, ale także rozszerzenie NEON SIMD, niezwykle przydatne do cyfrowego przetwarzania sygnałów.

    Moduł Osmocom to stos GSM. Uruchomiony zostanie on na Raspberry Pi 2, do którego poprzez Ethernet podpięto UmTRX - dwukanałowy transceiver SDR, który zapewni komunikację radiową dla systemu. UmTRX można potraktować jako baaardzo szybką kartę dźwiękową - zajmuje się on generowanie sygnałów radiowych i ich przetwarzaniem. Jednakże pamiętać trzeba, że zasadnicza część przetwarzania sygnałów radiowych realizowana musi być na Raspberry Pi 2.

    Uwaga!

    Należy pamiętać, że nadawanie w pasmie GSM wymaga licencji, a nadając bez jej posiadania narażamy się na poważne konsekwencje prawne. Przed uruchomieniem układu należy sprawdzić jakie jest prawo w naszej okolicy (w Polsce licencja jest wymagana) i uzyskać odpowiednie zezwolenia.

    Podstawowe zależności

    W pierwszej kolejności zainstalować na Raspberry Pi musimy podstawowe narzędzia jakie będą nam potrzebne do pracy - narzędzia i biblioteki do C++, bazę danych, kodeki audiio etc. Pobieramy je poprzez apt-get:

    sudo apt-get install libboost1.50-all-dev cmake libusb-1.0-0-dev python-cheetah liborc-0.4-dev sqlite3 libdbd-sqlite3 autoconf libtool libdbi1 libdbi-dev libpcsclite1 libpcsclite-dev libncurses5-dev libopencore-amrnb-dev libsofia-sip-ua-dev libortp-dev telnet


    Oprogramowanie będące routerem połączeń telefonicznych - LCR - pobieramy osobno z githuba i ręcznie instalujemy?

    git clone git://git.misdn.org/lcr.git
    cd lcr
    ./autogen.sh
    ./configure --without-misdn --with-sip –with-gsm-bs
    make
    sudo make install


    Dzięki wykorzystaniu LCR możemy zintegrować naszą sieć komórkową z siecią VoIP, a jeśli zainstalowane i skonfigurowane mamy także mISDN, to integrować możemy także rozmowy z linii kablowych.

    Sterowniki transceivera

    Do działania system wykorzystuje moduł UmTRX, dlatego też na komputerze zainstalować musimy sterowniki. Oprogramowanie do modułu, jakie musimy zainstalować, składa się z dwóch fragmentów - bazy UHD, czyli driverów, oraz modułu wsparcia dla UmTRX. W pierwszej kolejności klonujemy z repozytorium github UHD i uruchamiamy cmake oraz sudo install. Po zainstalowaniu UHD uruchamiamy umtrx_update, które klonuje oprogramowanie z repozytorium UHD-Fairwaves i je instaluje.

    Na tym etapie możemy uruchomić uhd_usrp_probe aby sprawdzić komunikację z transceiverem.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Osmocom

    Pełny opis instalacji Osmocom znaleźć możemy tutaj. Poniżej znajduje się jedynie skrócona wersja, wraz z opisem poszczególnych komponentów, jakie musimy zainstalować:

    libosmocore

    Oprogramowanie libosmocore to bazowa biblioteka, wykorzystywana przez wiele projektów Osmocom. Biblioteka udostępnia różne podstawowe funkcje, takie jak timery, loggery czy funkcje szyfrowania.

    libosmo-abis

    W sieci GSM interfejs pomiędzy BTSem a kontrolerem stacji bazowej (BSC) nazywa się A-bis. Wsparcie dla tego interfejsu znajduje się właśnie w module libosmo-abis. Instalując ten moduł korzystamy z repozytorium fairwaves.

    OsmoNITB

    Oprogramowanie OpenBSC skonfigurowane jest do działania w trybie "sieć w pudełku", dzięki czemu nasz moduł BSC pełni także dodatkowe funkcje, które w normalnej sieci GSM realizowane są przez inne modułu: Home Location Register (HLR) oraz Mobile Switching Centre (MSC). Moduł OsmoNITB także pobierany jest z repozytorium fairwaves.

    OsmoBTS

    Moduł OsmoBTS integruje w sobie warstwy 1, 2 oraz 3 stacji bazowej i komunikuje się poprzez interfejs A-bis z modułem OsmoBITB. Moduł ten jednakże nie zapewnia fizycznej realizacji komunikacji, do której potrzebny jest kolejny moduł.

    OsmoTRX

    Ten moduł zapewnia kontrolę nad fizycznym modułem SDR. Moduł OsmoTRX znajduje się poniżej OsmoBTS w stosie, komunikuje się on z sprzętem UmTRX poprzez interfejs UHD. Podczas konfiguracji tego modułu istotne jest wykorzystanie wersji dostosowanej do Raspberry Pi 2 z rozszerzeniem NEON SIMD (./configure --with-neon).

    Konfiguracja

    W instrukcji instalacji sieci zawarto także przykłądowe konfiguracje dla:

    * OsmoBTS (osmo-bts.cfg)
    * OpenBSC NITB (open-bsc.cfg)
    * LCR (options.conf, interface.conf, routing.conf)

    Jako że konfiguracje dla modułów OsmoBTS i OsmoBSC dedykowane są do sieci 1800 MHz, to powinniśmy mieć licencję do nadawania właśnie w tym pasmie. W open-bsc.cfg dokonujemy teraz drobnych zmian:

    network
    short name (ustawiony na“GSMPi”)
    long name (ustawiony na “GSMPi”)
    auth policy (zmienione na “closed”)
    bts 0
    trx 0
    arfcn (ustawione na “540”)


    Dzięki ustawieniu polityki autentykacji na zamkniętą do naszej sieci nie zalogują się żadne telefony, które nie zostaną do niej wpisane. To dobra praktyka, jeśli chodzi o testowanie naszego BTSa, dzięki czemu - nawet pomimo tego, że moc nadajnika jest niewielka - nie będziemy zakłócać naszej sieci, a inne telefonu komórkowe, nie będą próbowały przełączać się do naszej sieci.

    W opisywanej sieci mamy tylko jeden BTS w którym konfigurujemy pojedynczy kanał transceivera (pomimo tego, że UmTRX jest dwukanałowy). Kanał 5409, jaki został wybrany do transmisji, odpowiada częstotliwościom 1810,8 MHz na downlink i 1715,8 MHz na uplink.

    Dokładne ustawienia - kanał, częstotliwość etc - zależny jest od naszej lokalizacji i posiadanych licencji. Jeśli nasza licencja pozwala na nadawanie tylko na innym kanale, musimy dopasować do niej konfigurację naszego BTSa.

    Uruchamianie sieci

    Uruchamiamy nasze oprogramowanie skonfigurowane jako "sieć w pudełku", potem uruchamiamy stację bazowa i pozwalamy BTSowi komunikować się z BSC/NITB poprzez A-bis.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2 Własna stacja bazowa GSM oparta na Raspberry Pi 2 Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Następnie uruchamiamy komponent oprogramowania SDR, co powinniśmy móc zaobserwować w sieci, gdzie komputer zacznie komunikować się z UmTRXem, aby skonfigurować częstotliwości nadawania i odbierania a następnie zacząć przesył sygnału.

    Finalnie uruchomić możemy Linux-Call-Router.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Jeśli mamy taką możliwość możemy sprawdzić działanie systemu z pomocą analizatora spektralnego, który powinien pokazać nam poprawną częstotliwość nośną.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Jeśli sprawdzimy obciążenie procesora RPi to widzimy, że transceiver OsmoTRX zajmuje nie więcej niż dwa rdzenie, co nie jest zbyt dziwne, z uwagi na konieczność wielu operacji na sygnałach odbieranych i nadawanych przez SDR.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Testowanie sieci

    W pakiecie OpenBSC znajduje się linia komend, która pozwala testować system poprzez telnet. Możemy podłączyć się do modułu poprzez połączenie telnetowe na localhost na port 4242.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2 Własna stacja bazowa GSM oparta na Raspberry Pi 2


    W logu widzimy, że telefon próbował się zalogować do sieci, ale nie udało mu się to ponieważ nie miał do tego uprawnień. Jednakże HLR zalogował go i nadał mu numer 1, co pozwala nam na autoryzację tego telefonu, co umożliwi mu zalogowanie się do sieci. Wszystko to widoczne będzie w wyjściu debugowania OpenBSC NITB.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Teraz telefon zaloguje się poprawnie do sieci, po tym jak został przez nas autoryzowany. Na telefonie wyświetli się informacja o tym do jakiej sieci został on podłączony - w naszym przypadku jest to GSMPi.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Można teraz wykonać połączenie z telefonu. Pod numerem 995 odtworzona zostaje muzyczka oczekiwania.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Na tym etapie na wyjściu debugowania z LCR widzimy informacje na temat połączeń i ich przełączania.

    Po zalogowaniu, tak jak opisano powyżej, drugiego telefonu do sieci, można wykonać pomiędzy nimi połączenie.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2 Własna stacja bazowa GSM oparta na Raspberry Pi 2


    A sprawdzając obciążenie CPU 'maliny' podczas rozmowy telefonicznej widzimy, że Raspberry Pi 2 radzi sobie bez problemu z obliczeniami w takiej sytuacji.

    Własna stacja bazowa GSM oparta na Raspberry Pi 2


    Podsumowanie

    Z czterema rdzeniami ARM, zamiast jednego i rozszerzeniem NEON SIMD, komputer Raspberry Pi 2 doskonale realizuje aplikacje SDR - coś czego wersja pierwsza RPi nie mogła zrobić. Pomimo uruchomienia wszystkich zasobów potrzebnych do działania sieci GSM na tym komputerze nadal zostaje pewien zapas mocy obliczeniowej, jaki można wykorzystać do innych celów.

    Źródło: http://www.rs-online.com/designspark/electronics/eng/blog/running-a-gsm-network-on-the-raspberry-pi-2/?utm_source=newsletter&utm_medium=email&utm_content=90315&utm_campaign=rpi2_gsm

    Fajne? Ranking DIY
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    https://twitter.com/Moonstreet_Labs
    ghost666 napisał 11960 postów o ocenie 10197, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • #3 15567114
    arecoag
    Poziom 19  
    Projekt robi olbrzymie wrażenie. Dla mnie czarna magia.
  • #4 15567794
    Tomekddd
    Poziom 23  
    Pytanie czysto teoretyczne, czy dwa telefony podłączone do takiej sieci wymagają kart sim i czy znaczenie ma operator danej karty sim?
    Aha drugie, czy tak jak w przykładzie połączone telefony pobierają środki z konta w przypadku zestawienia połączenia?
  • #5 15567804
    ghost666
    Tłumacz Redaktor
    Tomekddd napisał:
    Pytanie czysto teoretyczne, czy dwa telefony podłączone do takiej sieci wymagają kart sim i czy znaczenie ma operator danej karty sim?
    Aha drugie, czy tak jak w przykładzie połączone telefony pobierają środki z konta w przypadku zestawienia połączenia?


    Odpowiem nie wprost, ale w takiej sytuacji jak powyższa - operatorem jesteś Ty :D
  • #6 15568082
    starepc.pl
    Poziom 24  
    A ja zapytam jak wygląda sprawa routingu do innych operatorów albo połączenia pakietowego danych? :)
  • #8 15568895
    ghost666
    Tłumacz Redaktor
    dj_volt napisał:
    Ja zapytam o hardware - gdzie i czego szukać, w jakich cenach?
    Okazuje się że budowa sieci GSM przez "Kowalskiego" jest możliwa :)


    Wszystko jest możliwe, tylko pytanie za ile - moduł UmTRX kosztuje około tysiąca dolarów - http://shop.fairwaves.co/UmTRX-transceiver-for-OpenBTS-and-Osmocom-OpenBSC
  • #9 15570462
    1st
    Poziom 23  
    A jaki to ma zasięg?
  • #10 15575615
    gajowy01
    Poziom 14  
    ghost666 napisał:
    ...Wszystko jest możliwe, tylko pytanie za ile - moduł UmTRX kosztuje około tysiąca dolarów - http://shop.fairwaves.co/UmTRX-transceiver-for-OpenBTS-and-Osmocom-OpenBSC

    Właściwie cała trudność nie jest umiejscowiona w module radiowym SDR, ale w dekodowaniu strumieni kanałów i prawidłowej obsłudze sygnalizacji. SDR jest relatywnie proste w konstrukcji i zapewne można by albo zrobić własny, albo zintegrować tańszy istniejący. Ponadto w projekcie Osmocom istnieje implementacja oprogramowania na starą Nokię (chyba 3300 - nie chce mi się zaglądać do szuflady), która eliminuje konieczność posiadania UmTRX-a, SDR radia, a również nawet R-Pi, który chyba do najtańszych nie należy. Niestety we wspomnianej Nokii koniecznym jest wymienić 2 filtry SMD z dość drobnym rastrem, co mi sie nie udało za 1 podejściem. Mam 10 par takich filtrów. Jakby kogoś temat interesował, chętnie wejdę w deal - oddam kilka w zamian za usługę montażu, bo w SMD nie jestem orłem musze przyznać.

    A zasięg przede wszystkim zależy od anteny i wysokości jej zamontowania. Nie polecam jednak nikomu uruchamiania BTS o zasięgu większym niż kilka metrów, bo można za to solidnie beknąć.
  • #11 15575811
    1st
    Poziom 23  
    Hmmmm, a co z danymi? 3G albo LTE? Też można to podsłuchać?
  • #12 15578514
    dj_volt
    Poziom 26  
    gajowy01 napisał:
    ... Niestety we wspomnianej Nokii koniecznym jest wymienić 2 filtry SMD z dość drobnym rastrem, co mi sie nie udało za 1 podejściem. Mam 10 par takich filtrów. Jakby kogoś temat interesował, chętnie wejdę w deal - oddam kilka w zamian za usługę montażu, bo w SMD nie jestem orłem musze przyznać....


    Możesz podesłać jakieś dane tych filtrów? Może zdjęcie?
REKLAMA