Debrick routera Tenda W311R+

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 w celu uruchomienia trybu serwisowego
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

MacOS, iTerm i problemy z pl-znakami

Niezbyt często używam pl-znaków w konsoli łącząc się po SSH, ale jest parę miejsc, gdzie ich potrzebuję. Po dłuższym czasie zauważyłem, że na nowym komputerze mam problem z pl-znakami. Występował tylko przy połączeniu się z tego macOS przy pomocy SSH do Linuksa. Nic krytycznego, bo w zasadzie nie potrzebuję się tam łączyć z macOS, z innych Linuksów działało, ale byłoby miło, gdyby działało wszędzie. W końcu znalazłem chwilę i postanowiłem się zająć sprawą.

Krótko o środowisku: na workstacji macOS Ventura 13.4 z zsh 5.9 oraz iTerm2 3.4.19. Dla pamięci opis sprawdzania ustawień krok po kroku.

ustawienia iTerm

Upewniamy się, że iTerm korzysta z kodowania UTF-8. W tym celu należy wybrać
settings -> profiles -> terminal
Upewniamy się, że character encoding jest ustawione na UTF-8.

zmienne środowiskowe

Sprawdzamy ustawienia zmiennych środowiskowych na macOS. W tym celu należy wpisać
echo $LANG
i sprawdzić wartość zmiennej LANG. Powinna być jakaś z UTF-8, na przykład pl_PL.UTF-8.

Jeśli jest inaczej, można dopisać odpowiednią wartość w pliku .zshrc[1]
export LANG=pl_PL.UTF-8

Jeśli wykonujemy zmianę, należy uruchomić nowy terminal, aby została zastosowana.

kodowanie w powłoce

Sprawdzamy na macOS, jakie kodowanie mamy ustawione w terminalu. Wpisujemy locale i weryfikujemy zawartość zmiennych LC_CTYPE oraz LANG. Powinny zawierać kodowanie UTF-8. Jeśli tak nie jest, można ustawić odpowiednie zmienne w sposób opisany w poprzedniem akapicie.

ustawienia systemu zdalnego

Należy sprawdzić, czy na serwerze zdalnym locale ustawione są na wersję z UTF-8. W tym celu wpisujemy locale. Jeśli tak nie jest, to w Debianie i Ubuntu polecenie dpkg-reconfigure locales umożliwi zarówno wygenerowanie odpowiednich locali, jak i ustawienie domyślnych.

Przy powyższych ustawieniach pl-znaki powinny wyświetlać się poprawnie.

Dla zupełnej transparentności: tym razem nie ma odnośników do stron, których używałem przy rozwiązywaniu problemu. Posiłkowałem się bowiem chatGPT z niewyszukanym promptem macos problem utf-8 iterm how to solve. Całkiem sprawnie sobie poradził.

[1] Jeżeli z jakiegoś powodu korzytamy z bash, nie zsh, to właściwym plikiem będzie .bash_profile

Instalacja drukarki HP DeskJet 920c na Linuksie

Zauważyłem skandaliczne zaniedbanie: nie mam żadnego wpisu o Linuksie i drukarkach na blogu. Jest jeden jedyny ślad w postaci opisu zużycia prądu przez HP DeskJet 854c na eksperymentalnym blogu wattmeter. A przecież drukarki to taki wdzięczny temat. Można pisać tomy o praktykach rynkowych producentów, czyli dymaniu konsumentów, o wolności, o ekologii… Last but not least drukarka miała ważny wkład w powstanie wolnego oprogramowania. Przy okazji, jeśli ktoś nie czytał Free as in Freedom, to polecam, jest dostępne za darmo.

Tym razem jednak będzie nieco mniej wodolejstwa, a więcej techniki. Nowoczesny sprzęt nieco odmówił posłuszeństwa i musiałem wrócić do korzeni, czyli tytułowej drukarki. W dodatku instalując ją na nowym sprzęcie. Instalacja drukarki na Linuksie jest prosta, ale system działa latami bez reinstalacji, więc stwierdziłem, że po prostu nie pamiętam jak to zrobić. Świetny pretekst do zrobienia wpisu.

