Witam,
W tym krótkim poradniku przedstawię Wam jak udało mi się przywrócić do życia uszkodzony router EdimaX BR6104KP. Podczas tej „naprawy” wpadły mi do głowy dwa fajne i bardzo proste rozwiązania, które można wykorzystać również w innych projektach. Część z Was może już znać te pomysły, ale chciałbym je przedstawić, bo to szybkie rozwiązanie problemów, które napotkałem po drodze. A że tematem konkursowym w tym miesiącu są szybciochy to postanowiłem je opublikować :)
Wykorzystane elementy:
– router z uszkodzonym oprogramowaniem – inspiracja tego projektu
– Arduino UNO r3 wraz z zestawem startowym – moje pochodzi ze sklepu Nettigo.pl
– goldpiny podwóje – odzysk ze starej płyty głównej komputera. Można zastąpić pojedynczymi ;)
– zworki komputerowe – odzysk ze starego komputera
W trakcie projektu przewinęły się jeszcze:
– przejściówki RS 232 ↔ USB (2 różne sztuki)
– gniazdo RS 232
– kable połączeniowe
– lutownica, cyna itp.
Ich użycie okazało się błędną droga i do wykonania tego projektu te elementy nie są potrzebne, w sumie dzięki dwóm prostym pomysłom opisanym w dalszej części, ale po kolei ;)
Jakiś czas temu wpadł mi w ręce router EdimaX BR 6104 KP, oczywiście uszkodzony – nie wstał po aktualizacji oprogramowania. Miałem go rozebrać na części, ale postanowiłem spróbować go reaniomować.
Pierwszą przeszkodą napotkaną po drodze było to że dostałem sam router, bez zasilacza. Na całe szczęście producent był tak miły że napisał na obudowie urządzenia (w instrukcji pewnie też, ale jej również nie było), że potrzebuję zasilacza 12V z „plusem w środku”. Nie miałem wolnego takiego zasilacza, ale świetnie spasował zasilacz pożyczony z dekodera Cyfrowego Polsatu. Po podłączeniu do prądu router tak jakby się uruchamiał, ale nie udało mi się z nim połączyć podpinając kabel sieciowy. Czyli faktycznie wygląda to na uszkodzone oprogramowanie. Zacząłem, więc szukać w internecie informacji na temat tego routera.
Model BR 6104 KP jest już leciwą konstrukcją, ale nadal bardzo ciekawą. Po pierwsze posiada wyprowadzone dwa porty USB, ponieważ fabrycznie ma wbudowaną funkcjonalność serwera wydruku. Tak sobie szukając informacji na jego temat znalazłem też sporo informacji na temat niekonwencjonalnych rozwiązań oparty właśnie o ten model – serwer NAS (dysk sieciowy), router WiFi (fabrycznie router go nie ma) i wiele innych. Oczywiście oryginalne oprogramowanie producenta nie ma takich możliwości, ale można do niego wgrać oprogramowanie alternatywne ;)
Oczywiście muszę tutaj wspomnieć o tym, że jakiekolwiek ingerencje fizyczne lub w oprogramowanie urządzenia (szczególnie wgrywanie nieoryginalnego oprogramowania) powodują utratę gwarancji producenta i mogą prowadzić do trwałego i nieodwracalnego uszkodzenia urządzenia.
Pamiętaj! Robisz to na własną odpowiedzialność. Autor nie ponosi żadnej odpowiedzialności za ewentualne straty i uszkodzenia spowodowane stosowaniem porad z niniejszego artykułu.
Takim właśnie oprogramowaniem alternatywnym jest OpenWRT. Jest to projekt realizowany przez grupę zapaleńców. Jego zaletą jest to że powstał na bazie linuksa i posiada bardzo wiele rozszerzeń wgrywanych jako moduły/paczki – m. in. właśnie serwer NAS. Jeżeli kogoś zaciekawił temat wystarczy poszukać w necie ;)
Alternatywne oprogramowanie można wgrywać poprzez panel zarządzania routera (w niektórych wypadkach), ale w moim wypadku nie było takich szans – router nie wstawał, a więc nie miałem dostępu do panelu zarządzania.
Drugą metodą jest wgranie oprogramowanie poprzez złącze szeregowe RS 232. Producenci sprzętu bardzo rzadko udostępniają to złącze „wprost” w rozwiązaniach przeznaczonych do domu. Ale na stronie OpenWRT znalazłem prosty poradnik jak „wyciągnać” sobie ten port i wgrać oprogramowanie. Oto link: http://forum.amilda.org/viewtopic.php?id=37 Wiedząc mniej więcej co i jak wziąłem się za wlutowanie goldpinów w odpowiednie miejsce płyty routera.
Mając gotowe złączne w routerze wziąłem się za przygotowanie kabla. Wykorzystałem do tego stare gniazdo RS 232 pochodzące z uszkodzonego kabla. Rozebrałem je i przylutowałem odpowiednie kable, a następnie sprawdziłem miernikiem uniwersalnym czy wszystko wykonałem poprawnie. Nie chciałem na stałe lutować przewodów do routera więc tutaj przyszła pora na pierwszy z ciekawych i uniwersalnych patentów, który chce zaprezentować w tym artykule:
Zworka komputerowa
Jeżeli ktoś nie wie, jest to po prostu element służący do połączenia elektrycznego – zwarcia – dwóch sąsiadujących goldpinów. Oczywiście w tym projekcie nie jest to potrzebne, ale jeżeli połączymy na stałe linie przewodowe z gniazda RS 232 ze zworkami to możemy je w każdej chwili zakładać na goldpiny i zdejmować – w ten sposób mam dołączany kabel RS 232 do mojego routera.
Tutaj drobna uwaga – zworki komputerowe występują tak jakby w dwóch typach – a przynajmniej ja mam na stanie dwa „rodzaje”. Jeden z nich jest zalany plastikiem od góry, a drugi nie – ma dziurki przez które można wprowadzić kable. Ja wykorzystuje ten drugi typ, ponieważ mogę od góry wsunąć kable. Oczywiście jeżeli górę mamy zalaną plastikiem zawsze można wsunąć kable od dołu, ale to rozwiązanie jest gorsze, ponieważ niechcący możemy wywołać jakieś zwarcie na płycie urządzenia i w konsekwencji je uszkodzić, a tego byśmy nie chcieli.
Mamy gniazdo i kabel – super – teraz pora podłączyć to do komputera :D i tutaj kolejna niemiła niespodzianka. Współczesne laptopy nie posiadają przeważnie złącza RS 232 (a przynajmniej mój nie ma…). Na szczęście istnieją przejściówki RS 232 ↔ USB pomyślałem. Nie mając takich cudów w domu pożyczyłem dwie od kumpla. Mając wszystko gotowe zabrałem się za podłączanie routera do komputera poprzez port szeregowy. We wspomnianym wyżej artykule razem z rozpiską PINów złącza JP2 była nawet zamieszczona informacja o parametrach transmisji jakie trzeba ustawić (bound itp.).
UWAGA na temat złączy RS 232:
Komputery stacjonarne i niektóre laptopy posiadają to złącze fabrycznie udostępnione użytkownikom. Zalecam tutaj szczególną ostrożność ! Standard RS 232 określa maksymalne napięcie jako +25V lub -25V co może uszkodzić urządzenia, których port pracuje z napięciem +/- 3,3V. Zalecam sprawdzić jakie napięcie podaje Wasz port i jakiego napięcia oczekuje podłączane urządzenie, tak aby go nie uszkodzić ! Najprawdopodobniej potrzebny będzie konwerter poziomów logicznych zbudowany o układ z popularnej rodziny MAX 32XX.
Próba pierwsza – router nie odezwał się. No cóż spróbujmy zamienić linie Rx i Tx – dzięki temu że wykorzystaliśmy zworki jest to banalnie proste. Gdybym zdecydował się lutować kable też jest to możliwe, ale już trudniejsze. Po zamianie linii moim oczom ukazały się na terminalu piękne … śmieci. Pora sprawdzić drugą przejściówkę. Efekt ten sam. Dla przyzwoitości sprawdziłem inne możliwe prędkości transmisji i nadal nic.
Sprawdziłem jeszcze raz wszystkie połączenia i są ok, a więc winne najprawdopodobniej są same przejściówki – ich jakość i/lub napięcie. Zacząłem mierzyć na nich napięcie – ok 6V. Być może to za dużo dla procesora routera, który pracuje w logice 3,3V i stąd błędy w transmisji. A moim błędem było nie sprawdzenie napięć przed podłączeniem układu, mogłem uszkodzić sobie urządzenie. Zalecam sprawdzanie poziomów napięć przed podłączeniem ;)
Skoro już wiem, że to problemem może być przejściówka to przydałaby się przejściówka na mniejsze napięcie, ale nie miałem skąd takiej wziąć… (Oczywiście można kupić, ale nie chciałem tego robić :P )
Gwóźdź programu – Arduino jako USB ↔ RS 232
Myślałem już że cała moja praca poszła na marne, ale uświadomiłem sobie że przecież Arduino pracuje w logice 3,3V i programuje je z kabla USB. Czy w sumie mam potrzebną przejściówkę w domu tylko trzeba ją jakoś wykorzystać. Oglądając płytkę widzę dwa piny oznaczone jako Tx i Rx. Upewniłem się w internecie i są to wyprowadzenia portu szeregowego, a więc pomysł może się udać.
Za pomocą kabli prototypowych dołączonych do starter kita arduino i zworek podłączyłem router i arduino. Na komputerze podłączyłem się do portu szeregowego, załączyłem router i nic :( Dlaczego !? Otóż dlatego, że podłączyłem ATMegę (procesor arduino) i router do tego samego portu szeregowego. A co by się stało jakbym wyjął procesor z podstawki DIP ? Tak też zrobiłem ponownie połączyłem się komputerem na port szeregowy i oczom mym ukazał się piękny widok – prawidłowe komunikaty startującego routera :D oczywiście pojawiło się mnóstwo błędów oprogramowania, ale to nic bo przecież będę je wgrywał od nowa.
Wgrywanie oprogramowania
Skoro nawiązałem poprawną łączność to zgodnie z instrukcjami ze strony openWRT dostałem się do bootloadera routera i spróbowałem wgrać ściągnięty plik z oprogramowaniem do routera. Po kilku nieudanych próbach zacząłem szukać przyczyny takiego stanu rzeczy i rozwiązanie okazało się banalnie proste. Powinienem był sprawdzić to zanim zacząłem w ogóle wgrywać openWRT… Plik binarny zajmuje 3MB, a ten model routera ma tylko 2MB pamięci FLASH. A więc prosto nie będzie… Postanowiłem odłożyć temat instalacji oprogramowania alternatywnego i zainstalować oryginalne oprogramowanie pobrane ze strony producenta. Tym razem wszystko się udało i router odzyskał sprawność :)
Podsumowanie prostych pomysłów wykorzystanych przy projekcie
Kable prototypowe wpięte w zworki komputerowe umożliwiają podłączanie się do wystających goldpinów dowolnych urządzeń. Owszem, zawsze można kupić/zrobić kable z dedykowanych do tego elementów albo nawet wsuwek elektrycznych. Ale nie zawsze to jest pod ręką ;) )
Arduino UNO z wyjętym procesorem jest świetną przejściówką USB ↔ RS 232 do urządzeń obsługujących logikę 3,3V. Wystarczy odpowiednio połączyć Tx, Rx i GND obu urządzeń.
Dalsze plany związane z tym routerem
Idea złącza RS 232 w routerze domowym bardzo mnie zaintrygowała. Wiedząc, że Arduino też może komunikować się za pomocą tego złącza postanowiłem popracować nad połączeniem obu urządzeń za pomocą portu szeregowego. Dzięki temu będę mógł podłączyć arduino do internetu, a to otwiera morze możliwości :D Jak tylko się za to wezmę to postaram się Wam przybliżyć efekty mojej pracy :)
Wprawdzie w tym podejściu nie udało mi się uruchomić oprogramowania alternatywnego, ale router z linuksem i RS 232 jest zbyt kuszący i tak łatwo się nie poddam :) Oprogramowanie OpenWRT można ściągnąć w postaci kodu źródłowego i samodzielnie skompilować wyrzucając zbędne moduły, a tym samym je odchodzić trochę. Ale to już temat na kolejny artykuł ;)
Na koniec chciałbym dodać, że to mój pierwszy artykuł i zaprosić do komentowania i oceniania :)
U mnie podobny Edimax wisi na ścianie w roli wieszaka na klucze :D https://majsterkowo.pl/internetowe-breloczki-do-kluczy/
Kiedyś przerabiałem problem przejściówek PCMCIA – RS232 czy Express Card-> LPT. Często te tanie przejściówki dalej widoczne są w systemie jako USB i nie działają z wieloma urządzeniami (zwłaszcza przemysłowymi). Ostatnio potrzebowałem mieć LPT w laptopie, przejściówki USB – LPT nie mają prawa działać (często nie działają nawet z drukarkami). Szukałem informacji czym się różni przejściówka Express Card-> LPT jedna od drugiej. Cała różnica to te kilka skrótów – SPP, EPP, ECP
kompatybilne z IEEE 1284
To może (jeżeli chodzi o RS-232) konwertery Tibbo ? Wprawdzie są to konwertery RS-LAN ale na tyle na ile ja z nich korzystałem (centralki telefoniczne) nie miałem z nimi problemów. Działa to na windowsie i linuxie, a ostatnio widziałem że mają również wersję Wi-Fi. Problemem jest jedynie cena (poniżej 200zł za sztukę to raczej nie schodzi choć ja swój ostatni kupowałem jakieś 3-4 lata temu)
Dobrej jakości przejściówki RS232 – USB produkuje elzab, ich niewatpliwą zaletą jest to że oprócz rx i tx posiadają linie cts, rts, cena około 150 PLN ale warto
A Arduino czasem nie pracuje w logice 5V, jeśli kolega ma uno R3 to logika jest 5V.
Pozdrawiam.