Dokładność GPS, albo jej brak

Że GPS dokładny nie jest, to żadna nowość. Pisałem zresztą o tym już nieco przy okazji opisu wrażeń z Ingress. Znaczy w komentarzu. Poza tym, wiadomo, że GPS zawyża dystans. Ale wiadomo, że jest to łatwo dostępny, wygodny sposób pomiaru przebytej odległości, co w połączeniu z czasem pozwala zmierzyć prędkość. Niedawno na zastosowanie w sporcie narzekał torero, ale wiadomo, to niewielkie dystanse, więc i błąd większy.

Z GPS korzystam głównie w aucie, za sprawą Yanosika. Nawet zbytnio nie narzekam. Poza jednym odpałem, kiedy z ok. 240 km zrobił 480 km (i tak mu zostało), prędkość pokazuje na moje oko dobrze. No i dłuższe dystanse, niż przy bieganiu, więc chwilowe odchylenia o kilka czy kilkadziesiąt metrów nie grają aż tak wielkiej roli. A przynajmniej nie powinny.

Tak się jednak składa, że ostatnio dość regularnie jeżdżę po tej samej trasie. Średni pomiar ok. 10 km. Wg Google Maps – bardziej 8-9 km. Biorąc pod uwagę, że to jazda w mieście, jakieś 15-20 minut, więc całkiem sporo. Zastanawiające są natomiast pomiary skrajne. Wartość minimalna to 6 km, a maksymalna, uzyskana dziś to… 15 km. Może przez chmury, może kwestia montażu (mógłby być bardziej przy szybie…), może czasu na złapanie pozycji, może sprzętu albo samego Yanosika… Niemniej, rozrzut plus minus 50% to nie jest to, co tygrysy lubią najbardziej.

Tak dla pamięci, ale i ku przestrodze, gdyby komuś przyszło brać na poważnie pojedynczy pomiar GPSem.

Jak zrobić router GSM na Linuksie?

Niedawno miałem awarię netu. Stwierdziłem, że warto przy tej okazji poćwiczyć awaryjne udostępnianie sieci na Linuksie. Oczywiście zrobienie routera z komputera z Linuksem to kwestia paru poleceń, ale stwierdziłem, przećwiczyć udostępnianie sieci po WiFi.

Istnieje pakiet hostapd, który ułatwia zamianę komputera z Linuksem w access point. Instalacja pakietu hostapd:

apt-get install hostapd

Jakość pakietu nie zachwyca, ale jest niezły tutorial do hostapd. Skrypt init nie zadziała – należy go uzupełnić o ścieżkę do pliku – zmienna DAEMON_CONF. Podobnie sam pakiet nie dostarcza – jak to zwykle ma miejsce w przypadku pakietów Debiana – pliku konfiguracyjnego umieszczonego w katalogu /etc. Przykładowy plik konfiguracyjny dla hostapd znajdziemy jednak w /usr/share/doc/hostapd/examples.

Żeby nie przedłużać, poniżej cały plik konfiguracyjny, którego ostatecznie użyłem:

interface=wlan0country_code=PLssid=NAZWA_SIECIhw_mode=gchannel=6wpa=2wpa_passphrase=TAJNE_HASLOwpa_key_mgmt=WPA-PSKwpa_pairwise=TKIPrsn_pairwise=CCMPauth_algs=1macaddr_acl=0

Jak widać, są lekkie różnice w stosunku do tutoriala. Brakujące ustawienie zmiennej w skrypcie startowym znalazłem później, więc ostatecznie uruchamiałem hostapd z ręki, bez demonizacji (w ramach debugu, zresztą).

Oczywiście sama konfiguracja hostapd nie wystarczy. Trzeba mieć jeszcze skonfigurowane „przyjście” netu. W moim przypadku internet był dostarczony z modemu GSM (tutaj opis konfiguracji Aero2 na modemie Huawei E3131). Użycie modemu LTE pozwoli oczywiście zrobić szybszy router GSM na Linuksie. Przyda się również serwer DHCP i konfiguracja DNS. Obie rzeczy może załatwić dość dokładnie opisany kiedyś dnsmasq. Ale dla przydzielania adresów IP systemom łączącym się z naszym routerem GSM wystarczą dla ww. konfiguracji dwie linie w /etc/dnsmasq.conf:

interface=wlan0dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,1h

Należy też dodać adres IP na interfejsie wlan0, włączyć forward pakietów dla IPv4 oraz uruchomić NAT. Wersja „ręczna” ww. czynności (dla mojej konfiguracji, interfejsy mogą się zmieniać) to:

