O veliké bitvě s MK802IV (přechod z Androidu na Linux).

První setkání

Před nedávnem jsem si pořídil Rikomagic Android MK802 IV (Quad core; 2GB RAM) klíčenku s HDMI výstupem původně pravděpodobně určenou pro přebudování hloupé televize na chytrou a dumal co s ní. Takto zní věta až příliš poeticky, protože ve skutečnosti jsem samozřejmě už před nákupem věděl, že bez Linuxu uvnitř se z celé hračky stane krám, na věky odsouzený ležet v šuplíku anebo být darován komusi, kdo jej dokáže využít lépe.

Samozřejmě jsem nevydržel ani minutu …. Okamžitě po příchodu domů, v den vyzvednutí z obchodu, už jsem seděl u TV a prováděl test všech funkcí a příslušenství.

Zatím šlo všechno hladce. Odezva (Androidu) byla bez problémů, wifi taktéž a po té co jsem přeskákal otravnou registraci s vymyšlenými emaily se mi dokonce podařilo nainstalovat pár aplikací (terminál, sshčko, vnc). Myš i klávesnice fungovaly taky.

Hurá, byl jsem spokojený. Nic jiného než to, že všechno bude šlapat jak hodinky, jsem po pravdě ani nečekal. Pro tuto chvíli stačilo. Víc času nezbylo.

Jedna zrada mi ale přece jen malinko vrtala hlavou (a prozatím vrtá dodnes). Přestože má zařízení celkem 3 USB porty (2x mirko, 1x klasický), veškeré příslušenství fungovalo pouze v tom druhém uvedeném.

Bylo to trochu otravné, protože USB hub nebyl po ruce a ani ho neplánuju kupovat. No uznejte k čemu myš v konzoli J? Android ale zdá se tak přívětivý k milovníkům klávesových zkratek není, takže jsem každou chvilku, musel přehazovat klávesnici s myší a opačně. Přiznávám, že v té chvíli jsem se začal trochu bát o konektory, kolik toho ještě snesou. Jak se později ukázalo, čekalo mne ještě pár horších obav než jen ulomený USB konektor.

 

První FLASH!

Po pár dnech (kdy se zařízení jen tak nečinně flákalo) jsem se k němu opět dostal, promnul prsty a hurá na Google. Začal jsem hledat jak do něj dostat Linux. To jsem samozřejmě dělal už před nákupem, ale znáte to, jen tak zběžně. Teď šlo do tuhého a já s hrůzou zjišťoval, že to nebude tak triviální. Ono to nakonec triviální bylo, ale teď když už to znám – víte jak je to o té bitvě a generálovi…

Začal jsem lehce nesměle a flashnul jsem si novou verzi droida. Na zkoušku. Ta byla k dostání na webu výrobce i s perfektně fungujícím příslušenstvím. Takže stačilo stáhnout flashovací utilitu, ROMku a hurá do toho.

Před zahájením bylo ale nutné dostat zařízení do bootloader módu. Hm… vědět tenkrát co vím teď. Na netu jsem našel poměrně osvědčený postup. Při bootu stisknout a podržet resetovací tlačítko, takže hurá na to. Hm…. Jenže tlačítko bylo schované pod krytem a dosažitelné pouze tenkým drátkem. Kancelářské sponky u nás doma snad už na jiné věci ani nepoužíváme. Takže… zařízení mělo přejít do bootloader módu a já přešel do módu chobotnice.  Jednou rukou jsem držel zařízení na boku tak, aby byl dostupný resetovací otvor, druhou rukou jsem se snažil trefit resetovací tlačítko, třetí rukou jsem ve stejné chvíli zapojil přívod napájení a čtvrtou rukou jsem si rozrušeně drbal vlasy na hlavě. Nicméně výsledek se dostavil – asi na 10 pokus.  Widle zapípaly „tudu“, flashovací utilitka zezelenala a hlásila, že zařízení je připravené na flash. Později jsem zjistil, že to jde i bez těch widlí i bez té chobotnice, ale o tom později. V této fázi už mne neděsilo jen to vylomené USB, ale začal jsem se bát i o resetovací tlačítko. Nějak jsem z hlavy nemohl dostat ten výkřik, o který jsem omylem v diskuzích zavadil.  “Help me, My HW button is caput!“

 

Flash šel rychle. Nejprve přenos dat do zařízení, pak kontrola konzistence a nakonec reboot. Šlo to jako po másle. Bezdotyková samoobsluha. Než jsem se nadál, přešlo to z bootloader mode do recovery mode a pak do standardního bootu.

Abyste tomu lépe rozuměli. V bootloader mode jde nahrávat firmware, ale nahráváte jej do recovery partice. Následně pak přejde systém do recovery módu ve kterém se spustí jakási androidí aplikace, která aplikuje novou ROM tam, kam patří. Tedy z oblasti RECOVERY do oblasti DATA (nejsem v tom příliš kovaný, takže je to víceméně laický popis).  Chvilku to cosi chroustalo, pak se to resetovalo a následně najel nový čistý droid. V úplně fungl novém kabátku.

V té chvíli jsem poprvé zalitoval, že jsem si nepoznamenal heslo ke storu, ale co už. Chyby jsou přece od toho, aby se opakovaly. Takže jsem znovu vygeneroval nějaký ten náhodný mail, náhodné heslo, přihlásil se, stáhnul ssh, ftp, vnc a pokračoval ve výzkumu. Až zase nějaký chytrák louskne databázi hesel od gmailu bude určitě machrovat, že jsou tam samé stupidity jako 1q2w3e4 atp. Tak to jsem byl já vážení).

 

Zařízení 1 Člověk 0

Jak flashnout oficiální ROM jsem už tedy věděl. Zbývalo zjistit jak tam dostat tu neoficiální. A co myslíte? Šel jsem na to od lesa. Prolezl pár fór, pročetl pár postupů, postahoval pár flash utilit a ROMek – dá-li se tomu takto zjednodušeně říkat – a začal laborovat. Bohužel co vypadalo na první pohled triviálně, na ten druhý triviální nebylo.

Hned první problém – jak nečekané – byly widle. Na linux v dané chvíli žádný funkční postup neexistoval a v těch pro widle stačilo dle diskuzí spustit utilitu, přejít do bootloader mode a flashnout přiloženou ROM. Jenže mi ta hloupá utilita žádné zařízení, které by se dalo flashnout ne a ne nalézt. Naštěstí mám jako každý správný linuxák doma nepřeberné množství widlí  J.

Takže jsem začal pracovními W7. Nic.

Domácími W8. Pouze částečný úspěch.

Vista od prcků. Nic.

 

Po 35 chobotnici se mi o tom výkřiku (My HW button is caput!) začínalo v noci zdát. Dokonce jsem ze zoufalství začínal uvažovat, že ze šuplíku vytáhnu XPčka a vyrobím trialboot . Linux/W8/WXp.

Celý problém jak se to pro tuto chvíli jevilo, byl v ovladačích. 2 ze tří domácích strojů byly x64 což z pohledu ovladačů není nikdy veselá zpráva, takže jsem pomalu začínal ztrácet naději, že se to kdy vůbec podaří. Jen ty W8 se tvářily, že by se z nich možná mohlo podařit něco vydolovat, takže jsem se pak už zaměřil pouze na ně. Nakonec se mé tušení potvrdilo. Chvilku trvalo, než mi došlo kde je zakopaný pes, ale tak už to ve světě chodí.

Zařízení má dva módy a tudíž i 2 druhy ovladačů. V tom prvním (standardním) se nahrávají ovladače pro cosi jako flash disk, ale i s těmi si poradily jen Visty a W7. W8 nic. Jak jsem později zjistil, tento mód je pro flash nepoužitelný.

V tom druhém (recovery) zase opačně. Jediný systém, který načetl ovladač, byly W8.

Dovedete si představit, kolikrát jsem ještě musel spáchat chobotnici, než jsem vychytal tu správnou kombinaci OS, Driver, Flash utility, device mode? Ještě teď když si na to vzpomenu, se mi dělá zle… a tomu debilnímu tlačítku určitě taky!

Je to tak. Ono totiž ani s tou flash utilitou to nebyla žádná výhra. Na mk802iv funguje totiž pouze jediná. V přesně specifikované verzi.  Pokud použijete stejnou (vzhledem) s jiným názvem, nebo stejnou v jiné verzi, máte utrum. Ani hovno Jaromíre.

Došel mi čas na blbosti a já se musel na pár týdnů ponořit do práce. Nezbývala mi ani minuta volna. Během toho jsem denně přemýšlel nad tím, zda mám tu potvoru rozšlapat, darovat, vrátit anebo se jí ještě pokusit zlomit. Celou dobu jsem bručel jako medvěd, na lidi okolo jsem byl hnusný a na věci taky. Plyšák, který se mi přimotal pod nohy dostal takový kopanec, že přeletěl půl bytu.

Zařízení 1 Člověk 1

Po pár dnech mi to samozřejmě nedalo a pustil jsem se znova do boje. Už jsem tušil, že flashnout se mi to podaří pouze na W8 a taky to, že asi pouze v bootloader mode. První objev byl učiněn a druhý se blížil. Postahoval a nainstaloval jsem všelijaké ovladače a začal laborovat, která že flash utilita je ta pravá. Už jsem věděl, že originálka od Rikomagic to není. Adb.exe taky neuspělo.  ROM Flash Tool, FinelessFlashTool, RockChip_Batch_Tool, RKAndroidTool ve1.35 nic a všechno podobné smetí taky nic. Až RKAndroidTool ve1.37 bigno!!! Konečně zelená. Konečně zablikalo světýlko naděje. Ono to možná přece jen půjde!

 

Během tohoto laborování jsem s hrůzou zjistil, že chobotnici netřeba. Android, pokud je rootnutý, umožňuje v terminálu spustit příkaz, kterým automaticky přejde do bootloader modu. A je po chobotnici! Málem mne trefil šlak!!!.

droid:~$ su
droid:~# reboot bootloader

Zdálo se, že od této chvíle je reset button zachráněný.  Konečně jsem mohl jít s klidem spát. Tu noc se nikomu nemohly zdát hezčí sny než mi. Jak instaluju LAMP,  Transmission, Ssh… Už jsem se na něj v duchu přihlašoval z dovolené a nahrával data… super! Spotřeba 0, cena srandovní. Funkčnost nekonečná!

 

Zařízení vrací úder

Na pár dalších dnů mne zase pohltila práce a další povinnosti, ale den, kdy bude trocha volna, už se blížil. Ufff kde jsou ty časy kdy zbylo na blbosti vždycky času dost!

Konečně bylo možné pokračovat v tom triviálním postupu. Připojte zařízení, přepněte do bootloader modu, flashněte ROM. Konečně jsem u kroku 3, Flashněte ROM.

Ale ani to nebylo tak jednoduché. Postupy jsou v podstatě dva. První ponechá zařízení v duálním stavu. Je možné bootovat jak do linuxu tak do androida (neotestováno). Druhý smázne kompletně celé zařízení a vše nainstaluje znova “po svém“.

Jak se dalo čekat, první flash dopladnul bídně. Po resetu zařízení nabootoval zase jen android. Ani druhý nápad nebyl ten pravý. Dle postupu se totiž linux naloaduje až ve chvíli, kdy vyvoláte obnovu z recovery mode. Když jsem tedy zkusil boot with recovery, nenabootoval linux jak jsem očekával, ale zase droid. Celý vynulovaný, takže hurá na registraci do appstoru podesáté. Ta registrace sice nebyla povinná, ale samozřejmě že po recovery zmizel terminál a na výběr tak byla buď registrace, nebo chobotnice. Jinak se do bootloader modu doatat nedá L.

Nebudu to dále natahovat, asi tak 20 pokusů se nezdařilo a tak jsem první variantu vzdal. Šel jsem do úplného flashe. Prostě tu mrchu buď zlomím anebo úplně odrovnám.

 

Útok zahájen

