OpenWRT na routerze Netgear WNDR3700v2

W przeciągu minionego tygodnia udało mi się zbudować działające OpenWRT w celu instalacji na routerze Netgear WNDR3700v2. Router działał kilka tygodni na oryginalnym firmware, jednak nie spełniało ono moich oczekiwań – może z powodu, że przez jakiś czas miałem w sieci domowej router Cisco i oczekiwałem czegoś więcej…Router WNDR3700v2 stanowi potężną maszynę do zastosowań w domowej sieci. Zbudowany jest na procesorze Atheros AR7161 rev 2 pracującym przy częstotliwości zegara 680 MHz. Wersja sprzętowa v2 w porównywaniu do v1 posiada rozszerzoną wielkość pamięci Flash z 8M do 16M przy niezmienionej ilości pamięci RAM czyli 64M. W wersji 2 zmieniono także lokalizację anten, aby poprawić działanie WiFi dla pasma 5GHz. Router posiada 4 porty Ethernet LAN działające z prędkością 1Gbit oraz port WAN. Dopełnieniem całości jest port USB 2.0 – niestety tylko jeden. Router pozwala na działanie w 2 częstotliwościach WiFi: 2,4GHz (standard B,G oraz N) oraz 5GHz (standard A oraz N)

UWAGA: Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użycia tego opisu, programów zawartych na tej stronie oraz za wykorzystanie zawartych tu informacji. Niniejszy opis, jak i wszystkie materiały udostępnione zostały tylko w celach edukacyjnych.

UWAGA: Instalacja alternatywnego oprogramowania na routerze powoduje, że łamiecie zasady gwarancji i działania z tym związane powodują utratę gwarancji producenta na dane urządzenie.

UWAGA: Nieprawidłowe wykonanie czynności opisanych w poniższym tekście może być powodem problemów lub/i niemożliwością funkcjonowania urządzenia w sposób właściwy. Autor nie bierze odpowiedzialności za niewiedzę i brak umiejętności użytkownika w zakresie objętym lub dotyczącym przedstawionej publikacji.

UWAGA: Opis dotyczy wydania: r26785 źródeł OpenWRT i routera Netgear WNDR3700v2. NIE DOTYCZY routera WNDR3700v1, lub/i innych modeli, choć pewne działania są wspólne dla wszystkich platform.

Publikacja nie stanowi pełnego kompendium dotyczącego poruszanego zagadnienia. Wymagana jest dodatkowa wiedza i doświadczenie, które nie zostały zawarte w treści tego dokumentu. Autor nie udziela oficjalnego wsparcia w zakresie czynności związanych z opisywanym zagadnieniem.

1. Przygotowanie środowiska

Możliwości jest wiele, począwszy od komputera z zainstalowaną dystrybucją Linuksa, po wirtualną instancję działającą w systemie hosta (np. Windows XP). Dla mnie takim środowiskiem jest dystrybucja Gentoo działająca jako jedyny system operacyjny na maszynie. W przypadku Gentoo do spełnienia wszystkich warunków niezbędnych do budowy było zainstalowanie pakietu „unzip” o ile ktoś go już wcześniej nie posiadał, więc polecenie emerge -av unzip załatwia sprawę.
Oczywiście nic nie stoi na przeszkodzie użytkownikom systemów z rodziny MS, aby także skompilować sobie OpenWRT przy pomocy własnego komputera bez skomplikowanych manewrów związanych z instalacją drugiego systemu na ich własnym komputerze co w przypadku braku doświadczenia może spowodować niemałe problemy. W takim przypadku potrzebne będzie dodatkowe narzędzie w postaci środowiska pozwalającego uruchomić na maszynie hosta (np. Windows) system gościa (np. dystrybucja Debian, Fedora,…) bez zagrożenia dla macierzystego systemu (w przypadku jakichkolwiek komplikacji wynikłych z niewiedzy użytkownika.
Do wyboru są np.: VirtualBox, VmWare Server, …
Wybór i instalacja należy do użytkownika. Wybór dystrybucji także, aczkolwiek poleca się wybranie Debiana. Pobieramy obraz ISO, uruchamiamy z niego maszynę wirtualną i po kilku minutach mamy działające distro na maszynie wirtualnej. Jak, co i kiedy to już kwesta użytkownika – ze względu na dużą ilość możliwych scenariuszy przedstawię wyłącznie opcję dostosowania środowiska dla zainstalowanego już Debiana w wersji minimalnej. Sama natura instalacji to rozległy temat, którym nie ma sensu zajmować się w tej chwili, a opisów instalacji samego Debiana także w maszynie wirtualnej jest wiele. Napiszę tylko, że wskazane jest przydzielenie co najmniej 800M pamięci RAM i utworzenie dysku wirtualnego o minimalnej wielkości 25G.
Posiadając zainstalowaną minimalną wersję Debiana 32 bit (x86)  musimy zainstalować brakujące pakiety. Logując się jako root lub podwyższając prawa użytkownika poleceniem „su” wydajemy polecenia:

Pierwsze polecenie zaktualizuje bazę apt-get najnowszymi wersjami pakietów, drugie polecenie przeprowadzi instalację niezbędnych w procesie budowy OpenWRT pakietów w systemie Debian

Po poprawnej instalacji wracamy na konto użytkownika, ponieważ OpenWRT nie wspiera i nie zaleca budowania z poziomu superusera.

2. Źródła – pobieranie

Aby rozpocząć pracę należy pobrać aktualne drzewo OpenWRT z serwera. Opis dotyczy gałęzi trunk, czyli rozwojowej, ze względu, iż w Backfire 10.3 na czas pisania tego tekstu nie ma wsparcia dla v2 routera WNDR3700.
Dla celów kompilacji polecam w katalogu użytkownika utworzyć katalog np. openwrt, na bazie którego będą wykonywane wszystkie operacje. Aby pobrać źródła do katalogu openwrt należy zastosować następujące polecenia:

Po przetworzeniu poleceń i pobraniu źródeł w katalogu pojawi się podkatalog „trunk”, w którym znajdują się pobrane źródła. Przechodzimy do tego podkatalogu poleceniem:

Pierwszą rzeczą, którą należy zrobić to konfiguracja źródeł pakietów dodatkowych ( o ile takich zamierzamy używać ). Dla przykładu LuCi, czyli graficzny konfigurator OpenWRT wymaga pobrania dodatkowych pakietów. Aby zmodyfikować konfigurację przy użyciu edytora (poniżej dla vi, ale oczywiście można użyć nano, mcedir, …) wykonujemy polecenia:

Edytujemy plik, komentując zbędne źródła, a odkomentowując potrzebne. Dla przykładu poniższa konfiguracja pozwala na instalację dodatkowych pakietów „packages” oraz LuCi „luci”. Pozostałe repozytoria nie będą używanie.

Po zapisaniu zmodyfikowanego pliku można już wykonać synchronizację drzewa feeds by móc zainstalować dodatkowe pakiety. Służy do tego skrypt będący częścią OpenWRT. Wydajemy polecenia:

Wykonanie tych poleceń spowoduje pobranie źródeł oraz instalację wszystkich pakietów, które przygotowaliśmy w pliku feeds.conf.

3. Weryfikacja zależności

Pobrane wcześniej źródła OpenWRT i repozytoria stanowią podstawę do dalszej pracy. Aby przejść do etapu konfiguracji należy sprawdzić zależności systemowe, a także zbudować zależności pomiędzy samymi pakietami. Do wykonania tych czynności należy wykonać polecenie:
make defconfig
Polecenie to w pierwszej kolejności sprawdzi zależności systemowe, a następnie zależności pomiędzy pakietami, tworząc wzorcowy plik .config.
Jeśli brakuje jakiegoś pakietu systemowego, będzie można zobaczyć wynik w postaci:

Oznacza to, że brakuje w systemie pakietu „unzip”. Oczywiście sytuacja nie powinna mieć miejsca, jeżeli wcześniej zainstalowaliśmy niezbędne pakiety. W przypadku błędu dot. punktu „non-root” zapomniałeś wylogować się z konta superusera „root”

Pozytywne zakończenie polecenia (bez błędów) daje nam możliwość stworzenia konfiguracji specyficznej dla naszego routera.

4. Aktualizacja źródeł

W przyszłości, chcąc zaktualizować wszystkie źródła do wersji aktualnej należy wykonać polecenia:

5. Konfiguracja źródeł

Aby przejść do etapu konfiguracji, należy wykonać poprawnie wcześniejsze punkty. Wszystkie polecenia powinny wykonać się bez błędów.
Konfigurację przeprowadzamy przy pomocy interface dostarczonego przez deweloperów projektu OpenWRT, które uruchamiamy poleceniem:

Pojawi się nakładka pozwalająca przeprowadzić właściwą konfigurację. Dla prawidłowego działania  WNDR3700v2 wymaga następującej konfiguracji:

Target System: Atheros AR71xx/AR7240/AR913x
Target Profile: NETGEAR WNDR3700
Target Images: squashfs – zalecany typ obrazu, inne można wyłączyć
Network -› CRDA – wymagane wkompilowanie [*]
Kernel Modules -› Other Modules › kmod-leds-wndr3700-usb – wymagane wkompilowanie [*]
Kernel Modules  -› Wireless Drivers -› kmod-ath -› Force Atheros drivers to respect the user’s regdomain settings

Pozostałe opcje jako domyślne. Osobiście wyłączyłem jeszcze zbędne
Network › ppp

Dla osób, które nie potrafią lub nie lubią konfiguracji w CLI, wskazane jest użycie LuCi do konfiguracji routera (dodatkowo może wymagać uhttp, w zależności od konfiguracji). Celowo nie piszę o extroot i innych, gdyż w początkowej fazie zabawy z OpenWRT stanowi to o dodatkowych utrudnieniach, a osoby, które posiadają już doświadczenie w tym systemie poradzą sobie same.
Dla doszukujących się różnicy pomiędzy kompilacją jako modułu [M] lub wkompilowaniem do obrazu [*]:
[*] – Pakiet zostanie skompilowany i zanstalowany w obrazie wynikowym. Pakiet skompilowany w tej opcji zajmie mniej miejsca w routerze, niż zaistalowany później w wyniku kompilacji jako [M]
[M] – pakiet zostanie skompilowany, ale nie będzie zainstalowany. Instalację takiego pakietu przeprowadza się na uruchomionym na routerze OpenWRT

Wychodząc z konfiguracji oczywiście nie zapomnijmy zapisać wcześniej zmienionych ustawień, o co zapyta się konfigurator w momencie wychodzenia z programu.

Powyższa minimalna konfiguracja pozwoli na uruchomienie kompilacji właściwej dla routera WNDR3700v2 i uzyskanie bazowej konfiguracji dla naszego urządzenia.

6. Kompilacja źródeł

Przed podjęciem właściwej kompilacji polecam pobranie wszystkich niezbędnych źródeł do lokalnego katalogu. Sprawę pobrania właściwych źródeł załatwia polecenie:

powyższe zabezpiecza nas przed wysypaniem kompilacji z powodu braku możliwości pobrania jakiegokolwiek wymaganego pakietu np. z powodu braku łączności z internetem.
Właściwą kompilację uruchamiamy poleceniem:

Parametr -j pozwala określić liczbę konkurencyjnych wątków kompilacji dla maszyn z większą nież 1 ilością pocesorów/rdzeni. Przyjmuję się zasadę, że wartość powinna wynosić (ilość rdzeni *2) +1

Spokojnie możemy udać się na obiad lub kolację. Proces kompilacji potrwa w zależności od posiadanej maszyny od kilkudziesięciu minut do nawet kilku godzin.

Zakończona poprawnie kompilacja pozwoli nam cieszyć się obrazami dla naszego sprzętu. Obrazy instalacyjne znajdują się w openwrt/trunk/bin/ar71xx.

Dla aktualnej wersji trunk tworzone są osobne binarki dla WNDR3700v1 i WNDR3700v2.

UWAGA: Przypomniam, że takst dotyczy WNDR3700v2 a procedura i konfiguracja nigdy nie była testowana dla WNDR3700v1.

Insteresują nas pliki:
openwrt-ar71xx-generic-wndr3700v2-squashfs-factory.img
openwrt-ar71xx-generic-wndr3700v2-squashfs-sysupgrade.bin

Pierwszego pliku używamy do pierwszej instalacji na routerze, drugi plik służy do aktualizacji (przy pomocy web-gui, lub polecenia sysupgrade ) zainstalowanego już wcześniej OpenWRT

7. Instalacja na routerze

UWAGA: Użytkowniku – zastanów się 2 razy co robisz… Polecam lekturę tekstu od samego początku i zastanowienie się, czy jesteś świadom swoich zamiarów. W szczególności skup się na początkowych ostrzeżeniach.

Instalacja OpenWRT na routerze Netgear WNDR3700v2 z oryginalnym firmware w wersji 1.0.0.8 nie wymaga demontażu routera lub/i posiadania konwertera RS232. Wysoce wskazane jest wykonywanie wszystkich czynności dotyczących zmiany oprogramowania przy pomocy połączenia sieciowego realizowanego kablem ethernet, a nie wireless. Proces wgrywania polega na przeprowadzeniu aktualizacji oryginalnego oprogramowania przy pomocy obrazu uzyskanego w procesie kompilacji źródeł OpenWRT. Do przeprowadzenia tej aktualizacji wymagane jest zaktualizowanie routera obrazem openwrt-ar71xx-generic-wndr3700v2-squashfs-factory.img. Nie należy restartować urządzenia samodzielnie. Częścią procedury aktualizacji jest reset urządzenia, więc cierpliwie oczekujemy na dostępność usługi LAN. Jeżeli nie były wykonywane modyfikacje inne niż zawarte w treści dokumentu, po kilku minutach router powinien przydzielić nam adres z puli 192.168.1.1. Pierwsze logowanie do routera należy przeprowadzić przy pomocy konsoli i programu telnet wykonując polecenie:

Po wyświetleniu ekranu powitalnego należy zmienić hasło przy pomocy polecenia:

Automatycznie po zmianie hasła zostaje zablokowana usługa telnet a w jej miejsce uruchomiony zostaje serwer ssh, więc kolejne próby dostępu do cli routera należy przeprowadzać z poziomu klienta ssh np. putty.
Cała dokumentacja dot. przygotowania, konfiguracji systemu dostępna jest na stronie projektu OpenWRT, a także na polskich portalach dot. zagadnień związanych z OpenWRT.

8. Skrypt obsługujący przycisk WiFi

Mając już działający pod kontrolą OpenWRT router WNDR3700v2 nie trudno zauważyć brak funkcjonujących przycisków dostępnych na panelu routera. Aby dla przykładu przywrócić do życia przycisk pozwalający na włączanie/wyłączanie interface WiFi w naszym routerze należy przeprowadzić z poziomu CLI (ssh) routera małą modyfikację.

Aby poniższa receptura zadziałała, konieczne jest posiadanie wkompilowanej obsługi przycisków. Właściwe opcje w konfiguracji OpwnWRT zawierają w nazwie „button-hotplug” oraz „gpio-buttions” i najlepiej wkompilować je w obraz „[*]”.

Pierwszą czynnością będzie zalogowanie się na router z poświadczeniami użytkownika „root„. Następnie z lini komend dostajemy wykonujemy polecenia:

Poleceniem utworzymy nowy katalog w którym następnie tworzymy poleceniem

W skrypcie wpisujemy następującą procedurkę:

Zamykamy edytor zapisując wprowadzone zmiany, a następnie poleceniem:

dodajemy atrybut wykonywalności (execute)

Teraz przycisk powinien działać.

UPDATE: 2012.05.01: Aktualnie funkcjonalność można uzyskać stosując pakiet „wifitoggle”

9. Podsumowanie

Instalacja OpenWRT w miejsce oryginalnego firmware daje nam możliwość uruchomienia usług i mechanizmów niedostępnych przy stosowaniu oprogramowania producenta. Można wręcz pokusić się o stwierdzenie, że zyskujemy nowe urządzenie przy kosztach zerowych (nie wliczając w to własnej pracy). OpenWRT jako dystrybucja do systemów tzw. „wbudowanych” sprawdza się doskonale w roli m.in. routera co doceniło już wiele osób. Bez problemu zyskujemy zaawansowane funkcje, które oferowane są w sprzęcie „markowym”, ale nie wymaga to ponoszenia dużych kosztów związanych z zakupem sprzętu i licencji, gdyż OpenWRT dostępny jest na licencji GPL.
Jako, że projekt jest ciągle aktywnie rozwijany kwestią czasu jest implementacja nowych rozwiązań. Sam aktualnie posiadam kilka urządzeń z zainstalowanym OpenWRT:
router
radio internetowe
trwają prace mające na celu rozeznanie możliwości zastosowania OpenWRT w systemie automatyki domowej
poszukuję możliwości zastosowania platformy PandaBoard w celu implementacji w domowym centrum multimedialnym

Mam nadzieję, że przedstawiony materiał okaże się chociaż w części pomocny.

4 przemyślenia nt. „OpenWRT na routerze Netgear WNDR3700v2

  1. Podane są błędne informacje co do anten w wersji V2 w stosunku do v1.
    V2 zmieniony układ anten 5ghz (zamiast na płycie głównej są przyklejone do obudowy). Ułatwia to znacznie zamontowanie anten zewnętrznych dla 5ghz. Natomiast dla 2,4 nadal czeka nas lutowanie… niestety

    1. Stabilność: OK – potwierdzony wysokimi uptime, szybkość: OK, funkcjonalność dużo lepsza niż w oryginalnym firmware. Jedna różnica, która może być czasami przeszkodą – oryginalne firmware jest easy, oczywiście do OpenWRT jest też GUI i można większość „wyklikać”, ale pełne możliwości uzyskujemy z CLI, które bazuje na GNU Linux. Pakietów – programów jest bardzo dużo. Możesz np zrobić serwer syslog, serwer proxy, ftp, pełny firewall, …. radio internetowe. Funkcji raczej nie zabraknie – można zrobić z tego urządzenie za które na rynku trzeba zapłacić sporo kasy. Do tego wsparcie dla nowych technologii – będzie szybciej niż w oryginalnym firmware. Osobiście wolę OpenWRT.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *