LaFonera router és az RS232 konzol

Egy majdnem teljesen halott LaFonera router életre lehelése RS232 (soros port) segítségével... – írta: 04ahgy, 16 éve

Egy majdnem teljesen halott LaFonera router életre lehelése RS232 (soros port) segítségével, ha már az Eth0 csatolón sem működik a soros konzol, telnet/SSH hozzáférés. Erről szólna jelen írásom.

Nagyrészt felhasználtam a következő, http://www.easy2design.de/bla/?page_id=98 címen található angol nyelvű leírást, magyar nyelven való részleges közléséhez és átdolgozásához – megkeresésemre – nagy örömmel járult hozzá a szerzője. Képeket és ötleteket merítettem még a DD-WRT oldaláról is. Ezúton köszönöm nekik!

Következzék hát a lényeg, a mikéntek és hogyanok.

Bevezetés

Hogy is sikerült tönkretennem? Nagy valószínűséggel hasonló módon, mint neked, kedves olvasó, ha már olvasod a soraimat. Firmware frissítés közben kilépés a böngészőből, a Fonera kihúzása (áramtalanítása) a folyamat közben, vagy egyszerűen csak önmaga nem végezte el jól a frissítést. Fontos tudnivaló, hogy a kis router a neten keresztül szépen frissíti magát, amikor kiadnak új firmware-t, tehát ha csak a legújabb használata miatt szeretnél flashelni, akkor ne tedd! Ez nem alaplap, és nem BIOS, automatikusan megteszi saját frissítését a neten. Saját esetemben például azért volt szükség az első, rosszul végződő frissítésre, mert nem volt hajlandó PPPoE módban csatlakozni a kis ketyere, következésképp nem volt internetkapcsolat. Elkövettem azt a hibát, hogy böngészőből, ráadásul a WLAN (Eth1) interfészen keresztül álltam neki a cserének, meg is lett a végeredmény.
Google keresés indult lázasan, a fórum bújása, és kiábrándultam: az én routerem nem működött még alapszinten sem a LAN porton. Esélyem nem volt a felnyitása nélkül, Ethernet vagy WLAN segítségével megoldani a problémát. Újabb nekifutásra akadt a soros kábeles lehetőség, fórumos segítségadások és ismételt guglizás közben bukkantam rá a német kolléga cikkére.


A kezdetek

A router szétszerelése ( *** mely a 2 éves garancia elvesztésével jár! *** ) az alján indul. Az antennától távoli élénél elhelyezkedő két – ragasztással rögzített – gumibakot eltávolítva, két kis csavar kicsavarása után tudjuk a fedelet óvatosan eltávolítani. Angol nyelven, képekkel illusztrálva megtalálható még itt: [link]. A következő kép tárul elénk:


Így néz ki a szétszerelt Fon router belseje.

A nagy fémfelület alatt található az egész szerkezet lelke, a mikrohullámú adó, és a CPU. 187MHz-en ketyeg, nem is olyan rossz. 16MB RAM és 8MB flash tárhely található még a hardveren. Előbbi a képen is látható, utóbbi a panel alján kapott helyet. Jobb oldalt alul helyezkedik el a tápellátásért felelős áramkör a kondenzátoraival, mely a dugasztáp által szolgáltatott 5V feszültségű egyenáramot szűri tovább, és 3,3V feszültségűre stabilizálja. A RAM és az imént említett tápáramkör között található egy 10 tűs tüskesor, ez lesz mostani írásom főszereplője. Az alábbi képen látható, mely lábai is fontosak nekünk.

A soros port csatlakozója, fotón...
...és sematikus rajzon.

Oda kell tehát csatlakozni, de jaj!, kiálthatunk fel. Hiszen az RS232 szabvány specifikációi szerint az ± 12V-on operál. Vajon hogy fogja ezt megemészteni az aszimmetrikus 3,3V-ról működtetett kis router? Bizony, kell egy interfész áramkört készíteni. A DD-WRT wiki oldalán több megfelelő módszert is fellelhetünk, szintén angolul. Különféle logikai szint konvertáló integrált áramkörös kapcsolások (MAX232, MAX3232, Dallas DS275), és akár mezei, diszkrét alkatrészekből felépített tranzisztoros is egyformán megteszik. Én – mivel az itthon fellelhető alkatrészekre támaszkodva, gyorsan akartam elkészíteni – a diszkrét megoldást választottam. Az alábbi kép alapján állítottam össze az áramkört.

