Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
NetiaSpot vs. OpenWRT - tutorial wgrywania/przywracania
#1
Information 
Cześć.

Jako że już trochę ze swoim NetiaSpotem przeszedłem - postanowiłem napisać tutorial wgrywania OpenWRT, ożywienia NetiaSpota po uszkodzeniu Uboot'a oraz przywracania oryginalnego softu OpenRG od Netii. Przy okazji odciążę też naszych łebskich developerów OpenWRT od zajmowania się głupotami Smile

Spis treści:
1. ZANIM ZACZNIESZ
2. WGRYWANIE OPENWRT
3. PRZYWRACANIE UBOOT'A
4. PRZYWRACANIE OPENRG



*** ZANIM ZACZNIESZ ***

Aby móc przeprowadzić którąkolwiek z opisanych poniżej operacji musisz mieć dostęp do NetiaSpot'a poprzez port RS232. Musisz też mieć świadomość, że w obecnym stadium rozwoju OpenWRT dla NetiaSpota nie jest softem "dla ludu" - jeśli nie znasz się na rzeczach o których tu piszemy, lepiej odpuść - NetiaSpot też pieniądz. Poniższy tutorial kierowany jest do ZAAWANSOWANYCH użytkowników. Wszelkie opisane poniżej operacje wykonujesz na WŁASNĄ odpowiedzialność. Dokonałem wszelkich starań, aby poniższy opis był zrozumiały, ale to wszystko co mogę dla Ciebie zrobić.



*** WGRYWANIE OPENWRT ***

1. Wyłącz NetiaSpota (najlepiej sprawdzi się tutaj przycisk z tyłu) i podłącz go do komputera poprzez RS232.

2. Uruchom swój ulubiony terminal RS232 (pod Windowsem może to być PuTTy, HyperTerminal, RealTerm...) i ustaw komunikację na odpowiedni port, prędkość 115200, 8 bitów danych, 1 bit stopu, bez bitu parzystości, bez kontroli przepływu.

3. Włącz NetiaSpota, wystartuj terminal i obserwuj konsolę. Po chwili pojawi się komunikat:
Kod:
U-Boot 1.1.5-LANTIQ-v-1.8.39 (Apr  4 2011 - 19:51:54)

Boot from SPI
AR9 BOARD
CLOCK CPU 333M RAM 166M
DRAM:  32 MB

relocate_code start
relocate_code finish.
64 MiB
In:    serial
Out:   serial
Err:   serial
Net:    Start init xR9 Mac 0 to 2 mode
GPIO25 reset to Eth switch is generated.

switch chip id=00002599
Tantos Switch detected!!
amazon_s Switch

Type "run flash_nfs" to mount root filesystem over NFS

Hit any key to stop autoboot:  0
Naciśnij dowolny klawisz w konsoli żeby zatrzymać bootowanie RGLoader'a i pozostać w konsoli Uboot'a - będzie nam potrzebna.

4. Zostawiamy narazie terminal RS232 i zajmujemy się przygotowaniem serwera Tftp32 - jest to najłatwiejsza metoda wgrywania softu do Uboot'a. Podłączamy więc NetiaSpota kablem LAN do komputera i ustawiamy adres naszej karty sieciowej na 192.168.1.10. Uruchamiamy serwer TFTP (pod Windowsem polecam Tftpd32 by Ph. Jounin - http://tftpd32.jounin.net/download/Tftpd...-setup.exe ), upewniamy się że serwer działa pod adresem ustawionym przed chwilą (192.168.1.10). Żeby nie komplikować sprawy, wrzucamy plik flash z OpenWRT do domyślnego folderu serwera (dla Tftpd32 jest to C:\Program Files (x86)\Tftpd32) i zmieniamy nazwę na "uImage", bez rozszerzenia.

5. Wracamy do terminala RS232. Wpisujemy komendy:
Kod:
tftpboot     //pobranie pliku uImage z serwera TFTP pod adresem 192.168.1.10 pod adres 0x80800000 w pamięci;
Po wczytaniu całego softu otrzymamy komunikat:
Kod:
done
Bytes transferred = <wartosc> (<wartosc_hex> hex)
Tę <wartosc_hex> należy zapamiętać i zaokrąglić w górę do najbliższej wielokrotności 512. Np. dla wartości 0x300004 będzie to 0x300200. Polecam kalkulator. Przechodzimy do kolejnych komend:
Kod:
nand erase 0      //wyczyszczenie całej pamięci NAND NetiaSpota;
nand write 0x80800000 0x0 0x<zaokraglona_wartosc_hex>     //przekopiowanie wczytanego uImage z RAMu spod adresu 0x80800000 do pamięci stałej od początku (adresu 0x0) do <zaokraglana_wartosc_hex>;
Jeśli wszystko poszło w porządku, nasze OpenWRT jest już na swoim miejscu. Ustawiamy jeszcze ostatnie zmienne i odpalamy!
Kod:
setenv openwrt 'nand read.e 0x80800000 0x0 0x100000; bootm'
setenv bootcmd 'run openwrt'
saveenv
reset

6. Pierwsze uruchomienie ma prawo trochę potrwać - uzbroj się w cierpliwość. Koniec końców naszym oczom ukaże się mniej więcej taki ekran powitalny:
Kod:
_______                     ________        __
|       |.-----.-----.-----.|  |  |  |.----.|  |_
|   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
|_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
ATTITUDE ADJUSTMENT (bleeding edge, r26290) ----------
  * 1/4 oz Vodka      Pour all ingredents into mixing
  * 1/4 oz Gin        tin with ice, strain into glass.
  * 1/4 oz Amaretto
  * 1/4 oz Triple sec
  * 1/4 oz Peach schnapps
  * 1/4 oz Sour mix
  * 1 splash Cranberry juice
-----------------------------------------------------
root@openwrt:~$

7. Cieszymy się tym co zrobiliśmy Smile




*** PRZYWRACANIE UBOOT'A ***

vel. RATUNKUUUU, uszkodziłem, zbrickowałem NetiaSpota, wpisałem komendy nie tak jak trzeba! Jedyne co pokazuje mi się w terminalu RS232 to:
Kod:
ROM VER: 1.1.3
CFG 05

ROM VER: 1.1.3
CFG 05

ROM VER: 1.1.3
CFG 05

ROM VER: 1.1.3
CFG 05

ROM VER: 1.1.3
CFG 05

itd.

1. Po pierwsze - opanowanie. Coś tam jeszcze w terminalu pika, więc jakaś część naszego NetiaSpot'a żyje - i nią się posłużymy - trybem UART.

2. Wyłącz NetiaSpota (najlepiej sprawdzi się tutaj przycisk z tyłu) i podłącz go do komputera poprzez RS232.

2. Aby przełączyć NetiaSpot'a w tryb UART, należy zmostkować odpowiednie piny. Służące temu 3 piny znajdują się obok kości SPI (tudzież obok centralnego otworu na wkręt mocujący PCB) - należy zmostkować dwa piny DALSZE od złącza szeregowego!

3. Uruchom terminal RS232, który jest zdolny przesyłać plik plaintextem w ASCII (pod Windowsem będzie to RealTerm), ustaw komunikację na odpowiedni port, prędkość 115200, 8 bitów danych, 1 bit stopu, bez bitu parzystości, bez kontroli przepływu.

4. Włącz NetiaSpota, wystartuj terminal i obserwuj konsolę. Jeśli poprawnie ustawiłeś tryb UART i terminal, pojawi się komunikat:
Kod:
ROM VER 1.3
CFG 04
UART
Przesyłamy teraz plik uboot.asc (załączony do posta, dzięki ScApi!). W RealTerm robimy to w zakładce Send, w sekcji "Dump File to Port", wybieramy plik i klikamy "Send File". W konsoli zaczną pojawiać się gwiazdki, a gdy plik zostanie pomyślnie wysłany, zacznie startować Uboot. Klikamy ESC gdy pojawi się mniej więcej taki komunikat:
Kod:
Hit ESC or SPACE to stop autoboot: 5...
Jeśli nie zdążymy, musimy całą operację wykonać od nowa, tj. zrestartować NetiaSpota, wysłać uboot.asc, i polować na odpowiednią chwilę...

