HTC Desire HD root
8. Července 2013
Po několika letech používání telefonu HTC desire HD vyšlo najevo, že HTC už nemá v úmyslu vydávat pro své uživatele upgrade systému, ani update žádné další systémové aplikace. Záruka vypršela a přišel čas na root. Desire HD je dobrý telefon. Za celou dobu co jej mám, jsem neměl žádný závažný problém, všechno funguje v rámci specifikací. Jedinou vadou na kráse byla spousta zbytečných, předinstalovaných aplikací typu Facebook, Twitter, …, které jsem nikdy nepoužíval a nejdou odinstalovat. Jejich úlohou proto bylo pouze zabírat v paměti místo a ukrajovat čím dál víc díky aktualizacím. Velice dobře zvládaly běžet v pozadí a zaměstnávat procesor a operační paměť, kterou bych ale rád využil jinak. A nakonec jejich ikonky zaplňovaly menu a to mě postupně štvalo víc a víc, až dokud jsem je všechny nesmazal po rootu.
Rootu androidu verze 2.3.5 jsem dosáhl po odemčení bootloaderu pomocí stránek www.htcdev.com. Na těchto stránkách se po registraci dozvíte, jak odemknout bootloader a bude vám poskytnut návod krok po kroku.
Co se nedozvíte je, že potřebujete počítač s Windows. Že upgradování HBOOT (pokud to váš telefon potřebuje), se neprojeví v informacích o softwaru telefonu, kde vám zůstane staré číslo, i když máte flashnutý nový HBOOT. Neřeknou vám, že aby flash správně proběhl, musíte počítač odpojit od internetu, aby během připojení telefonu v průběhu flashování nehledal driver na Windows update. A nedozvíte se, že budete potřebovat sehnat knihovnu adbwinapi.dll, která se nainstaluje společně s nějakým ovladačem adb, jako například android sdk, který ovšem potřebuje mít nainstalovanou Javu, a tuto knihovnu pak musíte nakopírovat do složky, kde provádíte krok se získáním tokenu pomocí programu fastboot.
Po odemčení bootloaderu jsem v celku bezproblémově získal root pomocí programu Kingo root. Ten opět vyžaduje počítač s Windows. Rootu vás poté umí i zbavit.
Teď přišla na řadu zábavnější část. Smazání všech zbytečností, které jsem nechtěl v telefonu mít. Níže najdete seznam aplikací, které jsem stylem pokus/omyl odinstaloval a experimentálně tak ověřil, že nemají zásadní vliv na fungování systému:
Mail
Streaming Media Player
Watch Widget
Trip Widget
Photo Widget
Music Widget
Mail Widget
com.htc.laputa.widget3d.navigate
YouTube
Quick Lookup
Voice Search (2x)
Wi-Fi Hotspot
HTC Likes
HTC Hub Sync Provider
Clock
Connected Media
Locations Launcher
Weather (3x)
Clock Widget
com.htc.locations.widget3d
Weather Widget
Weather Provider
Messages Widget
Flickr
Street View
Weather Agent Service
Talk
SoundHound
Picasa Web Albums
Locations
Location widget settings
Watch
Stock Widget
News & Weather
Maps (2x)
Calculator
Bookmark Widget
Twitter
Twitter Widget
Google Search (2x)
Task Manager
Calculator Widget
HTC weather sync provider
Transfer
Trends Widget
HTC Likes Widget
Location Picker
Reader
Facebook for HTC Sense
Stocks (2x)
News Widget
My Shelf
HTC Hub
Friends Stream Widget
Peep
Friends Stream
Facebook
News
Mazaní jsem prováděl pomocí aplikace System app remover k tomu určené, která si udržuje kopie smazaných programů a umožňuje je vrátit zpět. Jak je vidět, i bez výše vypsaných aplikací funguje můj telefon stejně jako před tím, dokonce rychleji.
Zřejmě půjde smazat ještě více předinstalovaného softwaru a co smažete závisí na tom, co nepotřebujete. Po odstranění ještě můžete z karty smazat složky, které těmto aplikacím patřily.
Pro maximální efekt, můžete poté, co telefon funguje podle vašich představ dlouhodobě, odstranit root a smazat i aplikace s ním spojené.
Během experimentování jsem zjistil, že smazání některých systémových aplikací, vede ke zmizení spodní lišty uživatelského rozhraní. Naštěstí tlačítka, i když nejsou vidět, fungují dál a aplikace lze obnovit ze zálohy. Opětovné nainstalování se někdy musí provádět na několik pokusů, protože některé aplikace na sobě zřejmě skrytě závisí a nemohou se vracet zpět nahodile. Na toto je dobrý seznam smazaných programů a možnost provádět hromadné zpětné nainstalování.
Pozor
Odinstalování systémové aplikace Wallpaper silně nedoporučuji. Tváří se nevinně, ale její odstranění má za následek vymazání několika dalších aplikací souvisejících se screenlockem. Konkrétně důležitého programu idlescreen_shortcut.apk. To způsobí, že po restartu se na obrazovce screenlocku nezobrazí odemykací kolečko a vám zůstane v ruce telefon, do kterého se nemůžete dostat.
Následovala několikahodinová cesta k navrácení těchto aplikací do systémové složky, aby se po hardresetu nainstalovaly zpět.
Úspěšné řešení je toto
Protože odinstalované aplikace se zálohovaly na SD kartu, bylo potřeba je vrátit je zpět na místo. Tím pádem by se po provedení hard resetu nainstalovaly automaticky zpět. Remover maže aplikace přímo ze složky /system/app, ze které se při hard resetu aplikace instalují, tudíž co v této složce není, nebude nainstalováno. Jenže telefon se nedal odemknout, protože nebyl způsob, jak projít přes screenlock. Jedinou další možností je použít ADB shell, který umí ovládat systém telefonu přes počítač připojený přes USB. K tomu je ale potřeba, aby v telefonu bylo zapnuté USB debugging. Ten ale byl vypnutý. Po několika hodinách pokusů jsem zjistil, že oficiální flashovací program ROM (RUU – Rom update utility), kterým jsem chtěl přeflashovat celou ROM telefonu do tovární podoby a který mimochodem nefungoval, sám od sebe zapne USB debugging, i když je v telefonu vypnutý.
Takže pokud zapnete flashovací program a necháte ho běžet, ale nezačnete flashovat, umožní vám to používat ADB shell. Následně vznikl problém, že příkaz adb push nefungoval. Z adb nešlo ani získat práva root pomocí adb root. Podle dostupných informací problém leží někde hluboko v systému a jeho řešení není snadné. Další cestou jak získat práva root přes ADB je přepnout se přímo do adb shellu a pracovat přímo v telefonu, kde získáte root práva příkazem su root. Tím ale ztratíte možnost používat příkaz adb push, protože se pracujete přímo v systému telefonu a ne v systému počítače. Protože aplikace nelze poslat z počítače, musí se zkopírovat přímo z SD karty v telefonu do vnitřní paměti telefonu. Android ovšem nemá příkaz cp, má pouze příkaz mv. A příkaz mv neumí přesouvat soubory mezi filesystémy a proto nelze použít na přesun souboru z karty do jiné paměti. Dalším zádrhelem je, že složka /system se musí připojit jako zapisovatelná pomocí příkazu mount -o remount,rw /system /system. Nakonec jsem zjistil, že příkaz cat, který slouží k vypsání obsahu souboru na nějaký výstup dokáže pracovat mezi filesystémy. Přesměrováním výstupu do vnitřní paměti a souboru, který chceme vytvořit funguje a soubory lze tímto způsobem kopírovat z SD karty do /system/app příkazy:
cat program.apk > /system/app/program.apk. Po nakopírování souborů zpět do systému je potřeba provést hard reset, aby se aplikace znovu nainstalovaly.
Během hard resetu jsem mimochodem objevil, že naflashovaný custom recovery, který odmítal fungovat, se objeví, pokud z původního továrního recovery, který se z nějakého důvodu nepřepsal i když měl, zvolíte možnost hard reset.