Něco pozitivního z předchozího snažení ale přecen jen vzniklo. Při jednom pokusu se mi podařilo nabootovat linux . Sice do nepoužitelného stavu, ale podařilo. Opět blýskla jiskra naděje. Opět jsem začínal tušit, kde by mohl být problém a trochu se orientovat ve flash oblastech zařízení.

Zjednodušeně řečeno, zařízení má jedno velké 16GB úložiště a to je virtuálně rozsekáno na něco jako partice. Máme zde boot partici, recovery partici, pratici pro data atd… Každá partice kdesi začíná a kdesi končí. Po sem to zní rozumně že? Mi ale chvilku trvalo než jsem si to uvědomil. To kde jednotlivá partice začíná a končí, definujete v bootovacích parametrech uložených v zařízení a samozřejmě při flashování. Musíte hlídat, aby recovery image který do zařízení nahráváte, nepřetekl do jiné části flash… to mi ale v podstatě došlo až při práci s linuxovou utilitou, na kterou jsem narazil až později. Ta vždy vyžadovala přesné umístění v paměti od pozice – do pozice.

Celou předchozí dobu jsem se snažil přepisovat pouze recovery partici a to byl ten problém. Neměl jsem vůbec tušení, jak to z ní má nabootovat, takže jsem plynule přešel na postup číslo dvě – flashnout všechny části. Jak boot, tak recovery, tak data atd…

A tu vyvstal poslední problém. Zařízení bylo jak to říct kulantně? Přeflashované. To co před chvílí končilo úspěchem, teď končilo chybou. Pokus o nahrání dat do recovery partice skončil na err, přitom před malou chvíli ta samá operace procházela bez problémů.  WTF? Nechápal jsem co se děje. Na toto už jsem vážně neměl nervy… šel jsem spát.

 

Kupředu zpět

Celou noc mi to vrtalo hlavou, ale řešení mne napadlo téměř okamžitě. Zkusím ho flashnout oficiální utilitou zpět do původního stavu i s androidem.

Jenže i oficiální flash končil chybou. Že by bylo definitivně po něm? Začal jsem přemýšlet nad tím, kolik flashů takové zařízení vůbec snese, zda jsem nevyčerpal jeho HW limit. Možná se může flashování udělat je 20x a pak se paměť definitivně poškodí tak, že už do ní nelze nic nahrát?

Naštěstí to nebyla pravda. Vzhledem k tomu, že už jsem ho mentálně odepsal (zařadil mezi nepoužitelné mrtvoly), obezřetnost, se kterou jsem k němu přistupoval ze začátku, byla ta tam. Ve flashovací utilitě byla volba Erase IDB. Co to asi tak smaže? Za normálních okolností bych se toho ani nedotknul ale teď? Hurá do akce. Erase… ať je definitivně vymalováno.

A světe div se, ono ho to nezabilo ale naopak. Opět mi došlo další objevné zjištění. Erase IDB je něco jako formátování disku. Fuknce tedy zformátovala flash na kterou bylo od této chvíle zase možné bez chyb zapisovat. Neváhal jsem ani vteřinu a hned na něj zpět plácnul originální SW. Neuvěřitelné. Po měsíci bitev jsem byl na začátku J. Po bootu na mne zase z vesela blikal ten debilní android.

 

Poslední zteč

Ten měsíc ale nakonec nebyl tak zbytečný. Už jsem v podstatě všechno věděl. Jak ho připojit k počítači, jak ho dostat do flash modu, jakou flash utilitu použít, jak je rozdělená paměť a k čemu slouží, jak ho dostat zpět do normálního stavu, když se něco zmrví. Finální fáze tedy mohla začít. Stáhnul jsem kompletní linuxovou instalaci (loader, parametry, kernel, boot atd…) a postupně flashnul každou její část na své místo, pohrál jsem si taky s Address parametrem tak ať odpovídá počáteční hodnotě(linuxová utilita vyžaduje nejen start address ale i stop address) a co myslíte?

A měl ho tam!!

Poslední flash a nabootoval linux včetně grafické konzole. Pak už jen zbývalo změnit hesla, doinstalovat pár nezbytných aplikací, zkonfigurovat wifi aby sama najížděla po bootu a hotovo. Výsledek si můžete prohlédnout zde: http://mmartin.wport.cz/

