Posts

Konfiguracja połączenia Aero2 na OpenWRT

Darmowy internet oferowany przez Aero2 nie grzeszy zbytnio osiągami, bo mamy do dyspozycji jedynie 512 kbit/s. Niemniej jednak, taka prędkość w zupełności wystarcza do przeglądania stron internetowych. Gorzej z oglądaniem materiałów video w serwisach takich jak YouTube. To jednak nie ma raczej większego znaczenia, bo przecie usługa jest za free, a poza tym, możemy dokupić szereg pakietów aktywujących pełną prędkość w technologi LTE. Problem w tym, że od Aero2 możemy otrzymać tylko jedną kartę SIM na użytkownika. Może i mamy możliwość dostania kilku kart na jeden adres zamieszkania ale i tak trzeba by dla każdego SIM załatwić osobny modem LTE. Zwykle takie rozwiązanie nie wchodzi w grę, zwłaszcza, gdy z internetu korzystamy raczej sporadycznie. Mając jednak router z alternatywnym firmware OpenWRT, możemy do jednego z jego portów USB doczepić taki modem i udostępnić połączenie internetowe wszystkim urządzeniom w naszej sieci domowej. W tym artykule postaramy się to zadanie zrealizować.

Jak wgrać firmware OpenWRT na router TP-LINK

OpenWRT to alternatywny firmware dla routerów oparty o linux'a. Może on okazać się dość złożonym systemem i to pomimo faktu, że zajmuje raczej niewiele miejsca, bo rozmiary obrazów nie przekraczają 8-16 MiB, oczywiście wliczając w to wolne miejsce. Niemniej jednak, by komfortowo operować na dostarczonym oprogramowaniu, trzeba dysponować określoną wiedzą. OpenWRT w dużej mierze przypomina linux'a i szereg poleceń jest w tych dwóch systemach taki sam. Jedynie co, to z powodu dość ograniczonego miejsca, większość programów została okrojona dość solidnie, zostawiając przy tym tylko niezbędną funkcjonalność. Mamy, co prawda, szereg nakładek z interfejsem webowym (min. Gargoyle i LuCi), które upraszczają operowanie na tym firmware ale my w tym artykule położymy nacisk na przejście na czyste OpenWRT, z którym będziemy się komunikować za pomocą poleceń tekstowych wydawanych w terminalu.

Jak powrócić z firmware OpenWRT do TP-LINK'a

Zmiana oryginalnego firmware na alternatywne na bazie OpenWRT nie jest procesem tylko i wyłączenie w jedną stronę. W przypadku, gdy OpenWRT z jakichś powodów nie spełnia naszych oczekiwań, to zawsze możemy powrócić do oprogramowania oferowanego przez producenta routera. W tym wpisie prześledzimy sobie proces powrotu do oryginalnego firmware na przykładzie routera TP-LINK TL-WR1043ND v2.

Sysupgrade, czyli aktualizacja firmware OpenWRT

Alternatywne oprogramowanie OpenWRT dla routerów trzeba regularnie aktualizować. Nie chodzi tutaj tylko o znane podatności w oprogramowaniu ale też o wyeliminowanie błędów wynikłych z niepoprawnego działania sterownika czy jakiegoś modułu samego kernela. Proces aktualizacji firmware nie jest niczym trudnym, choć przeprowadzany niewłaściwie może zakończyć się uwaleniem routera. Poniższy wpis ma na celu zaprezentowanie jak krok po kroku dokonać aktualizacji oprogramowania za pomocą narzędzia sysupgrade . Postaramy się to zrobić w oparciu o najnowszą dostępną wersję OpenWRT, w tym przypadku będzie to Chaos Calmer 15.05.1 (r49172).

Obsługa kodów USSD w modemach LTE

Każdy, kto ma lub miał prepaid'a, prędzej czy później musiał nauczyć się obsługi kodów USSD. To za ich pomocą jesteśmy w stanie sprawdzić stan konta czy też aktywować poszczególne usługi. Co się jednak stanie, gdy taki prepaid zostanie umieszczony w modemie LTE? Teoretycznie modem powinien nam zapewnić połączenie LTE ale to jest nieco inna technologia niż GSM czy UMTS, a to za ich pomocą mogą być przesyłane zarówno kody USSD i SMS. Niby modemy LTE potrafią operować również na UMTS i GSM ale pod linux'em przesyłanie kodów USSD może być nieco problematyczne. Jedynym oprogramowaniem będącym w stanie operować na tych kodach był modem-manager-gui . Problem w tym, że zajmuje on praktycznie cały modem dla siebie, co w pewnych sytuacjach może nie być pożądane. Zatem jakie alternatywy nam pozostają? W jaki sposób operować na tych kodach USSD pod linux'em?

Tworzenie repozytorium git na GitHub