5. Mamy konsolę Uboot. Jest to ograniczona wersja, więc nie możemy skorzystać z komunikacji LAN i serwera TFTP. Teraz przy jej pomocy wgramy właściwego Uboot'a, dostarczanego przez Netię. Potrzebny będzie nam do tego terminal RS232, który umożliwia wysyłanie plików poprzez Ymodem (pod Windowsem będzie to HyperTerminal). Zaczynamy od wydania komendy Uboot'owi:
Kod:
loady
Teraz NetiaSpot oczekuje na nasz plik wysyłany przez Ymodem. Wybieramy plik sflash.bin (załączony do posta, dzięki ScApi!) i wysyłamy. W HyperTerminal będzie to menu Transfer->Send File, podajemy plik, ustawiamy protokół na Ymodem i klikamy "Send".

6. Gdy nasz plik zostanie pomyślnie przesłany, wykonujemy poniższe komendy aby zapisać go na stałe w pamięci:
Kod:
sf probe 3
sf erase 0x0 0x80000
sf write 0x80800000 0x0 0x80000

7. Gdy po komendzie write konsola znów wypluje "AR9 # ", to można uznać, że zapis się powiódł Smile Wyłączamy NetiaSpota, usuwamy zworkę (uwalniamy nasze zmostkowane wcześniej piny) i włączamy go ponownie.

8. Naszym oczom powinna się ukazać się wytęskniona konsola fabrycznego Uboot'a Smile Na koniec zmieniamy jeszcze adres MAC na własny, można go odczytać na spodzie NetiaSpota:
Kod:
setenv ethaddr '<adres_mac>'
savenv

9. Voila!




*** PRZYWRACANIE OPENRG***

Jeśli chcesz powrócić do fabrycznego softu OpenRG od Netii, i nie zdążyłeś jeszcze popsuć Uboot'a, to ta instrukcja jest dla Ciebie. Zaczniemy od RGLoader'a - jest konieczny do wgrania OpenRG, a wgrywając wcześniej OpenWRT pozbyłeś się go komendą erase Smile

1. Wyłącz NetiaSpota (najlepiej sprawdzi się tutaj przycisk z tyłu) i podłącz go do komputera poprzez RS232.

2. Uruchom swój ulubiony terminal RS232 (pod Windowsem może to być PuTTy, HyperTerminal, RealTerm...) i ustaw komunikację na odpowiedni port, prędkość 115200, 8 bitów danych, 1 bit stopu, bez bitu parzystości, bez kontroli przepływu.

3. Włącz NetiaSpota, wystartuj terminal i obserwuj konsolę. Po chwili pojawi się komunikat:
Kod:
U-Boot 1.1.5-LANTIQ-v-1.8.39 (Apr  4 2011 - 19:51:54)

Boot from SPI
AR9 BOARD
CLOCK CPU 333M RAM 166M
DRAM:  32 MB

relocate_code start
relocate_code finish.
64 MiB
In:    serial
Out:   serial
Err:   serial
Net:    Start init xR9 Mac 0 to 2 mode
GPIO25 reset to Eth switch is generated.

switch chip id=00002599
Tantos Switch detected!!
amazon_s Switch

Type "run flash_nfs" to mount root filesystem over NFS

Hit any key to stop autoboot:  0
Naciśnij dowolny klawisz w konsoli żeby zatrzymać bootowanie RGLoader'a i pozostać w konsoli Uboot'a - będzie nam potrzebna.

