For English version please visit OpenWRT Wiki http://wiki.openwrt.org/toh/iomega/iconnect
 
Ten opis prezentuje stan na Luty 2013.
Pliki z obrazami zostały pobrane z Trunka AA http://downloads.openwrt.org/snapshots/trunk/kirkwood/
 

Specyfikacja iConnecta

Part Name Description Product Page Documentation
CPU Marvell 88F6281 Feroceon 88FR131 revision 1 (ARMv5TE) Link Product Brief, Hardware Spec, Functional Spec
RAM 2x Hynix H5PS1G83EFR 128 MB Link Datasheet
Flash Hynix HY27UF084G2B 512 MB Link Datasheet
USB Hub Alcor AU6256 4x USB 2.0 Link  
LAN Marvell Alaska 88E1116R-NNC1 1x Gigabit RJ45 Link Product Brief, Technical Product Brief
WiFi SparkLAN WPER-116GN b/g/n, 150Mbps, Mini PCIE, Ralink RT3090, 1T1R Link Datasheet Drivers
 

Organizacja pamięci Flash.

OpenWrt FlashLayout
mtd# mtd0 mtd0 mtd1 mtd2 mtd3
Start 0x00000 0x080000 0x100000 0x0400000 0x02400000
End 0x80000 0x100000 0x400000 0x2400000 0x20000000
Size 0x80000 0x20000 0x300000 0x2000000 0x17600000
Size MiB 800KB 200KB 4 32 219
Name U-Boot U-Boot env uImage (kernel) rootfs data
File system none none none JFFS2 JFFS2

1. Podłączenie kabla szeregowego

Łączymy się przez kabel szeregowy do konsoli sprzętowej.

Piny na płytce:

1 - VCC (w białym kwadracie)
2 - TX (tu podłącz RX z kabla)
3 - GND
4 - RX (tu podłącz TX z kabla)

Uruchamiamy połączenie z konsolą np przez PuTTY

2. Podłączenie LANu

Podłącz kablem LAN płytę iConnecta z komputerem.

Ustaw adres karty sieciowej na 192.168.1.5

W Windows Start -> Panel Sterujący -> Centrum sieci i udostępniania, następnie kliknij na "Połączenie lokalne" -> Właściwości -> "Protokół internetowy w wersji 4 (TCP/IPv4)" -> "Użyj następującego adresu IP".
Ustaw Adres IP na 192.168.1.5 i maskę podsieci na 255.255.255.0 , zatwierdź zmiany przez OK

3. Konfiguracja serwera tftp

Dla Windows pobierz program tftpd  z http://tftpd32.jounin.net.

Rozpakuj go na dysk C:, stwórz folder c:\tftpd\files.

Pobierz z trunka pliki:
- openwrt-kirkwood-uImage
- openwrt-kirkwood--jffs2-128k.img
- openwrt-kirkwood-iconnect-u-boot.kwb

i zapisz je do utworzonego wcześniej folderu files.

Uruchom tftpd w "Server interface" powinno być 192.168.1.5 jeżeli masz więcej kart sieciowych może tam być adres innej karty, zmień na właściwy.

Teraz wciśnij "Settings", przejdź na zakładkę TFTP i ustaw "Base Directory" na c:\tftpd\files, zatwierdź przez OK.

4. Instalacja najnowszego U-Boota

!! Uwaga ta operacja może uszkodzić U-Boot i spowodować że sprzęt nie wstanie !!
Najlepiej jak na początek spróbujesz uruchomić OpenWRT bez wgrywania nowego U-Boota.
Przejdź do punkut 5 najpierw ! Dopiero w razie problemów zatosuj opis z tego punktu.

Nawet jak uszkodzisz router da się go naprawić za pomocą złacza JTAG.

4.1 Kopia bezpieczeństwa ustawień

Podłącz iConnecta do pradu, w konsoli szeregowej obserwuj pojawiajace się komunikaty. Kiedy pojawi się:

Hit any key to stop autoboot:  0

wciśnij enter. Teraz w konsoli wpisz:

printenv

zostana wyświetlone wszystkie zmienne env, skopiuj wszystko do pliku tekstowego i zapisz go, będzie potrzebny później.

4.2 Flashowanie nowego U-Boota

Ustaw adres serwera tftp na 1.5 i adres iConnecta na 1.200.

setenv serverip 192.168.1.5
setenv ipaddr 192.168.1.200

Wgrywamy teraz nowego U-Boot

mw 0x0800000 0xffff 0x100000 
nand erase 0x0 0x100000
tftp 0x0800000 openwrt-kirkwood-iconnect-u-boot.kwb
nand write 0x0800000 0x0 0x100000

Taki powinien być wynik:

iconnect => setenv serverip 192.168.1.5
iconnect => setenv ipaddr 192.168.1.200
iconnect => mw 0x0800000 0xffff 0x100000
iconnect => nand erase 0x0 0x100000

NAND erase: device 0 offset 0x0, size 0x100000
Erasing at 0xe0000 -- 100% complete.
OK

iconnect => tftp 0x0800000 openwrt-kirkwood-iconnect-u-boot.kwb
Using egiga0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.200
Filename 'openwrt-kirkwood-iconnect-u-boot.kwb'.
Load address: 0x800000
Loading: ############################
done
Bytes transferred = 401136 (61ef0 hex)

iconnect => nand write 0x0800000 0x0 0x100000

NAND write: device 0 offset 0x0, size 0x100000
 1048576 bytes written: OK

jeżeli nie było żadnych błędów robimy reset.

reset

Jeżeli twój iConnect nie wstał po tej operacji (nie świeci się niebieska dioda) oznacza to że wgranie U-Boot nie powiodło się.
Nie panikuj, należny użyć złącza JTAG do wgrania U-Boota, opis znajdziesz w moim artykule Flashing U-Boot with JTAG.

5. Wzorcowa konfiguracja U-Boota

Aby wyeliminować problemy jakie mogą wprowadzić złe ustawienia najlepiej przywrócić zmienne środowiskowe do ich domyślnych wartości.
Tak wygląda domyślna konfiguracja U-Boota:

iconnect => printenv
baudrate=115200
bootargs_root=noinitrd ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
bootcmd=setenv bootargs ${console} ${mtdparts} ${bootargs_root}; ubi part rootfs; ubifsmount rootfs; ubifsload 0x800000 ${kernel}; bootm 0x800000
bootdelay=3
console=console=ttyS0,115200
ethact=egiga0
kernel=/boot/uImage
mtdids=nand0=orion_nand
mtdparts=mtdparts=orion_nand:0x80000@0x0(uboot),0x20000@0x80000(uboot_env),-@0xa0000(rootfs)
stderr=serial
stdin=serial
stdout=serial

Environment size: 487/131068 bytes

5.1 Usuwanie zbędnych zmiennych (bezpieczny sposób)

Aby wyczyścić istniejąca zmienne środowiskowe użyj:

setenv nazwa_zmiennej ''

powtórz tą operacje dla każdej zmiennej ktorą chcesz usunąć.

5.2 Wymazanie obszaru env w pamieci flash (ryzykowne)

Możesz też wymazać obszar pamięci flash gdzie przechowywane są zmienne env, to zmusi U-Boota do utworzenia nowej konfiguracji z domyślnymi wartościami. Może to być ryzykowne jeżeli w nowej wersji zmieniono lokalizacje przechowywania zmiennych i wymażesz kawałek U-Boota.

Wykonaj:

nand erase 0x80000 0x100000
reset

Po resecie U-Boot zgłosi dwa błędy:

*** Warning - bad CRC, using default environment
Warning: failed to set MAC address

Aby pozbyć się tych błędów należy przywrócić adres MAC (poszukaj ethaddr w pliku z kopią ustawień) i zapisać zmienne:

setenv ethaddr '00:D0:##:##:##:##'
saveenv
reset

Po restarcie nie będzie już błędów.

6. Instalacja OpenWRT na świeżym U-Boocie

6.1 Przygotowanie środowiska

Z backupu odczytujemy adres MAC, zmienna ethaddr.

Dodajemy MAC, ustawiamy IP serwera tftp na 1.5 a iConnecta na 1.200, zapisujemy i restartujemy.

setenv ethaddr '00:D0:##:##:##:##'
setenv serverip '192.168.1.5' 
setenv ipaddr '192.168.1.200'
saveenv
reset

Ustawiamy jeszcze parametry bootowania:

setenv machid 'B36'
setenv arcNumber '2870'
setenv loadaddr '0x6400000'
setenv console 'console=ttyS0,115200 panic=20'
setenv bootargs_root 'root=/dev/mtdblock2 rootfstype=jffs2'
Teraz dodajemy skrypty ułatwiające wgranie obrazów:
setenv kernel_name 'openwrt-kirkwood-uImage'
setenv rootfs_name 'openwrt-kirkwood--jffs2-128k.img'

setenv download_kernel 'mw $(loadaddr) 0xffff 0x300000; tftp $(loadaddr) $(kernel_name);'
setenv flash_kernel 'nand erase 0x100000 0x400000; nand write.e $(loadaddr) 0x100000 0x400000;'

setenv download_rootfs 'mw $(loadaddr) 0xffff 0x200000; tftp $(loadaddr) $(rootfs_name);'
setenv flash_rootfs 'nand erase 0x500000 0xfb00000; nand write.e $(loadaddr) 0x500000 0x200000;'

setenv load_openwrt 'setenv bootargs $(console) $(bootargs_root); nand read $(loadaddr) 0x100000 0x400000; bootm $(loadaddr)'
setenv bootcmd 'run load_openwrt'
saveenv

6.2 Wgranie obrazów systemu

Teraz wgrywamy obraz systemu, wykonując:

run download_kernel
run flash_kernel
run download_rootfs
run flash_rootfs
reset

Wynik:

iconnect => run download_kernel
Using egiga0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.200
Filename 'openwrt-kirkwood-uImage'.
Load address: 0x6400000
Loading: #################################################################
         ######################
done
Bytes transferred = 1264864 (134ce0 hex)

iconnect => run flash_kernel

NAND erase: device 0 offset 0x100000, size 0x400000
Erasing at 0x4e0000 -- 100% complete.
OK

NAND write: device 0 offset 0x100000, size 0x400000
 4194304 bytes written: OK

connect => run download_rootfs
Using egiga0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.200
Filename 'openwrt-kirkwood--jffs2-128k.img'.
Load address: 0x6400000
Loading: #################################################################
         ##################################
done
Bytes transferred = 1443840 (160800 hex)

iconnect => run flash_rootfs

NAND erase: device 0 offset 0x500000, size 0xfb00000
Skipping bad block at  0x0b5a0000
Skipping bad block at  0x0b5e0000
Skipping bad block at  0x0b620000
Erasing at 0xffe0000 -- 100% complete.
OK

NAND write: device 0 offset 0x500000, size 0x200000
 2097152 bytes written: OK

reset

6.3 Pierwszy start

Boot log dla pierwszego startu:

U-Boot 2012.10 (Feb 12 2013 - 18:24:56) Iomega iConnect

SoC:   Kirkwood 88F6281_A0
DRAM:  256 MiB
WARNING: Caches not enabled
NAND:  512 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0
Hit any key to stop autoboot:  0

NAND read: device 0 offset 0x100000, size 0x400000
 4194304 bytes read: OK
## Booting kernel from Legacy Image at 06400000 ...
   Image Name:   Linux-3.3.8
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1264640 Bytes = 1.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK
Using machid 0xb36 from environment

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Linux version 3.3.8 (openwrt@OpenWRTBuild) (gcc version 4.6.4 20121210 (prerelease) (Linaro GCC 4.6-2012.12) ) #1 Wed Jan 30 08:21:48 MST 2013
[    0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: Iomega iConnect Wireless

/* A lot of other lines */

[   14.512806] NAND device: Manufacturer ID: 0xad, Chip ID: 0xdc (Hynix NAND 512MiB 3,3V 8-bit)
[   14.521316] Scanning device for bad blocks
[   14.633823] Bad eraseblock 1453 at 0x00000b5a0000
[   14.638673] Bad eraseblock 1455 at 0x00000b5e0000
[   14.643509] Bad eraseblock 1457 at 0x00000b620000
[   14.768850] Bad eraseblock 3075 at 0x000018060000
[   14.773689] Bad eraseblock 3077 at 0x0000180a0000
[   14.854509] Creating 4 MTD partitions on "orion_nand":
[   14.859696] 0x000000000000-0x000000100000 : "u-boot"
[   14.865801] 0x000000100000-0x000000400000 : "uImage"
[   14.871789] 0x000000400000-0x000002400000 : "rootfs"
[   14.877811] 0x000002400000-0x000020000000 : "data"

/* A lot of other lines */

[   16.409415] jffs2_scan_eraseblock(): End of filesystem marker found at 0x260000
[   16.416814] jffs2_build_filesystem(): unlocking the mtd device... done.
[   16.423471] jffs2_build_filesystem(): erasing all blocks after the end marker... done.
[   22.954602] JFFS2 notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[   22.974126] VFS: Mounted root (jffs2 filesystem) on device 31:2.
[   22.980637] Freeing init memory: 124K
- preinit -
Press the [f] key and hit [enter] to enter failsafe mode
- regular preinit -
- init -

Please press Enter to activate this console. 

[Enter]

BusyBox v1.19.4 (2013-02-12 18:25:46 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
 -----------------------------------------------------
 BARRIER BREAKER (Bleeding Edge, r35572)
 -----------------------------------------------------
  * 1/2 oz Galliano         Pour all ingredients into
  * 4 oz cold Coffee        an irish coffee mug filled
  * 1 1/2 oz Dark Rum       with crushed ice. Stir.
  * 2 tsp. Creme de Cacao
 -----------------------------------------------------
root@OpenWrt:/#

Mamy wgrane OpenWRT.

7. Dostęp do iConnect przez SSH

Aby uzyskać dostęp przez SSH należy najpierw zalogować się przez Telent.

W PuTTY ustawiamy:

IP: 192.168.1.1
Port: 23
Rodzaj połączenia: Telnet

po zalogowaniu wpisujemy:

passwd root
Changing password for root
New password:
Retype password:
Password for root changed by root

Po tym Telent zostanie zablokowany a uzyskamy dostęp po SSH

8. Dostęp do Internetu

Domyślnie w OpenWRT adres IP ustawiony jest na 192.168.1.1 co może konflitowac z naszym routerem.

Za pomocą WinSCP edytujemy plik /etc/config/network

Jeśli chcemy mieć statyczny adres zmieniamy wartość ipaddr na odpowiednią.

Aby uzyskać adres z serwera DHCP w sieci LAN zmieniamy całą sekcje lan na :

config interface 'lan'
        option ifname 'eth0'
        option proto 'dhcp'

Jeżeli do tego portu będzie podpięty WAN np. Internet od dostawcy to zmieniamy na:

config interface 'wan'
        option ifname 'eth0'
        option proto 'dhcp'
        #option macaddr '00:30:##:##:##:##' #Optional

Ustawienie wan oraz lan ma znaczenie ze względu na reguły firewalla.

Należy jeszcze wykonać reset. I powinno wszystko działać.

Zobacz: http://wiki.openwrt.org/doc/uci/network

Przydatne komendy U-Boota

nand bad - pokazuje uszkodzone bloki
bdinfo - informacje o płytce
version - informacje o U-Boot

Dodatkowe informacje

http://www.denx.de/wiki/U-Boot
http://wiki.openwrt.org/toh/iomega/iconnect
http://wiki.openwrt.org/doc/uci/fstab

 

   
© Paweł Woźniak