Po eksperymentah z repozytorium git na github'ie postanowiłem zrobić drobną ściągawkę na temat obsługi tego mechanizmu z poziomu linii poleceń. Oczywiście, tutaj będą przedstawione jedynie podstawy, tj. jak zacząć tworzyć takie repozytorium. Bardziej zaawansowane rzeczy, np. implementacja kluczy SSH na github'ie, czy też podpisywanie swojej pracy przy pomocy kluczy GPG zostały opisane w osobnych wpisach, bo lekko wykraczają poza tematykę tego artykułu. Oczywiście te dwie rzeczy nie są wymagane do pracy z git'em ale trzeba rozważyć ich wdrożenie jeśli faktycznie zamierzamy zacząć korzystać z tego VCS'a. W każdym razie, tutaj zajmę się podstawowymi operacjami, które człowiek zwykle przeprowadza, gdy przychodzi mu korzystać z git'a. Zdaję sobie sprawę, że są różne nakładki graficzne na narzędzie git ale, jak się okaże po przeczytaniu tego wpisu, operowanie na tekstowym git nie jest takie straszne, choć sama dokumentacja może przerazić, bo jest tego dość sporo i raczej wszystkiego od razu nie ogarniemy.

Wvdial i PPP, czyli modem LTE w trybie RAS

Jak wielu użytkowników linux'a zapewne wie, modem GSM/UMTS/LTE może pracować w kilku trybach. Najpopularniejszym z nich jest tryb RAS wykorzystujący interfejsy udostępniane przez to urządzenie w katalogu /dev/ , zwykle ttyUSB0 , ttyUSB1 , etc. By taki modem mógł nawiązać połączenie z siecią, potrzebny jest demon PPP. O trybie RAS wspominałem już parokrotnie, min. we wpisach dotyczących konfiguracji połączenia LTE w RBM/Play jak i przy omawianiu problemów z resolver'em DNS w przypadku Aero2. Generalnie ten tryb różni się trochę od trybu NDIS(NCM) głównie tym, że tutaj nie uzyskamy większych prędkości niż 20-30 mbit/s. Niemniej jednak, jeśli nie mamy dobrej jakości połączenia LTE, lub nasz modem z jakiegoś powodu pod linux'em nie potrafi pracować w trybie NDIS, to możemy skonfigurować połączenie w trybie RAS wykorzystując do tego celu wvdial oraz demona PPP.

Wysyłanie i odbieranie SMS w wammu

Wammu to aplikacja, przy pomocy której jesteśmy w stanie zarządzać swoim telefonem komórkowym. Można ją także wykorzystać do zarządzania modemami USB, tymi samymi, które są w stanie nam dostarczyć połączenie LTE. Przy pomocy wammu nie damy rady jednak nawiązać połączenia internetowego ale jest kilka rzeczy, do których ten soft może nam się przydać. Karta SIM obecna w takim modemie może mieć zapisane kontakty, które możemy edytować, usuwać i ewentualnie dodawać nowe. Ważniejszym ficzerem, który oferuje wammu , jest możliwość wysyłania i odbierania wiadomości SMS. Wcześniej opisywałem wysyłanie i odbieranie SMS za pomocą gammu-smsd, niemniej jednak, w przypadku wammu nie będziemy uruchamiać żadnej usługi systemowej. Same wiadomości SMS odbiera i wysyła się na podobnej zasadzie co w telefonie komórkowym. Przyjrzymy się zatem bliżej temu kawałkowi oprogramowania.

Gammu-smsd, czyli wysyłanie i odbieranie SMS

Eksperymentując ostatnio z modemem Huawei E3372s-153 w wersji NON-HiLink, pomyślałem, że przydałoby się zaprojektować jakiś prosty system do odbioru i wysyłania SMS. Nie chodzi tutaj o zaprzęgnięcie do pracy oprogramowania takiego jak modem-manager-gui czy też wammu ale bardziej o przekazywanie tych wiadomości SMS, które trafiają na modem, na inny numer telefonu komórkowego. Czyli stworzenie takiego telefonicznego proxy, które te SMS będzie przekazywał dalej. Tego typu funkcjonalność można zaimplementować praktycznie w każdym linux'ie, tylko wymagane jest posiadanie odpowiednich narzędzi. W tym przypadku rozchodzi się o gammu-smsd i to o nim będzie ten wpis.

Zmiana nazwy interfejsu modemu ttyUSB0

Spora część osób posiada różnego rodzaju urządzenia do komunikacji GSM/UMTS/LTE. Mogą to być smartfony, czy też modemy USB. Zwykle po podpięciu takiego urządzenia do portu USB, system wykrywa je i oddaje nam do dyspozycji kilka interfejsów w katalogu /dev/ . W przypadku modemu Huawei E3372s-153 w wersji NON-HiLink, standardowo są dwa interfejsy: ttyUSB0 oraz ttyUSB1 . Gdy podłączamy tylko jedno urządzenie, to nie mamy problemy z tymi nazwami. Co się jednak stanie w przypadku, gdzie tych urządzeń będzie więcej i podepniemy je w losowej kolejności? Nawet jeśli będziemy wiedzieć które interfejsy są od jakich urządzeń, to i tak trzeba będzie przepisywać pliki konfiguracyjne różnych aplikacji pod kątem dostosowania tych nazw. Możemy jednak stworzyć unikalne nazwy interfejsów w oparciu o reguły udev'a i tym zajmiemy się w niniejszym wpisie.