Zanim przejdziemy do wgrania firmware, należy pobrać odpowiedni dla nas obraz:
| Wersja | Urządzenia | Uwagi |
|---|---|---|
| brcm-2.4 | Linksys Wrt54g, Asus WL500g/p/w, Motorola Wr850 | |
| brcm47xx | Linksys Wrt54g, Asus WL500g/p, Netgear, Motorola Wr850 | działa tryb AP tylko z WPA2 |
| atheros | Fonera, Dlink DIR-300 rev. A1 | |
| x86 | Soerkis, PC, Alix |
Obrazy dla pozostałych platform dostępne na oficjalnej stronie Kamikaze
Platformy obsługiwane przez Kamikaze oraz ich aktualnie wsparcie Platform Status
| Wersja | Urządzenia | Uwagi |
|---|---|---|
| brcm-2.4 | Linksys Wrt54g, Asus Wl500(g)(gp),Motorola Wr850 | |
| brcm47xx-2.6 | Linksys Wrt54g, Asus Wl500(g)(gp), Netgear,Motorola Wr850 | nie działa tryb AP |
| atheros-2.6 | Fonera | |
| x86-2.6 | Soerkis,PC |
Obrazy dla pozostałych platform dostępne na oficjalnej stronie Kamikaze
Platformy obsługiwane przez Kamikaze oraz ich aktualnie wsparcie Platform Status
Przed wgraniem nowego firmware należy w komputerze ustawić na stałe adres ip. Zwykle będzie to 192.168.1.2 z maska 255.255.255.0. Brama i dns mogą zostać puste. Etap ten jest wymagany, ponieważ w trybie flashowania ruter nie udostępnią żadnych adresów IP!
W przypadku routerów ASUSa niemożliwa jest instalacja OpenWrt z oficjalnego firmware. W celu wgrania alternatywnego firmware w tym także OpenWrt WhiteRussian/Kamikaze należy przejść do trybu diagnostycznego (Diag Mode) w następujący sposób:
W zależności jakiego systemu operacyjnego używamy, sposób wgrywania firmware jest nieco inny. Użytkownicy Windowsa mogą użyć dostarczonego wraz z pudełkiem oprogramowanie Restoration Tool, oprogramowanie te również można pobrać z oficjalnej strony ASUSa. Użytkownicy linuksa mogą użyć klientaTFTP i w ten sposób zaprogramować router.
Po przesłaniu firmware to routera następuje programowanie, co trwa w zależności od objętości obrazu od 5 do 10 minut. Pod żadnym pozorem nie wolno nam odłączać routera od zasilanie oraz nie wciskać przycisku Reset z tyłu AP.
UWAGA: Asus WL500g Premium nie posiada możliwość autorestartu po wgranym firmware.
W tym momencie są dwie możliwości:
Po ok 3 minutach dioda Power zapala się. W tym momencie próbujemy połączyć się telnetem (patrz niżej). Jeśli nie da się połączyć telnetem, przechodzimy do wariantu 2.
Gdy minie 5-6 minut odłączamy router od zasilania i podłączamy ponownie. Jeżeli dioda Power nie zaczyna migać to wszystko jest w porządku. Po zapaleniu się diody Air możemy zalogować się do routera po telnecie w następujący sposób:
$ telnet 192.168.1.1
W konsoli zostaniemy przywitani logiem OpenWrt
BusyBox v1.11.2 (2008-10-08 09:00:24 UTC) built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
KAMIKAZE (8.09, r13118) ----------------------------
* 10 oz Vodka Shake well with ice and strain
* 10 oz Triple sec mixture into 10 shot glasses.
* 10 oz lime juice Salute!
---------------------------------------------------
root@OpenWrt:~#
Następnym krokiem jest ustalenie hasła dla root'a
passwd
Wpisujemy hasło np. admin dwukrotnie, aż pokaże się komunikat Password changed.
Resetujemy nasz router poleceniem
reboot
Po ponownym uruchomieniu logujemy sie znowu na router, ale teraz poprzez konsole bezpieczniejszą - SSH
$ ssh root@192.168.1.1
Logujemy się ponownie na router i wprowadzamy wartości nvram w celu zwiększenia pamięci RAM z 16MB do 32 MB oraz poprawnej konfiguracji interfejsów routera dla WL-500g Premium:
nvram set sdram_init=0x0009 nvram set sdram_ncdl=0 nvram set vlan1ports="0 5" nvram set wan_ifname=vlan1 nvram set lan_ifnames="vlan0 eth2" nvram set lan_ifname=br0 nvram commit && reboot
lub tylko zwiększenia pamięci dla WL-500g Deluxe(źródło: forum wl500g.info)
nvram set sdram_init=0x2008 nvram set sdram_ncdl=0x0000 nvram commit reboot
UWAGA: NIE WOLNO POMYLIĆ PARAMETRÓW, BO GROZI TO USZKODZENIEM SPRZĘTU!
Jeżeli posiadamy wgrany firmware oficjalny, zaleca się wgrać np. Tomato lub HyperWrt w celu włączenia boot_wait interfejs www danego firmware. Potem możemy spokojnie wgrywać poprzez specjalnie przeznaczoną stronę w firmware. Alternatywnym wyjściem jest wgranie za pomocą TFTP
Przed wgraniem firmware należy aktywować boot_wait
Od wersji 5898 Kamikaze jest wsparcie dla FON LaFoner'y.
Do wgrania firmware musimy zainstalować serwer TFTP na swoim komputerze. Przykład jak to zrobić pod Ubuntu. Mimo ze autor opisu nie wpomina o restarcie PC, trzeba to uczynić, aby serwer działał prawidłowo. Pod Windowsem możemy użyć programu TFTP32
Wgranie nowego firmware do LaFonery wymaga wykonania portu RS232
Podłączamy się przez port szeregowy i włączamy router do zasilania. Naciskamy Ctrl-C, aby przerwać botowanie w ten sposób wejdziemy w bootloader i pojawi sie:
RedBoot>
Konfigurujemy interfejs
RedBoot> ip_address -l 192.168.1.20/24 -h 192.168.1.2
gdzie 192.168.1.20 to IP przydzielony dla Fonery, a 192.168.1.2 to serwer TFTP
Kasujemy stary firmware (UWAGA: Należy zastosować to koniecznie w przypadku przechodzenia z DD-Wrt na Kamikaze)
RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y *** Initialize FLASH Image System ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
Wgrywamy rootfs poprzez TFTP
RedBoot> load -r -v -b 0x80041000 openwrt-atheros-root.squashfs Using default protocol (TFTP) | Raw file loaded 0x80041000-0x80200fff, assumed entry at 0x80041000
Flaszujemy(potrwa to ok 10minut)
RedBoot> fis create -b 0x80041000 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs An image named 'rootfs' exists - continue (y/n)? y ... Erase from 0xa8030000-0xa8730000: ................................................................................................................ ... Program from 0x80041000-0x80741000 at 0xa8030000: .............................................................................................................. ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
Wgrywamy obraz vmlinux poprzez TFTP
RedBoot> load -r -b 0x80041000 openwrt-atheros-vmlinux.lzma Using default protocol (TFTP) Raw file loaded 0x80041000-0x800f0fff, assumed entry at 0x80041000
Flaszujemy
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7 An image named 'vmlinux.bin.l7' exists - continue (y/n)? y ... Erase from 0xa8730000-0xa87e0000: ........... ... Program from 0x80041000-0x800f1000 at 0xa8730000: ........... ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
Restartujemy router
RedBoot>reset
Pobieramy vmlinux po tftp
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded 0x80041000-0x800f0fff, assumed entry at 0x80041000
Flaszujemy vmlinux
RedBoot> fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7 An image named 'vmlinux.bin.l7' exists - continue (y/n)? y ... Erase from 0xa8730000-0xa87e0000: ........... ... Program from 0x80041000-0x800f1000 at 0xa8730000: ........... ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
Sprawdzamy wolną pamięć
RedBoot> fis free
0xA80F0000 .. 0xA87E0000
Na desktopie z linuxem wyliczamy rozmiar wolnej pamięci, polega to na tym ze odejmujemy wiesza wartość od mniejszej. Zakres wolnej pamięci uzyskujemy w poprzednik kroku. Pamiętaj: u każdego może być inna wartość, wiec nie kopiuj bezmyślnie!!
$ bc obase=16 ibase=16 A87E0000 - A80F0000 6F0000
Pobieramy rootfs po tftp
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-root.squashfs
Using default protocol (TFTP)
|
Raw file loaded 0x80041000-0x80200fff, assumed entry at 0x80041000
Flaszujemy rootfs. Zastąp zmienną 0xLENGTH wartością uzyskaną w czasie odejmowania
RedBoot> fis create -l 0xLENGTH rootfs An image named 'rootfs' exists - continue (y/n)? y ... Erase from 0xa8030000-0xa8730000: ................................................................................................................ ... Program from 0x80041000-0x80741000 at 0xa8030000: .............................................................................................................. ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
Resetujemy
RedBoot> reset
Mając odblokowany RedBoot możemy użyć narzędzia ap51-flash-fonera dostępnego pod adresem http://download.berlin.freifunk.net/fonera/. Wystarczy podać interfejs sieciowy, plik z rootfs oraz kernelem a następnie włączyć zasilane w ruterze. Całość procesu flashowania zostanie wykonana automatycznie.
Dalej postępujemy zgodnie z instrukcja konfiguracji Kamikaze
cd /tmp wget <nowe openwrt-atheros-root.squashfs> wget <nowe openwrt-atheros-vmlinux.lzma> mtd write openwrt-atheros-vmlinux.lzma vmlinux.bin.l7 mtd write openwrt-atheros-root.squashfs rootfs reboot
Źródło dd-wrt wiki
Jak wiadomo oficjalny FW Fona łączy sie co jakiś czas z centrala w celu sprawdzenia aktualnej wersji firmware oraz chilispot. Skrypt znajdujący sie poniżej bazuje na FON Heartbeat script. Skrypt został zmieniony przez ArtQa i działa poprawnie na Kamikaze. Instalacja jest prosta i wymaga oprócz dostępu do Internetu także włączonego crona.
vi /etc/rc.d/S90thinclient
#!/bin/sh mkdir /tmp/thin mkdir /tmp/.ssh cd /tmp/thin wget http://artekw.cerbero.pl/fonera/fonkey wget http://artekw.cerbero.pl/fonera/thinclient.sh wget http://artekw.cerbero.pl/fonera/known_hosts mv /tmp/thin/known_hosts /tmp/.ssh/known_hosts chmod a+x /tmp/thin/thinclient.sh /tmp/thin/thinclient.sh start 2>&1 | logger
chmod +x /etc/rc.d/S90thinclient
Restartujemy router.
Dokumentacja bootloadera RedBoot
Na rynku dostępne są 2 wersje tego routera. Pierwsza wersja wykorzystywała chipset Atheros 2317. Natomiast obecnie dostępna w sklepach rewizja wykorzystuje już chipset Ralinka RT3050. Opis ten dotyczy wyłącznie! wersji 1 bazującej na chipsecie Atheros. Aby zidentyfikować wersje posiadanego routera należy zaglądnąć na spód urządzenia i na naklejce znaleźć litery rev: . Jeżeli mamy rewizje A1 możemy przystąpić do niżej opisanej procedury wgrywania OpenWrt.
Dodatkowym założeniem było maksymalne uproszczenie procedury. Ponieważ wersja stabilna OpenWrt wciąż nie obsługuje switcha montowanego w DIR-300 więc skorzystamy z wersji rozwojowej wyposażonej w bardzo przyjemny interfejs użytkownika Gargoyle.
Wyłącz zaporę sieciową w komputerze.
Pliki do pobrania przed instalacja :
gargoyle_1.0.14-atheros-root.squashfs
gargoyle_1.0.14-atheros-vmlinux.lzma
Zaznaczam, że na chwilę obecną (11.2009) wersja rozwojowa 1.1 nie działa w pełni na DIR-300 od razu po instalacji.
* ap61.ram (http://www.dd-wrt.com/routerdb/de/download/D-Link/DIR-300/A1/ap61.ram/2049)
* ap61.rom (http://www.dd-wrt.com/routerdb/de/download/D-Link/DIR-300/A1/ap61.rom/2050)
* putty.exe (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
Rozpakowujemy TFTP server do katalogu i kopiujemy do niego resztę plików, które wymienione są na górze. Uruchamiamy Putty i konfigurujemy nowe połączenie ip: 192.168.20.81, telnet i port 9000. Zmieniamy IP komputera na 192.168.20.80, maska 255.255.255.0. Podłączamy kabel LAN pomiędzy komputerem a wejściem WAN/INTERNET w routerze. Odłączamy kabel zasilający router i powrotem go podłączamy. Restartujemy router trzymając przycisk RESTART przez około 20 sekund i następnie próbujemy się podłączyć za pomocą putty.
Gdy pokażę nam się odzew routera : DIR-300> albo RedBOOT> to znaczy, że się podłączyliśmy. Jeśli nam się nie udało, powtarzamy to dopóki nie pojawi się nam podany wyżej odzew.
Odpalamy tftp Server i w putty’m wpisujemy:
RedBOOT> load ap61.ram
Gdy obraz się załaduje (potwierdzenie ściągania przez tftpd32), wpisujemy:
RedBOOT> go
Zmieniamy IP komputera na 192.168.1.2, maska 255.255.255.0. Podłączamy kabel LAN pomiędzy komputerem a wejściem LAN w routerze. Uruchamiamy Putty i konfigurujemy nowe połączenie ip: 192.168.1.1, telnet i port 9000. Probójemy się połączyć.
Jeżeli się uda to pojawi nam się odzew DD-WRT>.
DD-WRT> ip_address -h 192.168.1.2 DD-WRT> fis init
About to initialize [format] FLASH image system - continue (y/n)? **y** *** Initialize FLASH Image System ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000:
DD-WRT> load -r -b %{FREEMEMLO} ap61.rom
DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot
DD-WRT> reset
Router zostanie uruchomiony ponownie i bedzie ponownie dostępny po ok minucie. Uruchamiamy Putty i konfigurujemy nowe połączenie ip: 192.168.1.1, telnet i port 9000. Probójemy się połączyć. Po udanej podmianie BootLoader'a prztępujemy w końcu do zmiany oprogramowania:
DD-WRT> ip_address -h 192.168.1.2
DD-WRT> fis init
DD-WRT> load -r -b %{FREEMEMLO} gargoyle_1.0.14-atheros-vmlinux.lzma
DD-WRT> fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7
DD-WRT> load -r -b %{FREEMEMLO} gargoyle_1.0.14-atheros-root.squashfs
DD-WRT> fis create rootfs
I na koncu ustawiamy prawidłowo BootLoader
DD-WRT> fconfig boot_script true DD-WRT> fconfig boot_script_timeout 5 DD-WRT> fconfig
Nie zmieniamy parametrów - wpisujemy jedynie skrypt startowy dla naszego nowego firmware'u:
fis load -l linux exec
Zapisujemy dokonane zmiany i resetujemy urządzenie
DD-WRT> reset
Po restarcie router bedzie dostępny na stronie http://192.168.1.1
Dyskusja