4. Zostawiamy narazie terminal RS232 i zajmujemy się przygotowaniem serwera Tftp32 - jest to najłatwiejsza metoda wgrywania softu do Uboot'a. Podłączamy więc NetiaSpota kablem LAN do komputera i ustawiamy adres naszej karty sieciowej na 192.168.1.10. Uruchamiamy serwer TFTP (pod Windowsem polecam Tftpd32 by Ph. Jounin - http://tftpd32.jounin.net/download/Tftpd...-setup.exe), upewniamy się że serwer działa pod adresem ustawionym przed chwilą (192.168.1.10). Żeby nie komplikować sprawy, wrzucamy plik z RGLoader'em (załączony do posta - dzięki ScApi!) do domyślnego folderu serwera (dla Tftpd32 jest to C:\Program Files (x86)\Tftpd32) i zmieniamy nazwę na "uImage", bez rozszerzenia.

5. Wracamy do terminala RS232. Wpisujemy komendy:
Kod:
tftpboot     //pobranie pliku uImage z serwera TFTP pod adresem 192.168.1.10 pod adres 0x80800000 w pamięci;
Po wczytaniu pliku obrazu otrzymamy komunikat:
Kod:
done
Bytes transferred = <wartosc> (<wartosc_hex> hex)
Tę <wartosc_hex> należy zapamiętać i zaokrąglić w górę do najbliższej wielokrotności 512. Np. dla wartości 0x300004 będzie to 0x300200. Polecam kalkulator. Przechodzimy do kolejnych komend:
Kod:
nand erase 0      //wyczyszczenie całej pamięci NAND NetiaSpota;
nand write 0x80800000 0x0 0x<zaokraglona_wartosc_hex>     //przekopiowanie wczytanego uImage z RAMu spod adresu 0x80800000 do pamięci stałej od początku (adresu 0x0) do <zaokraglana_wartosc_hex>;
Jeśli wszystko poszło w porządku, nasz RGLoader jest już na swoim miejscu. Ustawiamy jeszcze ostatnie zmienne (o ile wgrywając OpenWRT zmieniliśmy je zgodnie z instrukcją powyżej) :
Kod:
setenv bootcmd 'run boot_flash'
saveenv
reset