A tranzisztoros logikai szint átalakító kapcsolás.

A kapcsolás felső részének (vevőegység) zöld TxD bemenete a Fon router Tx tüskéjére, míg az alsó, adóegység kimenete (zöld RxD) az Rx tüskével áll galvanikus kapcsolatban. A 3,3V Vcc bekötését hadd tartsam meg hadititoknak, az olvasók beleegyezésével. A GND-t pedig mindenki találja ki! A piros TxD a 9-pólusú anya D csatlakozó 3-as számú lábára, míg a piros RxD a kettesre csatlakozik. A GND-t az ötösre kössük, ez legyen a Fonera routerre is csatlakoztatva, és meg is volnánk a kötözgetés macerás folyamatával.

Az RS232 9-pólusú anya lábkiosztása.

Tulajdonképpen a használt tranzisztor konkrét típusa teljesen mindegy, NPN legyen, legalább 50-es erősítési tényezővel (hFE). Én BC546B-t használtam. A dióda is teljesen mindegy, itt pont ugyanezt (1N4148) alkalmaztam én is, százával állt itthon a fiókban. (A router tüskesorára a megfelelő vezetékeket nagyon gány módon, forrasztással csatlakoztattam.) A kész „remekmű” így festett:

A sietve összegányolt interfész áramkör.

A konzol

A számítógéphez csatlakoztatva, valahogy biztosítanunk kell a kommunikációt a FON routerrel, erre szolgál a soros portot kezelő Hyper Terminal. Létre kell hozni egy kapcsolatot a ténykedésünkhöz. A beállítások fontos, hogy a következők legyenek: 9600-8-N-1 and no flow control, vagy magyar Windowsnál: 9600-8-N-1 és nincs átvitelvezérlés. Képekben:

A HTerm beállításai screenshoton - angolul.A HTerm beállításai screenshoton - magyarul.

Ha ez kész, elfogadjuk a beállításokat, és bekapcsoljuk a Fonerát. Várjuk, mi jelenik meg a képernyőn. Ehhez lesz hasonló:


+PHY ID is 0022:5521
Ethernet eth0: MAC address 00:18:84:23:65:00
IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0
Default server: 0.0.0.0

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug 7 2006

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: ap51
RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 1.000 seconds - enter ^C to abort

Itt egy részt kihagyok (akit érdekel, ezen a helyen található a teljes kimenet), mert sokat pakol szerencsétlen a kijelzőre. Viszont az utolsó sor angol nyelvű tanúsága szerint mi itt egy Ctrl + C leütésével megszakíthatjuk a folyamatot! A dump vége pedig a következő:

Call Trace: [<8006c218>] [<80085408>] [<80080188>] [<80086460>] [<8008450c>]
[<80084fec>] [<80084f90>] [<80173544>] [<8009a10c>] [<80089c38>] [<80173544>]
[<8008cd58>] [<8008ca6c>] [<80173544>] [<80170000>] [<80173544>] [<80076d50>]
[<80173544>] [<80173548>] [<80173548>] [<80099b24>] [<80173544>] [<80170000>]
[<8009a614>] [<80041c6c>] [<80041b60>] [<80067c6c>] [<800417e4>] [<80041784>]
[<80043510>] [<80058144>] [<800a20fc>] [<80043500>]

Code: 8c920028 00809821 02408021 <8e020018> 8e030010 30420006 00621825 1460
002a 00000000
Kernel panic: Attempted to kill init!

A lényeg, hogy az elkótyavetyélt korábbi ténykedésünkkor megsérült (részlegesen íródott csak felül) az EEPROM adott része, ez okozza a galibát. A kernel panic miatt az ethernet, vagy akár a WLAN interfészen felesleges is próbálkoznunk, ezért maradt a soros port. Most, hogy látjuk a folyamatot, és meg is tudjuk szakítani, még a kernel panic bekövetkezte előtt, jöhetnek a további lépések.

A frissítés

Elsőként, kell egy jó firmware. Ezt a fon oldaláról tudjuk letölteni, végül is mindegy melyiket, kinek mi szimpatikus. Ez egy .fon kiterjesztésű fájl formájában realizálódik merevlemezünkön, amennyiben már megtörtént a letöltése. Sajnos ez így nem jó a routerre való áttöltésre, az első 519 byte felesleges (itt a fon tárol a frissítéséhez szükséges információkat, amik a router számára felismerhetők), ezt el kell távolítanunk. Sajnos ez a szokásos windowsos módszerekkel nem (vagy nem egyszerű módon) lehetséges, ezért a Linux egy egyszerű parancssoros eszközéhez, a dd-hez fordulunk.
Honnan szedjünk linuxot? Több lehetőségből válogathatunk:

- Letöltünk egy Live (CD-ről futó) verziót, bármely disztribúcióból.
- Ugyanezt USB pendriveról bootolható verzióban.
- Esetleg virtuális gépre (VMWare, VirtualPC) telepítünk egy teljes disztribúciót.
- Netalán virtuális gép nélkül a saját merevlemezünkre.
- Rengeteg windows alatti Linux emulátor, parancssori futtatókörnyezet van még. Pl.: Syslinux, Unixtools. Azzal is célt érhetünk.

Az eredeti FON router, még érintetlenül.

Ha már rendelkezünk a szükséges, bármely formában fentebb leírt linux rendszerrel, a következő parancsot adjuk ki (megfelelő firmware fájlnévvel természetesen):

dd if=fonera_0.7.1.1.fon of=fonera.tar.gz bs=519 skip=1

Ehhez nem árt, ha a megfelelő könyvtárba navigálunk, ahol a firmware helyet foglal. Fontos megjegyzés! A Linuxok java része csak olvassa az NTFS-t, ezért FAT32 partíción, vagy pendrive-on végezzük ezt el. (Meg lehet oldani az NTFS írást is, de mint lentebb is említem, ez nem Linux tutorial.) A maradékot már ki-ki fantáziájára bízom, hiszen ez a cikk a FONERA routerrel foglalkozik, nem a linux parancssorral. Az eredményül kapott fonera.tar.gz fájlt már a legújabb Total Commander is készségesen kezeli. Ebben találunk egy kb. 1,5MB méretű rootfs.squashfs fájlt, ez az, ami az egész router operációs rendszere valójában, speciális tömörített formában, ezt kell beleírnunk a flash ROM-ba. Ha valakinek megfelel a cikk írásakor legfrissebb, 0.7.1-r5 verziójú FON firmware, akkor azt megtalálja már megfelelően csonkolva, tar.gz formában ide feltöltve, aki extrákat akar, netalán pont régebbit kívánna routerével megetetni, különféle addon későbbi telepítésének céljából, az szenvedjen is meg vele.

Most következik az, hogy rácsatlakoztatjuk a soros konzolt a gépünk COM1 portjára, elindítjuk a HTerm-et, és mikor ez megtörtént, áram alá helyezzük a FON routert. Fentebb már írtam, most viszont nem csak bámészkodunk, hanem a Ctrl + C billentyűkombinációval meg is szakítjuk a boot folyamatot. Egy

RedBoot>

prompt fogad minket! Itt bizony parancsokat adhatunk kis routerecskénk számára, igaz csak viszonylag korlátozott módon és számban. Ha a következő parancsot kiadjuk

load -r -b %{FREEMEMLO} -m xmodem

akkor a HTerm konzolunk átvált, és egy C betű jelenik meg. Az ablak közepén jobb kattintással fájlt tudunk átküldeni a soros csatolón az eszközünkre. Arra figyeljünk, hogy ne hagyjuk úgy, ahogy felkínálja, hanem váltsuk át a kommunikációs módot zmodemről xmodemre, tömörítést se alkalmazzunk! Máskülönben nem fog működni a kommunikáció. A pendriveunkon, vagy akárhol máshol elhelyezkedő, korábban elkészített rootfs.squashfs-t kitallózzuk, és átküldjük a Fonerára.
Már jócskán verítékcseppekkel lehet tele ilyenkor a routere életre keltésével foglalatoskodó olvasó homloka, a folyamat ezen pontján viszont nyugodtan el lehet hagynia gépét egy jó kávét, teát összedobni, a másolás ugyanis 32-35 percet vesz igénybe! Hiába, a sebesség csak 9600 bit/sec,és még ebből a protokoll átviteli vesztesége levonódik, ezért nyugodtan számolhatunk 6500-7500 bit/sec-et nem meghaladó átviteli sebességgel.

Ha minden jól ment, most ülünk a gép előtt, a fájlátvitel véget ért, és forró, mézes-citromos teát kortyolgatunk. A RedBoot prompt vigyorog ránk gonoszan, lelketlenül hideg elszántsággal. Ki is adhatjuk munkánk első kézzelfogható eredményét, a

fis create rootfs

parancsot! Jó operációs rendszerhez mérten a Foneránk kis Open WRT-je is okvetetlenkedni fog:

An image named 'rootfs' exists - continue (y/n)?

Természetesen szeretnénk, y leütésével tudassuk hát vele. Ez után egy kis ideig eldolgozgat, sajnos sem a flash, sem a router 187MHz-es processzora nem egy sebességbajnok, de a céljukat, feladatukat jól ellátják. Mikor végzett, ismét megjelenik a RedBoot prompt. És itt érkeztünk el a tetőpontra! Következzen a dobpergés, feszült figyelem vágható a levegőben, mert most bizony újraindítjuk a routert! Akár áramtalanítással néhány másodpercre, vagy aki elegánsabb, kiadhatja a

restart

parancsot a konzolban. Amíg várjuk, mi is jelenik meg, fél szemmel követhetjük a boot- folyamat közben megjelenő üzeneteket, ahogy kedvenc routerünk csevegve kommunikál velünk, épp aktuális ténykedéséről informálva, de másik szemünkkel a kezünkre koncent- ráljunk, ahogy izzítja a laptopot, vagy egyéb WiFi vevőalkalmatosságot a teszteléshez. Nagy valószínűséggel ugyanis minden a legnagyobb rendben lesz. Nekifoghatunk drága routerecskénk webinterfészénél kezdve (bátrabbak a linux konzolt is választhatják :D ) újra bekonfigurálni vezeték nélküli hálózatunkat. Minden az alapértelmezett, WPA jelszó a router sorozatszáma. Figyelem, a firmware frissítést nem bántani, vagy könnyen újra szükség lehet a cikkre.

Utószó

Routerét javítgatva, különböző emberek lévén, mindenkinek különböző gondolatai támadnak. Van aki örül, hogy megúszta és hátradől megkönnyebbülten, van aki már alig várja, hogy használhassa, van aki pedig érdeklődik, és már az elején máson töri a fejét. Utóbbiak táborába tartozom magam is, azon röpke ötlettől vezérelve, hogy ha már szét van szedve, miért ne tenném egyszerű módon szebbé? Gyorsan le is forrasztottam az internet és a wlan jelző LED-jeit, és egyiket sárgára (internet), másikat pirosra (wlan) cseréltem. A végeredmény a lentebbi képen látható, mindenki maga döntse el, ez tetszik-e jobban, vagy az eredeti, jóval egyhangúbb színösszeállítás. A LED-ek természetesen bármilyen színűre cserélhetők...

A Fon router, immár szokszínű(bb)en!

Rengeteg mindent lehet még kezdeni a Fonerával, akár csak hardveresen. A soros konzolt használva pedig emberi elmével vajmi nehezen felfogható távlatok, lehetőségek nyithatók meg. Lehetséges, hogy lesz még ezzel foglalkozó cikk (már ha ezt nem fütyülitek ki rögvest).

Hozzászólások, kérdések, észrevételek a fórumban bátran feltehetők, és szívesen látottak részemről.

HGyu

Előzmények

  • LaFonera - A Francofon addon

    Nemrégiben végre én is tagja lehettem a FON közösségnek, aminek az elsődleges célja az...

  • EthicalHacking-2. Rész

    A WEP és a WPA: teljes biztonság a levegőben? Nem hinném… Üdvözlök mindenkit az EthicalHacking...