Co se týče provozu, nejedná se zdaleka o nejrychlejší linux jaký jsem kdy viděl, ale na web jak vidno to bohatě stačí. Na sosání dat přes transmission taky, takže úkol splněn.

Domácí NAS server za pár kaček, který nežere téměř žádnou elektřinu, je na světě a dostupný z celého světa. Pokud se někdo z vás pokusíte vydat obdobnou cestou, pak vám přeji mnoho zdaru a PS: mile rád prozradím detaily, kterými jsem v článku nechtěl otravovat.

 

4 Replies to “O veliké bitvě s MK802IV (přechod z Androidu na Linux).”

  1. Ahoj.
    Mám doma podobný kúsok a už dosť dlho leží ľadom, lebo Android je nepoužiteľný (aspoň pre mňa) a linux sa mi tam zatiaľ nepodarilo dostať.
    Je ten návod pre prehodenie na linuxe (žiadny môj win mimo virtualizácie v okolí nemám) zložitý? Dal by sa poskytnúť? Prípadne ktorým návodom by sa dalo riadiť. Videl som ich viac, ale niektoré si priamo odporujú.
    Stratil som sa i v takej jednoduchej veci, že ktorá je to vlastne architektúra amrel, alebo amrhf?

  2. Nevím přesně jakou krabičku máte doma, můžete to nějak blíže specifikovat?
    Návod je víceméně sepsaný v článku. Chybí asi pouze konkrétní odkazy na konkrétní ROMky a aplikace.

    Co se mého MK802IV týče, po té co jsem se naotravoval s instalací jsem zjistil, že vše potřebné se dá stáhout odtud:
    http://home.g8.net/index.php/downloads

  3. Ospravedlňujem sa.
    MK802IV s BT s procesorom Rk3188 (aspoň myslím). Väčšina návodov, ako ten odkazovaný je na procesor Rk3066 a zas niekde inde sa píše, že nie sú zameniteľné. Tak som sa akosi neodvážil.

  4. lscpu mi vypisuje:
    Architecture: armv7l
    Byte Order: Little Endian
    CPU(s): 4
    On-line CPU(s) list: 0-3
    Thread(s) per core: 1
    Core(s) per socket: 1
    Socket(s): 4

    Chip mám 3188 takže si myslím že se jedná o identické zařízení. Já jej kupoval na Alza.cz

    Pokud máte stejné zařízení, tak si myslím že tam linux bez problémů dostanete.

    a) připojte k windows nebo linuxu

    b) přepněte zařízení do bootloader modu
    buď v androídím termínálu
    droid:~$ su
    droid:~# reboot bootloader
    nebo chobotnice (odpojit od napájení, stisknout reset tlačítko, držet, připojit napájení)

    v případě windows
    c) ověřte že se nainstalovaly ovladače, pokud ne, zkuste je pohledat někde na internetu (v zařízení je musíte vidět)

    d) Stáhněte a spusťte RKAndroidTool v1.37 pokud je vše ok, v aplikaci musíte vidět že je zařízení připojeno. (dole v oznamovací oblasti aplikace)

    e) flashněte tam picuntu image (boot, recovery, data atd…)

    f) pokud chcete vše uvést do původního stavu (android) můžete vždy použít k androidu dodávané utility na flashování. Vrátit se zpět mi šlo vždy, ve všech fázích hraní si se zařízením.

    v případě linuxu obdobný postup, jen k flashování použíjte linuxový nástroj
    rkflashtool
    https://github.com/crewrktablets/rkflashtools

    nebo dívám se, že je nějaký mnou neověřený postup:
    git clone https://github.com/linuxerwang/rkflashkit
    cd rkflashkit
    ./waf debian
    sudo apt-get install python-gtk2
    sudo dpkg -i rkflashkit_0.1.1_all.deb

    Co se týče formátování sd karty atp, to podle mne není zapotřebí do té chvíle, než budete potřebovat další místo.

Leave a Reply

Your email address will not be published. Required fields are marked *