ip a a 192.168.10.1/24 dev wlan0
ip link set wlan0 up
service dnsmasq restart
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Po tym wszystkim, inne komputery powinny móc się połączyć z naszym linuksowym routerem GSM, dostać adres IP oraz posiadać dostęp do internetu za jego pośrednictwem. W przypadku problemów warto sprawdzić kolejno: otrzymanie adresu IP, ping do routera (192.168.10.1), ping do świata po IP, ping do świata pod domenie (w zasadzie: resolvowanie DNS).

Na rynku jest sporo sprzętów, które pozwolą zbudować mocny routera GSM na Linuksie. Choćby przykładowo Banana Pi, Orange Pi czy nieśmiertelne Raspberry Pi. Oczywiście jeśli miałby być to sam router, to nie bardzo widzę sens ekonomiczny, bo zestaw modem+płytka+karta wifi+zasilacz pewnie będzie kosztował więcej, niż tani router LTE (no chyba, że ktoś akurat – jak ja – ma ww. graty pod ręką 😉 ), ale w przeciwieństwie do taniego routera GSM można tu uruchomić dodatkowe funkcjonalności typu NAS, VPN czy serwer WWW. Ten ostatni to może niekoniecznie na łączu GSM…

Mam nadzieję, że opis się przyda. Gdybym o czymś zapomniał, albo coś nie działało, proszę o uwagi.

PS. Oczywiście mam świadomość, że udostępnienie internetu z GSM potrafi w trzech kliknięciach zrobić chyba każdy smartfon z Androidem. W przypadkach awaryjnych jest to pewnie najszybsza droga. I tak, użyłem Aero2 i pakietu testowego bez captcha. Niskie opóźnienia pozytywnie zaskakują.

UPDATE: Istnieje coś takiego jak projekt RaspAP, o którym warto wspomnieć. Narzędzie umożliwia konfigurację access pointa WiFi w ładny (GUI) sposób. Wsparcie dla wielu języków, wygodny dostęp do wielu opcji.

„Must have” aplikacje na telefon z Androidem

Android robot - logo

Źródło: https://en.wikipedia.org/wiki/Android_(operating_system)

Okazuje się, że trochę z Androida jednak na telefonie korzystam. Do tej pory znalazłem dwie sprytne aplikacje, które bardzo ułatwiają mi życie.

Pierwsza z nich to Screebl Lite.

Zadaniem aplikacji jest blokowania funkcji wygaszania ekranu, jeśli wygląda na to, że korzystamy z urządzenia, czyli trzymamy je w ręku. Używanie wykrywane jest po nachyleniu – jeśli odłożymy telefon na płask, to się wygasi normalnie, ale jeśli będzie pod kątem, to się nie wygasi. W połączeniu z agresywnym ustawieniem wygaszania (zawsze takie miałem), pozwala oszczędzać baterię, ale z drugiej strony nie przeszkadza w pracy.

Przyznaję, że na początku po poleceniu przez D. (thx!) i instalacji Screebl Lite nie zauważyłem różnicy i stwierdziłem, że w sumie nieprzydatny bajer, ale po namyśle i dłuższym korzystaniu – wręcz przeciwnie, znacznie wygodniej jest z tą appką. Doceniłem różnicę, gdy wyłączyłem aplikację… A wyłączyłem, bo niezupełnie dobrze współgra z Yanosikiem – podczas jazdy przy aktywnym Screebl, ekran cały czas pozostał niewygaszony.

Druga sprytna aplikacja to Wi-Fi Matic.

Zasada działania jest prosta: aplikacja zapamiętuje lokalizacje, w których włączamy Wi-Fi, a następnie wyłącza Wi-Fi po ich opuszczeniu, a włącza po powrocie do tych lokalizacji. Proste i skuteczne, zwalnia z konieczności ręcznej aktywacji Wi-Fi w telefonie i pozwala oszczędzać pakiet danych u operatora GSM. Okres, co ile ma być sprawdzana lokalizacja można zdefiniować w aplikacji, a określanie lokalizacji nie korzysta z GPS, tylko jest zrobione sprytnie, w oparciu o stacje bazowe GSM.

Z Wi-Fi Matic korzystam raptem od paru dni, ale jestem bardzo zadowolony. Przy okazji, aplikacja posiada wolny kod źródłowy dostępny na Githubie i jest dostępna w repozytoriach F-Droid.

Bonusowo: F-Droid.

F-droid, czyli manager wolnoźródłowych i wolnych (także dodatki i dane) appek dla Androida. Pozwala na łatwe wyszukiwanie i instalowanie aplikacji z opisywanego kiedyś repozytorium f-droid.org. Spodoba się pewnie głównie miłośnikom Linuksa, ale i tak warto się zainteresować – trochę ciekawych aplikacji, wszystkie appli dostępne bez reklam i opłat, z wyszczególnionymi zagrożeniami prywatności.