Instalacja OpenWrt na Linksysie EA4500
Ostatnia zmiana: 2015-06-29 07:49
Linksys EA4500 (i jego identyczny odpowiednik - Linksys E4200 v2) są urządzeniami wyposażonymi w dwa interfejsy radiowe, duże ilość pamięci flash i ram oraz (niestety) tylko jedno złącze USB 2.0.
Dane techniczne
- SOC: Marvell Kirkwood Feroceon 88FR131 rev 1 (v5l) 1,2GHz
- Flash: 128 MiB NAND (Hynix)
- Ethernet: 4+1 10/100/1000Mps (osobny interfejs na wan)
- 1x biała dioda LED pod logiem Cisco
- radio 2.4GHz Marvell 88W8366 (3x3)
- radio 5GHz Marvell 88W8063 (3x3)
- sprzętowy wyłącznik zasilania
Obrazy OpenWrt
W chwili pisania tego opisu (czerwiec 2015r) modele te wspierane są obecnie tylko w wydaniu CC oraz trunku OpenWrt (choć nie są budowane domyślnie). Możliwe jest uruchomienie OpenWrt w pamięci ram (bez wpisywania danych do flash). Porty ethernet gigabitowe są w pełni obsługiwane przez swconfig. Dla radia 5GHz dostępne są tylko kanały 36, 40, 44 i 48 (ograniczenie sterownika).
Instalacja
Do instalacji niezbędne jest rozebranie urządzenia i podłączenie konsoli szeregowej.
Uruchomienie w pamięci RAM
Możliwe jest uruchomienie OpenWrt w pamięci urządzenia, bez dotykania flash.
- ustawić na stałe adres IP komputera na 192.168.1.254
- uruchomić serwer TFTP i umieścić w jego katalogu głównym plik
openwrt-kirkwood-ea4500-uImage-initramfs- podłączyć konsolę szeregową
- podłączyć router kablem z portu LAN do komputera
- uruchomić router
- przerwać wczytywanie bootloadera przez naciśnięcie dowolnego przycisku
- wykonać polecenie
tftpboot ${loadaddr} openwrt-kirkwood-ea4500-uImage-initramfs ; bootm ${loadaddr}
Instalacja w pamięci flash
- ustawić na stałe adres IP komputera na 192.168.1.254
- uruchomić serwer TFTP i umieścić w jego katalogu głównym pliki
openwrt-kirkwood-ea4500-uImage oraz
openwrt-kirkwood-ea4500-rootfs.ubi- podłączyć konsolę szeregową
- podłączyć router kablem z portu LAN do komputera
- uruchomić router
- przerwać wczytywanie bootloadera przez naciśnięcie dowolnego przycisku lub Ctrl-C
- wykonać polecenia
tftpboot ${loadaddr} openwrt-kirkwood-ea4500-uImage ; nand erase 0x200000 0x200000 ; nand write ${loadaddr} 0x200000 0x200000
nand erase 0x400000 0x7c00000
tftpboot ${loadaddr} openwrt-kirkwood-ea4500-rootfs.ubi ; nand erase 0x400000 ${filesize} ; nand write ${loadaddr} 0x400000 ${filesize}
- zmodyfikować zmienne środowiskowe uboota
setenv owrt_bootargs_root ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs rw
setenv owrt_mtdparts mtdparts=orion_nand:0x80000@0x0(uboot),0x20000@0x80000(uboot_env),0x200000@0x200000(kernel),-@0x400000(root)
setenv owrt_boot nand read.e \${loadaddr} 0x200000 0x200000 \; setenv bootargs \$(console) \$(owrt_mtdparts) \${owrt_bootargs_root} \; bootm \${loadaddr}
setenv bootcmd run owrt_boot
saveenv
Jeżeli z jakiegoś powodu nie będzie chciał wczytywać poprawnie systemu można od razu ustawić zmienne
nandboot i
altnandboot:
setenv nandboot nand read.e \${loadaddr} 0x200000 0x200000 \; setenv bootargs \$(console) \$(owrt_mtdparts) \${owrt_bootargs_root} \; bootm \${loadaddr}
setenv altnandboot nand read.e \${loadaddr} 0x200000 0x200000 \; setenv bootargs \$(console) \$(owrt_mtdparts) \${owrt_bootargs_root} \; bootm \${loadaddr}
saveenv
Metoda alternatywna:
tftpboot ${loadaddr} openwrt-kirkwood-ea4500-uImage-initramfs; setenv bootargs $(console) root=/dev/ram rw; bootm ${loadaddr}
Po uruchomieniu OpenWrt w pamięci urządzenia logujemy się do niego przez telnet i wykonujemy:
# cd /tmp
# wget ftp://192.168.1.254/openwrt-kirkwood-ea4500-rootfs.ubi
# wget ftp://192.168.1.254/openwrt-kirkwood-ea4500-uImage
# ubiformat /dev/mtd3
# ubiformat /dev/mtd3 -f openwrt-kirkwood-ea4500-rootfs.ubi
# mtd erase kernel
# mtd write openwrt-kirkwood-ea4500-uImage kernel
# reset
Ponownie przerywamy bootloader i wprowadzamy:
setenv owrt_bootargs_root ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs rw
setenv owrt_boot nand read.e \${loadaddr} 0x200000 0x200000 \; setenv bootargs \$(console) \$(owrt_bootargs_root) \; bootm \${loadaddr}
setenv bootcmd run owrt_boot
setenv auto_recovery no
saveenv
Po instalacji w/w oprogramowania na modelu E4200v2 przedstawia się on jako EA4500.
Elementy specyficzne dla urządzenia
Port szeregowy
Złącze J5 na płytce, parametry 115200 8n1 (uwaga: rozstaw otworów to 2mm, nie 2.54mm!)
LED
Dostępna jest jedna biała dioda LED, obsługiwana przez dwa gpio. Oba są eksportowane pod nazwami
ea4500:white:health i
ea4500:white:pulse. Zachowanie LED zależy od odpowiedniego ustawienia tych linii:
- wyłączenie diody LED
# echo 0 > /sys/class/leds/ea4500:white:pulse/brightness
# echo 0 > /sys/class/leds/ea4500:white:health/brightness
- włączenie diody LED na stałe
# echo 0 > /sys/class/leds/ea4500:white:pulse/brightness
# echo 1 > /sys/class/leds/ea4500:white:health/brightness
- powolne pulsowanie diody LED (sterowanie jest to sprzętowo)
# echo 1 > /sys/class/leds/ea4500:white:pulse/brightness
# echo 0 > /sys/class/leds/ea4500:white:health/brightness
- włączenie diody LED na stałe
# echo 1 > /sys/class/leds/ea4500:white:pulse/brightness
# echo 1 > /sys/class/leds/ea4500:white:health/brightness
Przyciski
Dostępne są dwa:
wps i
reset, obsługiwane przez skrypty w
/etc/rc.button.
Flash
Dostępna jest cała przestrzeń 128MB, pomniejszona o miejsce dla uboota oraz kernela. Wykorzystywany jest system ubifs, całość jest zapisywalna.