Wieki po projekciku, który robiłem w ramach projektu DSP2017, po którym chyba już nic w sieci nie zostało, doznałem natchnienia. Stwierdziłem, że teraz jest łatwo, można popytać LLMa, więc może łatwiej będzie znaleźć bibliotekę do ping pod Pythonem. Ostatnio opornie to szło…
Nie zawiodłem się, podał od ręki, wraz z kodem. Oczywiście przerobiłem, by bardziej pasowało. Przy okazji przy testowaniu (w zasadzie: testach uruchamiania) wynikło trochę błędów, które poprawiłem.
Po co to zrobiłem? Nie wiem. Chyba dla porządku. Drażnił mnie ten Python 2 w wymaganiach. A wyrzucić szkoda było. Chociaż raczej nikt nie używa. Choć IIRC ktoś się przymierzał, ale nie chciał poświęcić czasu, tylko „zrób mi”. Oczywiście za darmo. Trochę nie miałem czasu, weny i… to tak nie działa.
Warto po latach przypomnieć czym jest abcc? Na dzień dzisiejszy to rzeźbiarstwo figurowe – program do wybierania najlepszego łącza z kilku dostępny z wykorzystaniem zadanych wag, na podstawie strat i opóźnień. W sumie kiedyś, w czasach routerów na Linuksie miało to sens. Chociaż nic nie stoi na przeszkodzie by i dziś podpiąć dowolny skrypt i sterować np. przy pomocy SNMP routerem operatorskim. Istniało komercyjne rozwiązanie, które mniej więcej robiło to samo. Oczywiście z ładnym inferfejsem i opakowaniem.
Albo można użyć na jakimś OpenWrt do balansowania łącza czy też raczej wyboru lepszej ścieżki do danej sieci. Bez BGP, na podstawie wyżej wspomnianych metryk. Przy LTE itp. może być użyteczne.
W końcu padła kolejna karta microSD. Tym razem jakaś chińszczyzna, kupiona wieki temu na Aliexpress. Działała długo. Nie pamiętam od kiedy, ale chyba parę lat. Znaczy się, problemy miała wcześniej, ale nie miałem czasu się tym zająć i jakoś działało. Chodzi oczywiście o Raspberry Pi robiące za router GSM.
O tym, że nie jest z nią dobrze wiedziałem. Przy instalacji nowych pakietów miała narowy i leciały jakieś błędy. Za pierwszym razem ograniczyłem zapisy na kartę – wyłączyłem bieda statystyki w postaci logowania ilości przesłanych danych. Mogłem wyłączyć więcej logów oraz swap, ale nie wpadłem na to. Zresztą, działało.
A teraz pewnego dnia zniknął internet, akurat gdy pracowałem. Oczywiście udostępniłem sobie net z komórki, ale zrobiłem szybką diagnostykę. W logach czysto, w dmesg czysto, uptime 240 dni. Reboot i… nadal nie działało. Za to chwilę po reboocie przy zwykłym działaniu pojawiły się błędy odczytu. Uznałem, że wina karty.
Chyba niesłusznie i była to po prostu awaria a2mobile, bo po przełożeniu modemu do innego komputera netu także nie było.
Tu mała dygresja odnośnie operatorów. Zmigrowałem z Aero2 na a2mobile i tak to sobie działa. Przy okazji – można odzyskać kaucję za kartę, którą pobierało Aero2. Nie trzeba odsyłać karty, nie trzeba podawać numeru ani wypełniać druku – wystarczy napisać email, tak jak to opisano na Pepper. W mniej niż tydzień pieniądze z depozytu miałem na koncie.
Tak w ogóle to widzę, że w Aero2 mają nowe pakiety i może niepotrzebnie rezygnowałem. Bo teraz w Aero2 dają 10 GB za 10 zł bez limitu prędkości. Z kolei obecne a2mobile nadal daje za 12,9 zł 5 GB bez limitu prędkości, kolejne 5 GB z limitem 3 Mbps (modem 3G, więc nie robi to dramatycznej różnicy i spokojnie da się działać), kolejne 5 z limitem 1 Mbps (no tu jest wolno już), a potem 512 kbps. W praktyce pewnie zwykle mieściłbym się w 10 GB, a lepiej dopłacić 10 zł za kolejny pakiet przy tych rzadkich okazjach, kiedy potrzeba będzie więcej transferu. Hmm…
No ale skoro karta ewidentnie pada, to pora na wymianę. Czasu mało, więc zamawiać nie będę, szybka wizyta w sklepie, kupiłem jakiś dziwny wynalazek 32GB za 20 zł. Karta microSD z napisem full HD na opakowaniu. Przy okazji zauważyłem, że bardzo stary Raspbian się tam ostał – jeszcze oparty na bullseye. Zastanawiałem się przez chwilę, czy nie instalować nowego Raspbiana (oparty na bookworm), ale o ile backup obrazu karty miałem, o tyle plików nie. Oczywiście mogłem podmontować i zgrać pliki, ale stwierdziłem, że więcej będzie roboty z szukaniem ich wszystkich, niż z aktualizacją Raspbiana.
No i w sumie miałem rację – aktualizacja była bezproblemowa. Przy okazji wyłączyłem logi,wyłączyłem swap, zrobiłem lekki tuning pamięci, ustawiając minimalną możliwą dla karty graficznej (16 MB zamiast domyślnych 64 MB). No i zobaczymy, ile podziała teraz. Oczywiście mam świeży backup, znowu w postaci obrazu karty.
Przy okazji, trafiłem na ciekawy opis, jak zrobić w Raspberry Pi kartę w trybie read only przy pomocy overlayFS. Spróbowałem i… niestety nie działa, choć raspi-config twierdzi, że przełączył. Nie tylko u mnie, widziałem podobne opisy na forach – na 64bit niby działa, na 32bit – nie. A moje RPi to 1B, więc nie mogę 64bit użyć. Na dokładniejszy debug nie starczyło już czasu, może następnym razem się uda…
W ramach pewnego projektu, o którym może usłyszycie wkrótce, kupiłem za jakieś śmieszne pieniądze rzędu 20 zł router Tenda W311R+. Miał nieco stary firmware, więc postanowiłem zaktualizować. Nie wszystko poszło dobrze i skończyło się tzw. cegłą. Na szczęście znalazłem opis, jak zrobić debrick routera Tenda W311R+.
Sytuacja jest nieco zabawna, więc opiszę jak doszło do sceglenia. Otóż producent routerów Tenda ma niefajną tendencję do paru rzeczy nie ułatwiających znalezienia właściwego oprogramowania. Po pierwsze, produkują routery o bardzo podobnych nazwach. Po drugie, oprogramowanie do zupełnie różnych modeli potrafi mieć tę sam numer wersji. Po trzecie, w ramach jednego modelu routera istnieją różne wersje hardware. Dopiski w informacji o oprogramowaniu w stylu to oprogramowanie wymaga wersji sprzętu 3.0 są normą. No i na koniec wspomniana Tenda W311R+ to sprzęt sprzed dekady, więc nie do końca wszystko jest dostępne, a strony działają czy przekierowują, nazwijmy to, różnie.
W każdym razie podłączyłem się do routera kabelkiem i zmieniłem firmware V5.07.15_en_02 na znaleziony V5.07.47_en_02. Flashowanie przebiegło poprawnie, router się zrestartował. Ku mojemu zdziwieniu, po restarcie okazało się, że mocno zmieniła się szata graficzna. Jeszcze bardziej zdziwiłem się, gdy spostrzegłem, że wersja sprzętu zmieniła się z 1.0 na 3.0. Ups! Niemniej sprzęt działał. Tzn. ethernet działał. WiFi nie bardzo. Szybko poszukałem innego oprogramowania, wgrałem i…
No teraz to dopiero się pomyliłem. Router po restarcie nie wstał. Dioda się zapalała, ale żadnej odpowiedzi. Odłączanie zasilania i reset oczywiście nie pomogły. Cegła jak się patrzy.
Skoro sprzęt jest zepsuty i bardziej zepsuty nie będzie, to należy go oczywiście rozebrać i poszukać złącza JTAG. Niestety, po otwarciu obudowy okazało się, że nie tylko nie ma JTAG, ale nawet niczego co by go przypominało od biedy. Bebechy wyglądają solidnie, ale minimalistycznie.
Filmy YouTube
Zacząłem szukać w internecie czy jest gdzieś opisane, jak zrobić debrick routera Tenda W311R+ i nie wyglądało to dobrze. Opisu nie znalazłem ani jednego. Za to znalazłem dwa interesujące filmy na YouTube, które z tytułu się zgadzały. Obejrzałem pierwszy z nich. Niestety nie był po angielsku. I działy się tam dantejskie sceny. Autor bowiem zwiera śrubokrętem nóżki chipa podczas włączania, co rzekomo powoduje uruchomienie trybu serwisowego chipsetu Broadcom. Dokładniej Broadcom – CFE miniWeb Server. Rozumiecie, nie dedykowana zworka, nie oznaczone miejsce na płytce drukowanej, tylko weź śrubokręt i zewrzyj odpowiednie nóżki chipa. Oczywiście chip nie jest czytelnie opisany.
Znalazłem też drugi film, tym razem z niezbyt zrozumiałym angielskim. Przedstawiał dokładnie tę samą procedurę. Ponieważ – jak wspomniałem – router był zepsuty, więc stwierdziłem, że w najgorszym razie będą jeszcze iskry[1], dymek i nieprzyjemny zapach – mówi się trudno.
Zlokalizowałem chip, upewniłem się, że powinny to być te dwie nóżki i zacząłem nierówną walkę. Ponieważ oba filmy są niezbyt zrozumiałe i niezbyt czytelne. Jakość wideo też pozostawia sporo do życzenia, dodatkowo autorzy uznali za niezbędne zmniejszenie pola widzenia przez zamieszczenie podglądu ekranu komputera. Opiszę więc w formie tekstowej, co trzeba zrobić, żeby wprowadzić router w tryb serwisowy. Nie jestem pewien, czy działa za każdym razem – próbowałem wielokrotnie i w końcu się udało. Postaram się więc jak najdokładniej opisać, co wydaje mi się, że zrobiłem, nim zadziałało. Ani za efekty ani żadne szkody wynikłe z zastosowania poniższego sposobu nie odpowiadam. W moim przypadku debrick routera W311R+ zakończył się powodzeniem.
Instrukcja
odłącz zasilanie od routera
podłącz kabel ethernet do portu LAN położonemu najbliżej gniazda zasilania[2]
ustaw statyczny adres IP 192.168.1.2/24 na komputerze
uruchom na komputerze ping na adres 192.168.1.1[3]
naciśnij i trzymaj przycisk reset
podłącz zasilanie, cały czas trzymając reset
zewrzyj odpowiednie, dolne skrajne wewnętrzne, nóżki chipa (zaznaczone czerwoną kropką i strzałką na screenshocie poniżej) i trzymaj zwarte
zwolnij przycisk reset
po chwili ponownie zewrzyj na chwilę nóżki chipa
jeśli router uruchomił się w trybie serwisowym, adres 192.168.1.1 zacznie odpowiadać na ping
wejdź przeglądarką na http://192.168.1.1, z poziomu WWW, gdzie możesz wgrać prawidłowe oprogramowanie
Wnętrze routera Tenda W311R+ z zaznaczonym miejscem zwarcia Źródło: fot. włąsna
Najśmieszniejsze w tym wszystkim jest to, że jeden z filmów jest sprzed roku. Drugi sprzed dwóch lat. Sam sprzęt jest sprzed dekady i z różnych względów niekoniecznie polecam korzystanie z niego w 2023. Uważni czytelnicy pamiętają być może wpis o routerze Pentagram Cerberus P6361, bo pod taką marką także były sprzedawane produkty Tenda w Polsce.
Póki co router zreanimowany do firmware bez WiFi. Szukam właściwego firmware dla niego…
[1] No dobra, bądźmy poważni. Przy tak niskich napięciach raczej na iskry szans nie ma. [2] Nie wiem czy jest to konieczne, teoretycznie porty powinny być takie same. Niemniej nie zaszkodzi, a na pewno zadziałało mi właśnie w tym porcie. [3] Taki adres będzie miał router w trybie serwisowym