Menu

Pomiędzy bitami

Techno, porno i duszno. Blog niezupełnie technologiczny.

Koniec projektu Bananian

rozieblox

Twórcy dystrybucji Bananian, czyli modyfikacji Debiana dedykowanej dla Banana Pi, którą opisywałem, ogłosili blisko kwartał temu, że kończą działalność projektu. Powody standardowe - brak czasu, wynikający z tego brak supportu dla nowszych wersji sprzętu, konieczność przesiadki na wydanego niedawno Debiana 9 (nie, nie przegapiłem, ale czekam z notką na wrażenia z upgrade) i... lepsze wsparcie dla płytek w wersji 4.x kernela Linuksa.

Jako sugerowanego następcę wskazują dystrybucję Armbian, która wspiera wiele płytek opartych o ARM (m.in. Banana Pi, Orange Pi, Odroid) i którą już wcześniej zachwalali znajomi, ale... skoro byłem zadowolony z Bananiana, to nie było potrzeby korzystać. Armbian występuje w dwóch wersjach - opartej na Ubuntu, dedykowanej na desktop oraz opartej na Debianie, dedykowanej na serwery.

Bananian nie jest całkowicie porzucany, wersja 16.04 nadal będzie otrzymywać, do kwietnia 2018 aktualizacje bezpieczeństwa. Przesiadka jest zatem zalecana, ale nie ma pośpiechu.

Ilość rowerów Nextbike na stacjach - reaktywacja

rozieblox

Dawno temu pisałem o monitoringu rowerów Nextbike na stacjach. Moja strona podająca aktualną ilość rowerów miejskich na stacjach Nextbike działała do kwietnia tego roku, po czym przestała odświeżać dane. Jest to o tyle niefajne dla mnie, że appka androidowa Nextbike i jej wyszukiwanie rowerów to jakaś kpina i zdecydowanie łatwiej i szybciej znajdowałem potrzebne dane u siebie. Albo po prostu I don't like the bugs but the bugs like me, czyli znowu mam pecha i u mnie nie działa. W ogóle o appkach na Androida, zwłaszcza polskich wypadałoby już popełnić osobny wpis...

Poczyniłem szybki debug i okazało się, że Nextbike zapytany o konkretne miasto zwraca od niedawna błędny XML, zawierający zawsze także dane dla Indii. Zgłosiłem błąd mailem, co wiązało się z zabawną sytuacją, bo po pierwsze zostałem przez centralę wzięty za pracownika (chyba raczej stażystę) firmy Nextbike i odesłany do innego pracownika, który może założyć ticket w systemie. Padło też pytanie, a skądże to ja mam namiar na ten URL (przypominam, mający official w nazwie). No cóż, URL lata w wielu miejscach w sieci...

W każdym razie błąd został zgłoszony, a dane się nie pokazywały. Próbowałem na szybko zreanimować skrypt w Perlu, ale albo zmian było więcej, albo nie do końca umiem korzystać z tej biblioteki. W każdym razie poległem, a na dłuższe grzebanie w Perlu nie miałem ochoty. Przy okazji niegdyś poukładany kod wydał mi się już nie taki fajny i w sumie można by go przepisać...

Wczoraj zrobiłem przymiarkę do napisania tego w Pythonie. Okazało się, że bez problemu jestem w stanie parsować XML. Przy okazji zrezygnowałem z pobierania danych dla każdego miasta oddzielnie - miast jest na tyle dużo, że szybciej jest pobrać plik XML raz. Skoro zapowiadało się tak fajnie, to od razu postanowiłem przerzucić konfigurację z hasha w programie do pliku YAML. A skoro szło tak fajnie, to zmieniłem "template", zaszyty w printach w skrypcie, na Jinja2, przy okazji mając pierwszy praktyczny kontakt z tym rozwiązaniem, bo wcześniej "korzystałem" z niego tylko w template'ach dla bloga opartego o Pelican. Bardzo fajne, rozbudowane bardziej, niż przypuszczałem i jednak rządzące się swoimi prawami. W każdym razie mniej oczywiste niż mi się wydawało do tej pory.

Skoro szło tak dobrze, to dorzuciłem pięć kolejnych miast (Pszczyna, Zgierz, Kędzierzyn-Koźle, Kołobrzeg i Tychy), bo tyle pojawiło się od kwietnia. Oczywiście już nie do skryptu, tylko do prostego w utrzymaniu pliku z konfiguracją. :-) Całość zapakowana w virtualenv oczywiście, dla przenośności.

Ze skryptu nie jestem w 100% zadowolony - pewnie można go jeszcze uprościć, ale... może kiedy indziej, tym bardziej, że mógłbym jeszcze uzupełnić dane o geolokalizacji i pewnie gdzieniegdzie zostało błędne kodowanie znaków. Póki co, strona z ilością rowerów znowu działa. Ciekawostka - wszystkie pliki (skrypt, konfig, dane o wymaganych modułach) mają tyle samo linii co oryginalny Perl (TBH żadne nie było specjalnie sprzątane czy optymalizowane pod kątem wielkości), a jest o niebo czytelniej i prościej.

Internet bez kabla

rozieblox

Raspberry Pi radzi sobie w połączeniu z modemem Huawei 3131 (stara wersja) zaskakująco dobrze jako router do Aero2 (wariant płatny). Przesiadka z Banana Pi nie była całkiem bezproblemowa - internet w domu co prawda działał, ale straciłem zdalny dostęp przy pomocy autossh. Diagnostyka była prosta - okazało się, że nie wystarczy skopiować skrypty i crony, warto jeszcze sprawdzić, czy autossh jest w ogóle zainstalowane...

Prawdopodobnie przez brak nawiązanego połączenia SSH zmienia się IP i przesyłanych (a w zasadzie zliczanych) jest więcej danych podczas okresowego (co 5 minut) wywoływania wget w ramach namiastki dyndns. Znaczy zamiast jednego pakietu 3GB po 5 zł sztuka miesięcznie schodzą dwa. Można kupić więcej od razu, więc żaden problem, zresztą i tak raczej się zdziwiłem, że na początku mieścili się w jednym.

Internet z GSM działa przyzwoicie. Nie zauważyłem ani specjalnych lagów, ani spowolnienia. Co prawda może to być kwestia porównywania ze starym pakietem, ale póki co skłaniam się ku teorii, że jestem w stanie przesiąść się w domu całkowicie na internet bezprzewodowy, po GSM. Przynajmniej technologicznie, bo ceny wyższych pakietów jeszcze nie zachwycają. Poza tym, LTE działa podobno jeszcze lepiej...

Pozostało dołożenie drugiego modemu z internetem od innego operatora, uruchomienie abcc do wybierania aktualnie lepszego (i działającego) łącza i... tyle. No, muszę przerobić jeszcze wywoływanie autossh, bo zrobiłem proste @reboot w cronie, co słabo się sprawdza w przypadku zerwania sesji - raz się jednak pakiet Aero2 skończył i trzeba było doładować, a jak się nie zrobi tego od razu, to się zapomina.

Oczywiście można kombinować jeszcze z wyniesieniem modemów GSM w lepsze miejsce, podpięciem anten itp. ale... po co komplikować, skoro działa? Z drugiej strony byłby pretekst do zabawy z antenami i potestowania wpływu siły sygnału GSM na prędkość działania internetu.

Podsumowanie DSP2017

rozieblox

No i po pierwszej rundzie DSP2017. Zgodnie z przewidywaniami nie dostałem się do rundy drugiej. Cieszy mnie, że dostało się tam dwóch z trzech kandydatów, na których głosowałem. Szkoda tylko, że nie było opublikowanych pełnych wyników pierwszej tury, a jedynie wyniki top25, czyli przechodzących do tury drugiej. Chętnie bym zobaczył rozkład ilości głosów.

Zadowolenie z konkursu? 75% - zmotywował mnie do urzeczywistnienia abcc, którego będę używał, nauczyłem się paru rzeczy związanych z Pythonem, poprawiłem środowisko do kodowania w domu (czytaj: pluginy do Atoma). Na mój gust nieco za dużo obowiązkowego blogowania jednak. No i projekt nie otrzymał zamierzonej formy. To ostatnie jest poniekąd spowodowane wymogiem pisania postów - parę razy było tak, że wybierałem między obowiązkową notką a napisaniem kawałka kodu...

Czy wezmę udział w kolejnej edycji (o ile będzie)? To zależy od trzech czynników. Pierwszy, to czy będę miał jakiś pomysł. Drugi, czy będzie wymagane aż tyle wpisów. Ostatni - termin. Jest wiosna, ciepło, nie ma sensu siedzieć w domu przy kompie, lepiej wyjść na zewnątrz i poruszać się trochę.

DSP2017 - głosowanie

rozieblox

W trakcie konkursu pisałem o projektach, które przykuły moją uwagę. Niestety, przyznaję, że nie udało mi się siąść i uczciwie przejrzeć wszystkich projektów, stąd brak kolejnych części. Dlatego, choć część z powyższych projektów znajduje się w gronie finalistów, postanowiłem zagłosować inaczej.

Bezpośrednim motywatorem były statystyki stworzone przez Cezarego. Metoda wyboru kandydatów do głosowania była prosta - sortowanie po ilości gwiazdek projektu na GitHubie i szukam czegoś ciekawego. Czemu tak? Głównie, żeby docenić przydatne projekty i zminimalizować wpływ części związanej z blogowaniem. Ostatecznie GitHub to social network, DSP2017 minie, a GH zostanie. Dlatego zachęcam do interakcji tamże.

Aktualizacja Androida

rozieblox

Na wstępie uprzedzam - to nie poradnik, to marudnik. Z uwagi na drastyczne sceny nie polecam lektury ludziom o słabych nerwach.

Zaczęło się od tego, że zaczęło ginąć miejsce w telefonie. Wyglądało to nieco podobnie jak w przypadku opisanym kiedyś - zajęta niby połowa miejsca, a niczego zainstalować nie sposób. Poza tym, niedawno ukazała się aktualizacja systemu, którą spróbowałem zainstalować. Dotychczas przebiegało to bezproblemowo z poziomu telefonu, tym razem jednak aktualizację pobrał, zaczął rozpakowywać i... zdechł w trakcie. Prawdopodobnie na skutek skończenia się miejsca w trakcie aktualizacji, bo przecież sprawdzenie ilości wolnego miejsca, ze stosownym zapasem przed rozpoczęciem aktualizacji to trudna sprawa jest.

Byłem pewien, że zdechł całkiem, ale nie - uruchomił się w zgrabnym trybie wyglądającym miło i przyjaźnie - zupełnie jak konsola Linuksa. Z miejsca mi się spodobało. Sprawdziłem integralność instalacji (failed), mimo ostrzeżeń uruchomiłem normalnie i... wszystko działało, tylko w starej wersji. Zwolniłem znacznie więcej miejsca i spróbowałem jeszcze parę razy. Z tym samym skutkiem, więc może jednak nie o miejsce chodziło? Zapomniałem o sprawie na parę tygodni.

System pozwala na aktualizację na kilka sposobów. Pierwszy, z którego korzystałem, to pobranie aktualizacji z sieci. Drugi, to umieszczenie aktualizacji na karcie SD i wybranie odpowiedniej opcji. Tyle, że tryby działania karty są dwa, mocno rozłączne i związane z formatowaniem karty. Pierwszy, to zwykła karta do przenoszenia zdjęć, drugi, to pamięć wewnętrzna. Oczywiście, żeby zrobić aktualizację w tym trybie, karta musi być w trybie zwykłej karty SD, a ja miałem w trybie pamięci wewnętrznej. Zresztą, gwoździem do trumny dla tej opcji okazał się problem ze znalezieniem na stronie producenta aktualizacji do umieszczenia jej na karcie.

Z uwagi na problemy z integralnością instalacji i podejrzeniem uszkodzenia systemu plików, zacząłem rozważać pełen reinstall systemu, zamiast aktualizacji, która w ww. przypadku niekoniecznie musiała się udać. Co prawda na stronie producenta nie widziałem pełnych wersji do instalacji, ale stwierdziłem, że w sumie goły Android to nawet lepsza opcja może być. Zacząłem szukać wersji waniliowej albo jakiegoś CyanogenMod.

I tu zaczyna się horror show. Jakieś pliki wrzucone w jakieś miejsca, przez jakieś skracacze linków. Autor nieznany, treść niepodpisana cyfrowo. GPG jest przecież takie trudne, a malware'u dołożyć nie sposób. Do tego dziwne rozczłonkowanie i po modelach telefonów (pół biedy, jeśli oznaczenie jest dokładnie to samo), i po plikach. Totalne puzzle.

Dla pewności sprawdziłem jeszcze raz stronę producenta, czy aby nie przegapiłem gdzieś obrazu czy czegoś w ten deseń. No jednak nie. Postanowiłem zatem uznać wyższość Windows i skorzystać z aplikacji do aktualizacji dostarczanej przez producenta. Instalacja bez problemu, ale po podłączeniu telefonu system... zapragnął sterownika. W trakcie instalacji "się przerwało" i musiałem odczynić jakiś cyrk, żeby ponownie go wykrył. Oczywiście logów czy sensownych komunikatów brak.

Po wykryciu telefonu i instalacji sterowników pozostało już tylko wybranie modelu (nie żeby przed chwilą nie był wykryty, prawda?) i zaczął się pobierać system. A potem zaczął się wgrywać na telefon. Radosny komunikat na ekranie głosił, że gdyby rozłączył się w trakcie, to należy wyjąć z niego baterię i podłączyć ponownie. Chyba nie do końca umiem korzystać z Windows, bo za nic nie potrafiłem stwierdzić czy jest podłączony, czy nie. Możliwe, że nie dość uważnie wpatrywałem się w diodę dysku czy wsłuchiwałem w szum wentylatora. W każdym razie po kilkunastu minutach bez postępu stwierdziłem, że chyba nastąpiło rozłączenie. Oczywiście logów czy jasnego komunikatu na ekranie nie ma, bo po co?

Słusznie stwierdziłem! Wyjąłem baterię podłączyłem ponownie i... cały proces zaczął się od początku. No dobrze chociaż, że wykrył pobrany już plik. Tym razem flashowanie dotarło do szczęśliwego finału. Restart telefonu i... Zamiast wersji najnowszej, jest ta, którą miałem wcześniej. Ale system czysty, więc połączyłem się z siecią WiFi i tym razem aktualizacja do naprawdę najnowszej dostępnej wersji przebiegła już bez problemu.

Cel został osiągnięty. W jedyne dwie godziny. Czy tam dwie i pół.

Rockbox 3.14

rozieblox

Nie sądziłem, że kiedykolwiek napiszę jeszcze coś w tym temacie, bo projekt Rockbox wyglądał na martwy, ale wczoraj dowiedziałem się, że blisko miesiąc temu, po ponad czterech latach od ostatniego wydania, ukazała się kolejna stabilna wersja alternatywnego oprogramowania dla odtwarzaczy mp3. Pełna lista zmian w Rockbox 3.14 dostępna jest tutaj, z ciekawszych IMO rzeczy: poprawki wydajności systemu plików i bazy danych, dostępna gra 2048 jako plugin oraz niemal podwojona(!) długość pracy na baterii dla AMS v2 devices (Sansa Clip v2, Clip+, Clip Zip, and Fuze v2).

Już zaktualizowałem urządzenia. :-)

MVP

rozieblox

Wygląda, że projekt abcc mający za zadanie automatyczny wybór najlepszego łącza pod Linuksem właśnie stał się MVP. Znaczy można zdefiniować konfigurację, wrzucić do crona (na razie to skrypt, nie demon) i... powinno działać wg konfiguracji. Czyli można testować. :-)

Jak pisałem w poprzednim wpisie, nie jest to wersja w 100% zgodna z założeniami, czyli nie jest skończona, ale... działa. Przynajmniej teoretycznie. Poza tym, co jest w issues.

W poprzednim wpisie celowo nie poruszyłem tematu stacji testowej. Doszedłem do wniosku, że to overkill. Jest za to mocne postanowienie uruchomienia tego na produkcji. Tak zwyczajnie i po prostu, tylko muszę najpierw poprawić konfigurację routera u rodziców, by mieć do niego zdalny dostęp.

W najbliższym czasie jeśli będą zmiany, to raczej dotyczące stylu, niż funkcjonalności. A z wpisów na blogu w tej kategorii - chyba już tylko podsumowanie DSP2017.

W zasadzie koniec

rozieblox

DSP2017 kończy się w najbliższą środę. W moim projekcie zastój i marazm - trochę bardziej zmęczony z pracy przychodzę w tygodniu, trochę za dobra pogoda w pozostałym czasie, trochę co innego zaprząta głowę, kupiłem też trochę książek...

Ostatnio został dorobiony licznik postów i... pojawił się mały motywator, bo okazało się, że na liczniku jest 19 postów. Znaczy być powinno, bo okazało się, że są problemy ze zliczaniem. Pojawiła się prośba o zwiększenie ilości postów w feedzie ale oczywiście Blox na takie fanaberie nie pozwala. Z kolei mój skrypt do tworzenia feeda dla pojedynczej kategorii[1] nie został niestety wyposażony w logowanie wyjścia. Co po namyśle uznałem za średnio roztropne, ale trudno, mleko się rozlało. Gdybym miał teraz koniecznie wygenerować pełny feed to albo muszę napisać generator, albo tymczasowo wyeksportować bloga z Blox na WordPressa (ma się sposoby ;-)). No ale wygląda, że nie jest to konieczne - wystarczyło zgłosić.

Tak czy inaczej, zakładając, że pozostałe posty spełniają wymogi konkursu (a powinny, bo tylko takie powinny być w kategorii), to ten wpis zamyka wymagane minimalne dwadzieścia wpisów.

Co się zmieniło? Skrypt nadal nie jest skończony, nawet w wariancie minimalnym, ale dowiedziałem się, że nieprawidłowo korzystałem z logowania. Pozbyłem się też tymczasowych printów na rzecz logowania, dodałem krótkie opcje, wygodniejsze w użyciu.

Co dalej? Na pewno chciałbym w ten weekend osiągnąć wersję minimalną, używalną z crona i aktualizacja opisu i dokumentacji. Kolejnym planowanym krokiem jest doczytanie o docstringach, dokonfigurowanie domowego Atoma i systemu tak, żeby działało sprawdzanie składni (włączyłem to w pracy - kosmos) i poprawki pod tym kątem. Raczej nie planuję skończyć przed wakacjami projektu w pierwotnie zakładanej formie - zwykle na urlopie mam dużo wolnego czasu wieczorami, więc może wtedy...

[1] Swoją drogą już niepotrzebny, bo opcja feeda dla pojedynczej kategorii wróciła na Blox.

Porównywanie tras

rozieblox

Dodałem porównywanie tras i poprawiłem logowanie, by było bardziej zgodne z założeniami. Nie jest to fragment kodu, który mi się szczególnie podoba i nawet nie testowałem go w praktyce (ech, przydałaby się stacja testowa...), ale oznacza to, że w zasadzie całość jest gotowa - zostało przełączenie routingu dla danej trasy, jeśli jest taka potrzeba i zrobienie demona. W zasadzie przełączenie może być analogiczne jak przy tymczasowej zmianie routingu dla pojedynczego IP - jeszcze przemyślę, czy na pewno tak jest.

Czytanie aktualnego routingu

rozieblox

Dodałem czytanie aktualnego routingu. Żadnej magii - wywołanie ip route i parsowanie regexpem tylko tych, które mają via. Raczej PoC i będą wymagane testy. I poprawki. Na pewno przydałoby się sprawdzanie, czy dana trasa jest zdefiniowana dokładnie raz. Zastanawiam się, czy słusznie używam check_output. W sumie bezpieczniej chyba przyjąć cokolwiek i najwyżej nie mieć dopasowania już po stronie skryptu, niż dostać wyjątek. Do przemyślenia później, na razie jest z czym iść do przodu.

PS Stacji chwilowo nie robię - naszło mnie na kodzenie.

Wybór najlepszego interfejsu

rozieblox

Dodana kolejna funkcja, zwracająca trasy i odpowiednie dla nich najlepsze interfejsy. Napisane na szybko rano, przetestowane i poprawione przed chwilą, bo nie wiem jakim cudem napisałem rano taki bezsens. Plan był znacznie bardziej ambitny, dzień zapowiadał się pięknie i nawet zaryzykowaliśmy bonusowy wypad do centrum handlowego Posnania celem nabycia oświetlania, ale...

Zanim przejdziemy do ale dygresja nt. owego centrum. Nie wiem co jest zrobione źle. Albo nie jest skończone i nie działają wentylatory, albo jakaś awaria czujników, albo... broken by design. W każdym razie efekt jest taki, że na dość luźnym parkingu, przy braku jeżdżących aut jest duszno i mocno śmierdzi spalinami. Pierwszą rzeczą po wyjeździe było gruntowne przewietrzenie auta, nie chcę myśleć co będzie przy większym ruchu...

Inne wtopa - oprogramowanie do znajdowania trasy na tabletach (oj, można się zgubić, można...) działa w oszczędnej (Poznań, prawda? ;-)) wersji demo, zachęcającej klientów do zakupu licencji. Albo poczekania. Profesjonalnie. Niestety, fotki nie zrobiłem, bo napis zdążył zniknąć, a trochę mi się spieszyło, więc nie uruchamiałem drugi raz.

Wracając do ale: brak czasu, sponsoruje bieg Wings for Life World Run (ciekawa formuła, swoją drogą, może kiedyś się skuszę?). Nie wiedziałem, że się odbywa, więc nie sprawdziłem trasy i na powrocie utknąłem w korkach. Pewnie nie wkurzałoby, gdyby nie fakt, że bieg najpierw blokował główną ulicę z jednej strony centrum, a potem... inną ulicę z drugiej strony centrum. Jak doczytałem później, w międzyczasie jeszcze trzecią ulicę. Generalnie wjazd do centrum w praktyce wyłączony na ponad godzinę (stawka mocno rozciągnięta...), miasto totalnie zablokowane, bo korki się skumulowały, podobno 800 aut stało na rondzie Śródka.

Nie wiem co za umysł wytyczył tak trasę, ale jeśli chce w ten sposób zniechęcić ludzi do biegów czy też tej konkretnej imprezy, to jest na doskonałej drodze. Bo rozumiem start w centrum, przebiegnięcie przez centrum i jakieś utrudnienia w ruchu, żeby biegacze "byli widoczni", ale totalna blokada centrum i pałętanie się biegaczy przez godzinę? Noż wyraz.

W każdym razie po godzinie stania w korku cała energia i chęć pisania czegokolwiek poszły się paść, więc tylko poprawki, ten wpis i tyle. Sondy dziś nie będzie.

PS Oświetlenie kupiłem.

Przerwa majowa

rozieblox

Uważni czytelnicy dostrzegli, że w zeszłym tygodniu nie pojawił się żaden wpis. Regulamin DSP2017 dopuszcza przerwy w prowadzeniu projektów i... zeszły tydzień należy potraktować jako przerwę. Zresztą ponad tydzień, bo w zasadzie majówka cała nieprojektowa, z małym wyjątkiem, o którym zaraz. W każdym razie z konkursu się nie wycofałem i mam nadzieję, że tygodni roboczych będzie wystarczająco dużo. Nie liczyłem ile jest dokładnie, a zarejestrowałem się z opóźnieniem. Tak czy inaczej, nie chodzi o to by złowić króliczka...

Przerwy są dobre, czy to w pracy jako urlop, czy przy projekcie. Można spojrzeć z boku, wyskoczyć z utartych torów i nabrać energii. W każdym razie zeszły tydzień był mocno pracowity, a wypełnianie PITów, to nie jest coś, co warto odkładać na ostatnią chwilę, powiadam wam. Zresztą warto wcześniej sprawdzić, czy ma się komplet papierów, jak się okazuje. W każdym razie zdobyłem kolejny skill w zakresie obsługi podatków. Ale ostatecznie wszystko w miarę wyprostowane.

Potem był czas dobrych imprez i intensywnego chodzenia po sklepach celem urządzenia oświetlenia - powiedzmy, że 20% zrobione. A w międzyczasie doglądanie zewnętrznych rzeczy - a to serwer się zaczął restartować bez przyczyny (odpowiedź ISP rozwaliła, ale restarty ustały, hm...), a to ktoś zepsuł format danych, z których korzystam... Chwilę trwało, zanim przyswoili, że błąd zgłasza osoba z zewnątrz, a nie pracownik. Fun, fun, fun. Tylko czasu szkoda.

Udało mi się zrobić dwie związane z projektem rzeczy: przetestować uruchomienie programu na czystym systemie z ARM (działa, czemu miałby nie działać?) oraz wstawić Raspberry Pi zamiast Banana Pi jako router, czyli odzyskać właściwą sondę. Co prawda to ostatnie nie udało się w 100%, bo robiłem na szybko, trochę czasu zeszło na ustalenie, że NAT lepiej działa, jak się włączy forwarding, a po wszystkim okazało się, że logowanie przy pomocy autossh coś nie działa, ale powiedzmy, że wariant minimum jest zrobiony. Z powodu małej ilości czasu nie zaryzykowałem też wpięcia drugiego modemu.

Przerwa i programowanie w pracy skłoniło ku refleksji, że może jednak lepiej będzie docelowo przepisać to obiektowo. Głównie chodzi o łatwość wykorzystania kodu w innych projektach - dokładnie to przerabiam w pracy. W cele projektu oficjalnie tego nie wpisuję póki co, ale jeśli tylko starczy czasu, to będzie próba refaktoringu kodu.

Raspbian i uruchomienie modemu GSM Huawei E3131

rozieblox

Uruchomienie modemu Huawei E3131 (hilink) pod Debianem opisałem wcześniej, ostatnio pisałem o perypetiach związanych z tym, że na Debianie działa, na Raspbianie nie działa. Dziś zagadka została rozwiązana.

Udałem się na kanał IRC Raspbiana, w nadziei, że dostanę wskazówki w czasie kiedy będę przeprowadzać debug. Czasami nie ma się co męczyć, bo po prostu można o czymś nie wiedzieć, jak miało to miejsce w przypadku uruchomienia SSH na Raspbianie. Poza tym, takie pytanie o pomoc i dostarczenie pełnych danych o problemie działa trochę jak gumowa kaczuszka.

Nim dobrze skończyłem pisać, dostałem namiar na ten wpis. Wygląda paskudnie? Ano wygląda. Ale działa - po wydaniu podanego polecenia pojawił się interfejs eth1 w systemie. Ale być może wystarczy doinstalować sg3-utils? Niestety nie - opisany sposób działa tylko do rebootu Raspberry Pi czy też do wyjęcia i włożenia modemu (nie pamiętam, oba mało akceptowalne...). Od biedy mógłbym z tym żyć, bo prosty skrypt do crona załatwi sprawę, ale... na Debianie jest bardziej elegancko, więc drążyłem temat.

Skoro przyszło do pakietów, to zauważyłem, że na desktopie mam zainstalowany pakiet:

ii  modemmanager                              1.6.4-1                                                 amd64        D-Bus service for managing modems

Brzmi obiecująco, tym bardziej, że dotyka D-Bus. Na Raspbianie tego pakietu nie było... Doinstalowałem pakiet, reboot Raspberry Pi i... Działa. Nie jest identycznie jak w Debianie, bo nadal interfejs to eth1 i IP pobiera automatycznie z DHCP, ale to detale - najważniejsze jest działające wyjście na świat.

Podsumowując: aby działały modemy typu dongle USB w Raspbian, należy doinstalować pakiet modemmanager.

Wpis pojawia się w kategorii DSP2017 z racji tego, że płytka z ARM będzie robiła za stację testową. Jeśli wszystko pójdzie dobrze, jeszcze dziś...

© Pomiędzy bitami
Blox.pl najciekawsze blogi w sieci