HP deskjet 920c

Źródło: https://www.recycledgoods.com/

O DeskJet 920c słów parę

HP DeskJet 920c to stara drukarka atramentowa. Ma te same kartridże co 854c, ze zintegrowanymi głowicami, co przeważyło o jej przyjęciu. Trafiła do mnie bowiem jako sprzęt przestarzały moralnie. Ot, kiedyś ktoś w firmie kupił nowy, lepszy sprzęt i oddawał stary. Tymczasem ja drukuję niewiele, a wieki temu nauczyłem się szybko i skutecznie napełniać kolor czarny w tych kartridżach i od tej pory jestem wierny HP. Tym bardziej, że tolerancja na różne tusze uzupełniające też jest spora. Co prawda staram się trzymać w miarę możliwości przeznaczonych do tego modelu lub linii, ale różnie z tym bywało. A drukuje zawsze dobrze, cokolwiek wleję.

Kolor niby napełnia się analogicznie, ale wychodziło mi to gorzej i drukowało zawsze nieidealnie – jakieś przerwy, paski itp. Może mniej używane i głowica zaschła? W każdym razie dwa czy trzy razy podchodziłem do tematu i mimo różnych tricków, które działały dla tuszu czarnego, nigdy nie było dobrze. Ponieważ niespecjalnie potrzebowałem koloru, zniechęciłem się i zaprzestałem dalszych prób.

Podłączenie i instalacja

Instalacja przeprowadzona została na Debianie Bullseye, ale z tego co pamiętam wcześniej wyglądała analogicznie.

Po podłączeniu drukarki lsusb pokazuje:

Bus 003 Device 006: ID 03f0:1504 HP, Inc DeskJet 920c

natomiast dmesg:

[ 165.918646] usb 3-1.4: new full-speed USB device number 6 using ehci-pci
[ 166.079696] usb 3-1.4: New USB device found, idVendor=03f0, idProduct=1504, bcdDevice= 1.00
[ 166.079706] usb 3-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 166.079712] usb 3-1.4: Product: DeskJet 920C
[ 166.079715] usb 3-1.4: Manufacturer: Hewlett-Packard
[ 166.079719] usb 3-1.4: SerialNumber: CN1596C025BI
[ 166.111410] usblp 3-1.4:1.0: usblp1: USB Bidirectional printer dev 6 if 0 alt 0 proto 2 vid 0x03F0 pid 0x1504

Najpierw instalujemy pakiety, a w zasadzie pakiet. CUPS zostanie doinstalowany w ramach spełniania zależności.

apt install hplip

Następnie dodajemy wybranego użytkownika USER do grupy z uprawnieniami administracyjnymi do drukarki.

adduser USER lpadmin

Resztę można wyklikać. I tak jest najłatwiej. Aby dostać się do interfejsu zarządzania CUPS, w przeglądarce wchodzimy na http://localhost:631 Przechodzimy do administration, wybieramy add printer. Uwierzytelniamy się jako użytkownik, któremu wcześniej przyznaliśmy dostęp. I działamy, czyli w zasadzie klikamy continue. Seria zrzutów ekranu poniżej.

Wybieramy lokalną drukarkę:

CUPS wybór drukarki HP DeskJet 920c

Ustawiamy jej nazwę:

CUPS - nadanie nazwy drukarki

Jeśli chcemy, możemy także w tym miejscu ustawić udostępnianie drukarki.
Następnie wybieramy sterownik drukarki:

CUPS - wybór sterownika

Nie wiem, czemu pokazał tyle sterowników. Wybrałem pierwszy z brzegu.
Na koniec ustawiamy domyślne ustawienia drukowania:

CUPS - wybór domyślnych ustawień drukowania

I to tyle, jeśli chodzi o instalację HP DeskJet 920c na Linuksie. Od tej pory możemy korzystać z drukarki.