6. NetiaSpot restartuje się, po chwili powinniśmy wylądować w RGLoader'ze, który mówi:
Kod:
No active image found or section is damaged
Failed to boot active image
NETIASPOT boot>
I to się zgadza - przechodzimy więc do wgrania obrazu OpenRG. Ulubiony obraz pobrać można z działu DOWNLOAD (http://superspot.pl/index.php/ct-menu-it...tia-spot-1)

7.Przywracanie OpenRG na działającym RGloaderze instrukcja od Scapi
Kod:
Na działającym RGLoaderze:

"flash" (wchodzimy do menu flash)

"ubi_format mtd2" (tworzymy nową partcję UBI)

A następnie:

"load -u tftp://192.168.1.10/openrg.img" (wgrywamy obraz)

Jeżeli wystąpią problemy z zapisem konfiguracji, dodatkowo polecenie na działającym już OpenRG:

"system shell" (konsola)

"flash_eraseall -j /dev/mtd2" (formatowanie partycji jffs2)

link do openrg do flashowania spod RGLoader'a https://www.dropbox.com/s/oigg1waqfcjpcxo/openrg.img



*** PODZIĘKOWANIA ***

Ten tutorial nie powstałby bez pomocy ScApi. To on jest źródłem plików i komend, które są tu podane - ja jedynie opakowałem to w słowa.

Ponad wszystko największe podziękowania należą się ogólnie naszym developerom OpenWRT dla NetiaSpota - wypisani w kolejności chronologicznej przyłączenia do prac:
ScApi
lpm11


Bez nich nie byłoby tego wszystkiego. Wspierajmy ich pracę Smile



PS. Tutorial v.0.1 - poprawki i sugestie mile widziane


Załączone pliki
.zip   u-boot.asc.zip (Rozmiar: 252.47 KB / Pobrań: 79)
.zip   sflash.bin.zip (Rozmiar: 74.16 KB / Pobrań: 92)
.zip   rgloader.bin.zip (Rozmiar: 2.53 MB / Pobrań: 117)
Odpowiedz
#2
Serdeczne dzięki. Uwielbiam takich ludzi! Chłopaki są mistrzami, to trzeba przyznać.
Wyedytuj link do Tftpd32 bo nie jest poprawny.
http://tftpd32.jounin.net/download/Tftpd...-setup.exe
Odpowiedz
#3
Jeżeli chodzi o przywracanie OpenRG - można spokojnie wpisać rozmiar 4MB:
nand write 0x80800000 0x0 0x400000

I to 0x jest opcjonalne, ja wolę np.
nand write 80800000 0 400000


Natomiast nie przyszło mi do głowy, że spapranego uboota da się naprawić :O Dzięki micx za pomoc!
W następny weekend złożę wszystko w całość, tak by już niezaawansowani użytkownicy mogli uruchomić OpenWRT.

W zasadzie tak naprawdę pozostało WiFi.
Odpowiedz
#4
Kawał dobrej roboty chłopaki Wink Brawo. Gdyby każdy poradnik w internecie był tak szczegółowo opisany... Wink
Czy tryb UART da się uruchomić w ten sam sposób na Netia spocie 2 na VDSL?
Odpowiedz
#5
Dun, patrząc po zdjęciach wnętrzności NetiaSpota2 z pomagam.net, to powinno być analogicznie, z tym, że Netia pochowała już te styki Wink Potrzebne byłoby dobre zdjęcie układu SPI i okolic z NetiaSpota2 żeby móc porównać to z NetiaSpotem i określić gdzie co jest. W NetiaSpocie2 też jest SPI MXIC MX 25L1006E?
Odpowiedz
#6
Nie ma kości SPI, RS jest przy diodach(patrząc od przodu), zworki UART zaraz po prawej od NAND'a (patrząc od przodu).

U-boot w asc, tu podany nie nadaje się do tego spota, inny procek, inna ilość ram, inny typ ram, inna orientacja NAND.
Odpowiedz
#7
Przy naprawie u-boota według wskazanego opisu tracimy ustawienia i OpenRG się może burzyć.
Mniej inwazyjna naprawa, polega na zapisaniu tylko 128k pamięci flash, zamiast:

sf erase 0x0 0x80000
sf write 0x80800000 0x0 0x80000

powinno być:

sf erase 0x0 0x20000
sf write 0x80800000 0x0 0x20000
Odpowiedz
#8
Witam, nie wychodzi mi i nie wiem gdzie robie błąd. Może źle zaokrąglam wartość hex? Jaki powinien być zaokrąglony wynik dla wartości 440004 ?
Odpowiedz
#9
lpm partycje ustawił chyba na 1000000(jedynka i sześć zer), więc możesz wpisać taką wartość przy zapisywaniu obrazu na nand, generalnie nie ma różnicy o ile wyższa wartość będzie jeżeli nic w nandzie nie siedzi powyżej jakiejśtam wartości(wcześniej było wykonane "nand erase 0").

czyli
Cytat:nand write 0x80800000 0x0 0x1000000
lub
nand write 80800000 0 1000000

@lpm11
Cytat:Przy naprawie u-boota według wskazanego opisu tracimy ustawienia i OpenRG się może burzyć.

Backup zawiera dump SPI razem z ustawieniami openrg, hasłem, mac'iem i całą resztą, zależy jak bardzo ktoś namiesza w SPI, ale zgadzam się lepiej najpierw spróbować nagrać tylko u-boot'a.
Odpowiedz
#10
Dzięki za odpowiedź. Niestety mam wciąż to samo. po wykonaniu
Kod:
setenv openwrt 'nand read.e 0x80800000 0x0 0x100000\; bootm'
setenv bootcmd 'run openwrt'
saveenv
reset
nie startuje mi openwrt a ląduje spowrotem w ubocie. Po "Hit any key to stop autoboot: " wyświetla się"
Kod:
Usage:
nand - NAND sub-system.
Gdy wpiszę
Kod:
run openwrt

Wyświetla się to samo
Z ramu openwrt mi startuje bez problemu
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości