2012. október 29., hétfő

Halott Kindle nem jó Kindle

Figyelem! A következőkben leírtak alkalmazását csak abban az esetben (és akkor is csak saját felelősségre!) ajánlom , ha a készülékünk egyébként már teljes mértékben menthetetlennek tűnik, egyéb módon (pl. ismételt hard resetek, 24 órás töltés) újraéleszteni nem tudjuk, garanciális javítás vagy készülékcsere már nem jön szóba - egyszóval akkor, ha egyébként a kuka lenne a sorsa. A lentebb részletezett módszerek nagymértékben beavatkoznak a Kindle szoftverébe, nem megfelelő használattal nehezen helyrehozható károkat okozhatunk annak működésében, sőt a jelenleg rendelkezésre álló, némileg hiányos helyreállító állományok miatt a leírás pontos követése esetén sem garantált, hogy a szoftver eredeti állapota teljes mértékben sikeresen visszaállítható lesz.
A leírás Kindle 4 NT (azaz a billentyűzet nélküli, nem érintőképernyős) készülékre vonatkozik, más típusú Kindle-n a lenti formájában nem működik!



UPDATE: A cikk megírása óta sokat fejlődött a világ, többek között született egy egyszerű megoldás, aminek köszönhetően egy bootolható CD vagy USB stick segítségével különösebb nehézség nélkül helyreállíthatjuk a meghibásodott rendszert - így a leírás tulajdonképpen (szerencsére) okafogyottá vált, bár a készülék lelkivilága iránt mélyebben érdeklődők továbbra is hasznát vehetik. A módszer leírása itt található: Kubrick - Live CD to debrick

Bár kicsi az esély rá, előfordulhat, hogy a készülékre telepített jailbreak,  a különféle screensaver, font és egyéb hackek túlságosan mélyen avatkoznak be a készülék lelkivilágába, látszólag használhatatlanná téve azt. Jelentősen megnő ennek az esélye, ha tévedésből nem a firmware verziójának megfelelő törést, alternatív szoftvert telepítünk. Ilyen esetekben a készülékből "tégla" (az angol fórumok szóhasználatában "brick") lesz - semelyik gomb lenyomására nem reagál, nem működik a hard reset, hiába dugjuk rá USB-n a számítógépünkre, az nem ismeri fel. Ha a készülék még garanciális tehetünk egy próbát a javíttatásával illetve az Amazonnál történő cseréjével. Külföldi fórumokban többször felmerült a kérdés, hogy szankcionálja-e az Amazon ezen nem egészen legális szoftvermódosítások miatt elromlott készülékeket - az eddigi tapasztalatok alapján még a legdurvábban módosított Kindle-k visszaküldése esetén sem történt semmilyen "megtorló" lépés az Amazon részéről. Ha a garancia lejárt akkor sem kell rögtön kétségbeesnünk, ha szerencsénk van nem kell poháralátétté lefokoznunk a készüléket, van mód arra, hogy mentsük az elvileg menthetetlent. Bár ennek menete elsőre meglehetősen bonyolultnak tűnhet, a folyamat - ha megértjük a mikéntjét - tulajdonképpen egészen egyszerű.

I. Az elv

A Kindle-n egy módosított Linux operációs rendszer fut, ennek minden jellegzetességével. Nem baj, ha nem vagyunk Linux guruk, megpróbálom egyszerűen összefoglalni mi is az, ami a mi szempontunkból ebből érdekes.
A Kindle egyik speciális tulajdonsága, hogy háromféle módban képes elindulni: 
  • Az általános, fő mód (MAIN) az, amit a mindennapokban használunk. 
  • A diagnosztikai mód (DIAGS) egy speciális menüt indít el. Itt számos lehetőség áll rendelkezésünkre, de nekünk ezek jó részére nem lesz szükségünk. Ezt a módot fogjuk a későbbiekben arra használni, hogy egy SSH kliens segítségével bejelentkezzünk a Kindle Linux rendszerébe. (Ezzel a menüvel már találkozhattunk a jailbreak vagy a Duokan telepítése során - működőképes rendszer esetén ha a főkönyvtárba másoljuk az ENABLE_DIAGS nevű üres fájlt, illetve a device_info.xml nevű, szintén üres fájlt tartalmazó diagnostic logs könyvtárat, akkor a készülék Settings/Restart után diagnosztikus módba lép át.)
  • Végül létezik egy úgynevezett fastboot mód (FASTBOOT). Itt is jónéhány lehetőségünk van, mi a legrosszabb esetben is csak erre fogjuk használni, hogy újraírjuk a készülék kernelét (azaz az operációs rendszert működtető alaprendszert, magot).
Mint minden Linux rendszer, a Kindle is tartalmaz kernelt(rendszermagot), a rendszer pedig több partíción helyezkedik el. Mivel a diagnosztikus mód tulajdonképpen egy külön rendszert indít el mindenből kettő van: a Kindle fő kernel (main_kernel) és az ehhez tartozó fő partíció (mmcblk0p1) mellett található egy diagnosztikus kernel (diags_kernel) és egy diagnosztikus partíció (mmcblk0p2). Nekünk csak ez a két páros érdekes, mert ezeket (vagy ezek valamelyikét) kell majd újraírnunk a helyreállítás során. A rendszer többi összetevőjével és partíciójával nem kell törődnünk.

II. Az előkészületek

Ahhoz, hogy a helyreállítás flottul menjen érdemes minden szükséges programot, drivert és információt előkészítenünk.

1. Első lépésként töltsük a készüléket 24 órán át, lehetőleg ne a számítógép USB portján, hanem fali töltőn keresztül!

2. Derítsük ki a készülék sorozatszámát. Ha még megvan az eredeti doboz, akkor arról leolvashatjuk - az FSN felirat utáni  B betűvel kezdődő karaktersorozatot keressük. Ha a dobozt nem találjuk, de már regisztráltuk a készüléket, akkor az amazon.com oldalon a Your Account/Manage your Kindle/Manage your devices menüpont alatt lelhetünk rá a sorozatszámra. Ezt a számot írjuk be az Amazon Kindle root password tool oldalon, majd jegyezzük fel az itt kapott három jelszót - ezek közül tudunk majd valamelyikkel belépni a Kindle fájlrendszerébe.

3. Töltsük le a szükséges programokat és drivereket:

KindleSelectBoot: a három indulási mód közötti váltáshoz szükséges program.
FastBoot: Fastboot módban ezzel a programmal tudjuk majd újraírni a kerneleket.
Kindle-Fastboot.inf: a fastboot mód működéséhez szükséges driver
Libusb-win32-bin-1.2.6.0: a fastboot mód működéséhez szükséges másik driver
PuTTY: SSH kliens, ezzel a programmal tudunk majd belépni a Kindle Linux rendszerébe
Linux.inf: szintén egy driver, segítségével a Kindle-t hálózati meghajtóként tudjuk majd használni - ez szükséges a PuTTY működéséhez.

A becsomagolt állományokat bontsuk ki, és másoljuk jól elérhető helyre. A Fastboot programot a későbbi egyszerű használat kedvéért másoljuk a C:\fastboot könyvtárba.

4. Végül töltsük le a készülék firmware-jének megfelelő, a kernelek és partíciók adatait tartalmazó visszaállító állományokat:


Csomagoljuk ki a tömörített, .zip formátumú állományokat, majd - hogy később könnyű dolgunk legyen - mind a négy fájlt másoljuk be a C:\fastboot könyvtárba.

III. A visszaállítás

Kérek mindenkit, hogy mielőtt belevágna figyelmesen olvassa el elejétől a végéig a lentebb leírtakat!

1. A készülék elindítása Fastboot módban

a) Csatlakoztassuk a Kindle-t a számítógéphez. Ha még van benne élet, ekkor kigyullad az alsó LED.

b) Tartsuk benyomva a POWER gombot, amíg a LED kialszik. Ekkor - még lenyomva tartott POWER mellett! - nyomjuk meg és tartsuk lenyomva az ötirányú navigátor LEFELÉ gombját. Ezután először engedjük fel a POWER gombot, majd végül elengedhetjük a LEFELÉ-t is.  Ha mindent jól csináltunk a számítógép kijelzi, hogy új USB/HID device hardvert talált.

c) Indítsuk el a KindleSelectBoot csomagból kibontott MfgTool.exe programot. Nyomjuk meg a Scan devices gombot, ekkor a bal felső ablakban a programnak ki kell jeleznie, hogy 'HID-compliant' eszközt észlelt. A bal alsó legördülő menüből válasszuk ki a Kindle fastboot módot, majd klikkeljünk a Start gombra.



d) A számítógépnek ismét jeleznie kell, hogy új hardvert talált. Sajnos alaphelyzetben az ennek kezeléséhez szükséges driverek hiányoznak a rendszerből, ezt most pótolnunk kell. A felugró drivertelepítő ablakban válasszuk a haladó módot, majd keressük meg az előzőekben letöltött Kindle-Fastboot.inf fájlt és válasszuk ki. Miután ez települt, valószínűleg még reklamálni fog a rendszer, hogy hiányzik a libusb0.sys állomány is - ezt a kibontott libusb-win32-bin-1.2.6.0 csomag bin/x86/ könyvtárában találjuk. Elképzelhető, hogy a gép egy újraindítást javasol, ezt nyugodtan engedhetjük neki, majd újraindulás után az a) ponttól ismételjük meg a teendőket - természetesen ekkor a drivertelepítés már nem lesz szükséges.
Ha a drivereket sikerült telepítenünk az egész folyamat egyik legnehezebb részén vagyunk túl. Ha sikeresek voltunk az Eszközkezelőben (a Start menü/Vezérlőpult/Rendszer/Hardver menüpont alatt található) találnunk kell egy Kindle-Fastboot eszközt, és végre nekiállhatunk az érdemi helyreállításnak.

2. A két kernel és a diagnosztikus partíció felírása

Nyomjuk meg a Windows+R gombokat, ezzel beléptünk a Windows parancssorába. Váltsunk át a főkönyvtárba a cd \ paranccsal, majd lépjünk be a fastboot könytárba cd fastboot paranccsal. Most következik a fő és diagnosztikus kernel, valamint a diagnosztikus kernel felírása a készülékre. Ehhez sorban a következő parancsokat kell begépelnünk:

fastboot flash diags mmcblk0p2.img 

fastboot flash diags_kernel diags_kernel.img 

fastboot flash kernel main_kernel.img




A fastboot OKAY és finished üzenetekkel szépen kijelzi, ha sikeresek voltunk. Ha valamit véletlenül elgépeltünk, nyugodtan próbálkozzunk újra.

Ha a fastboot flash funkciója nem lenne méretkorlátos, akkor a főpartíciót is egyszerűen felírhatnánk vele, sajnos azonban a 350 Mb-s állománnyal nem boldogul, így tovább kell lépnünk. Írjuk be sorban a következőket:

fastboot setvar bootmode diags

fastboot reboot

Ezután a készüléknek újra kell indulnia, újraindulás után a diagnosztikus menüben találjuk magunkat.



3. A fő partíció felírása

a) A menüből válasszuk ki az U) USB Device mode menüpontot. Ekkor a számítógépnek fel kell ismernie a Kindle-t és hagyományos USB eszközként kell mutatnia azt - mint amikor egy jól működő Kindle-t csatlakoztatunk. Másoljuk át a mmcblk0p1.img állományt a Kindle főkönyvtárába. Ha vannak fontos dokumentumok a készüléken most itt a lehetőség, hogy lementsük őket! Végül válasszuk le a Kindle-t a PC-ről (Hardver biztonságos eltávolítása). Ha minden jól ment, most megint a diagnosztikus rész főmenüjében kell lennünk.

Előfordulhat, hogy nem működik az USB device mód. Nem kell kétségbe esnünk, szerencsére létezik kerülőút:
Töltsük le és telepítsük a WinSCP nevű programot. Egy kicsit ugorjunk előre a leírásban, és végezzük el a lentebb következő 3/b,c,d pontokban leírtakat, majd térjünk ide vissza. Indítsuk el a WinSCP-t. A felugró ablakban a File protocolt állítsuk át SCP-re, a Host name legyen 192.168.15.244, a Port number 22, a User name root, a password pedig a korábban már felírt három jelszó valamelyike. Ha beírtuk ezen adatokat kattintsunk a Login gombra.



Egy Total Commanderre hasonlító kétablakos felület fog megjelenni. Bal oldalon állítsuk be a C:\Fastboot könytárat, jobb oldalon a mnt/us/ mappát, majd előbbiből másoljuk át az utóbbiba az mmcblk0p1.img fájlt.



Ezután az egér jobb gombjával kattintsunk a bal ablak felett található 'root@192.168.15.244' feliratra és válasszuk ki a Disconnect parancsot, majd ezt követően zárjuk be a Close-al a programot. Ha mindezzel kész vagyunk ugorjunk a leírás 3/e pontjára.



b) A következő lépés az USBNet elindítása, ez szükséges ahhoz, hogy a számítógép hálózati meghajtóként ismerje fel a Kindle-t. Sorban válasszuk a következő menüpontokat:

N) Misc individual diagnostics
U) Utilities
Z) Enable USBnet
X) Exit - FW RIGHT to exit

c) A számítógépnek ekkor ismét jeleznie kell, hogy új eszközt talált. Természetesen alapból ehhez sem rendelkezik driverrel a Windows, ennek korrigálásához a felugró drivertelepítő ablak haladó módjában válasszuk ki a linux.inf fájlt. Miután a driver felment, megjelenik egy Linux USB Ethernet/RNDIS Gadget nevű eszköz.




d) Lépjünk be a Start menü/Vezérlőpult/Hálózati kapcsolatok menübe és válasszuk ki a Linux USB Ethernet/RNDIS Gadget eszközt. A jobb egérgombra felugró menüből válasszuk a Tulajdonságok pontot, a következő felugró ablakban a TCP/IP Internet Protokollt,  majd itt is kattintsunk a Tulajdonságokra. A feljövő ablakban állítsuk be be IP címnek a következőt: 192.168.15.201




e) Indítsuk el a PuTTY programot. A felugró ablakban a Host Name (or IP Adress) legyen 192.168.15.244, a Port 22. Kattintsunk az Open gombra. Ha eddig mindent jól csináltunk egy parancssoros ablak fog megjelenni.



f) A login as: után írjuk felhasználónévként: root. Annak idején felírtunk három jelszót, ezeket valamelyike lesz a password. Ha sikerült bejelentkeznünk azt a program egy üdvözlőszöveggel jelzi.

g) Most jön a lényeg, másoljuk fel a fő partíciót a Kindle-re. Ehhez a következő parancsot írjuk be:

dd if=/mnt/us/mmcblk0p1.img of=/dev/mmcblk0p1 bs=4K 

Mivel nagyméretű állományról van szó a másolás jó ideig eltarthat, ne ijedjünk meg, ha úgy tűnne, mintha lefagyott volna a PuTTY.



A következő két parancs nem feltétlenül szükséges (sőt van aki az elsőt kifejezetten nem ajánlja). Ha elsőre nem indulna újra a Kindle vagy a Your Kindle Needs repair képernyő jelenne meg, akkor egy második körben térjünk vissza a PuTTY-hoz és csak ekkor használjuk őket:

dd if=/dev/zero of=/dev/mmcblk0p3 bs=4K count=1K

echo 0>/var/local/upstart/lab126_gui.restarts       

h) Most ugrik a majom a vízbe, azaz mindjárt kiderül eredményes volt-e a beavatkozásunk. Gépeljük be a következő parancsokat:

rm /mnt/us/ENABLE_DIAGS

Elképzelhető, hogy ekkor a PuTTY kiír egy No such file or directory végű üzenetet, ezzel nem kell törődnünk.

idme -d --bootmode main

reboot

A készülék remélhetőleg újraindul. Ha meglátjuk a fa alatt olvasó fiút nyertünk!



Mint a leírás elején említettem nem biztos, hogy minden lépésre szükségünk van. Jó esély van arra, hogy a készülék 'meghalását' csak a fő partíció (mmcblk0p1) sérülése okozta, ezért első lépésben érdemes megpróbálni csak ennek az újraírását. Ehhez menjünk végig a leírás 1/a,b,c pontjain, de az utóbbiban az MfgTool-ban a kindle fastboot helyett a kindle diags opciót válasszuk. A készülék diagnosztikus módban fog újraindulni, innentől pedig követhetjük a 3. pontban leírtakat.

A fenti algoritmus a Mobileread.com oldal Kindle Developer 's Corner szekciójában található 'Small debricking guide for noobs' fórum első bejegyzéséből letölthető leíráson alapul. Ugyancsak itt lelhetünk rá a 'Simple debricking method for K5-Touch, K4-mini, & K3-Keyboard' fórumra, amely szintén számos hasznos információt tartalmaz.

2 megjegyzés:

  1. Helló! Nekem K3-mam van. Azzal nem működnének ezek a lépések? Sajnos teljesen meg van halva. Semmire nem reagál már. Bizonyára a hackelések miatt. Nagyon nagy szükségem lenne rá. 5let?

    VálaszTörlés
  2. Ehh, most írtam az Amazonnak és küldenek egy másik Kindlet pedig már rég lejárt a garancia.

    VálaszTörlés