Oprava smartphonu Samsung Galaxy S3 GT-I9300

Samsung Galaxy S3 s křáplým sklíčkem
      5.3.2016 Po té, co mi zdechla eMMC fleška v HTC Sensation XE, jsem se dostal zase zpět k Samsungu, tentokráte k modelu Galaxy S3, třeba to do třetice vyjde. Telefon měl na předním sklíčku pořádného pavouka, ale OLED displej naštěstí přežil. Když jsem ho připojil na lab. zdroj, tak se sám od sebe zapnul, objevilo se asi na vteřinu úvodní logo a hned se restartoval. Proudový odběr dosahoval max. asi 0,65 A. Občas se mi dokonce na zlomek vteřiny povedlo dostat do recovery mode, čili hard brick to není. Telefon je jednoduše rozebíratelný pomocí šroubků, servisní manuál je zde. Na této stránce jsou popsány nejčastější příčiny problémů s napájením u Galaxy S3 a udivilo mě, že je mezi nimi i vadné tlačítko Power. Tak jsem ho propípnul a Bingo! Tlačítko vykazovalo v rozepnutém stavu odpor asi 10 Ω - taková banalita, až je to k neuvěření. Pro zajímavost jsem ho rozebral. Uvnitř obsahovalo miniaturní kovové planžetky, které se asi vymačkaly a nevracely do původní polohy nebo se tam dostal mezi ně nějaký bordel. Náhradní tlačítka (jakožto i obrovské množství dalších N.D. na Samsungy) jsou dostupná na eBay za dolar, hned jsem jedno objednal. Provizorně jsem tam připájel větší tlačítko, jelikož tak mrňavé nikde v šuplíku nemám.
      Pak už šel telefon normálně zapnout a bez problému nabootoval. Dotykovka taky fungovala. Výměna sklíčka ale není žádná prdel. Nějaké info jsem našel na bastlírně, lepší je skouknout tento videonávod. Zádrhel je v tom, že sklíčko je plošně lepené k displeji a velice dobře drží. Za studena ho patrně není možné nedestruktivně oddělit. Ohřátí horkým vzduchem výrazně pomůže, ale zas hrozí poškození OLED matice nebo dotykovky. To se mi bohužel přihodilo, když jsem začínal s odlepováním u horní strany, tak jsem foukačku podržel moc dlouho na místě a na displeji se objevil světlý flíček. Naštěstí se jen odbarvil nějaký pigment, který dělá černé kontrastní pozadí a samotné OLED buňky přežily a svítí - při zapnutém displeji to není moc vidět. To je holt poučení pro příště, myslím že už bych to podruhé zvládnul na 100%. Jakmile se mi povedlo odlípnout horní část v celé šířce, tak už to pak šlo docela dobře. Na spodní straně je třeba dát pozor na flexipásek a podsvětlení tlačítek. Pro následnou opravu jsem objednal to nejlevnější náhradní sklíčko a vyřezanou oboustrannou samolepku. Celoplošně sklíčko lepit nebudu, kdyby se náhodou zas rozbilo, bude další výměna o dost jednodušší. Také jsem slyšel, že nevytvrzené UV lepidlo je dost agresivní a pokud někam zateče a nevytvrdí se, může rozleptat i flexipásek...

Samsung Galaxy S3-inside Samsung Galaxy S3-inside Samsung Galaxy S3-processor board Samsung Galaxy S3-unglassed Samsung Galaxy S3-broken glass

      Bohužel dalším neduhem, kterým Galaxy S3 trpí, jsou umírající eMMC flash chipy (ano, už zase, prostě kurvítko). Pomocí aplikace eMMC Brickbug Check si můžete přímo v telefonu zkontrolovat, jestli je osazen nahnilým eMMC. Problém s předčasnou úmrtností by měla řešit (či spíše oddálit) aktualizace kernelu (resp. firmware eMMC, který do něj kernel při bootu zavádí) v Androidu 4.1.2. Já mám zrovna taky postižený model eMMC VTU00M s FW 0xF1 a těžko říct, kolik hodin si odkroutil s původním Androidem 4.0.4 než byl upgradován. Tak se už pomalu teoreticky připravuju na výměnu eMMC, podle tohoto videonávodu to nevypadá zas tak šíleně. Nová eMMC fleška KMVTU000LM-B503 i s předprogramovaným bootloaderem se dá koupit na Aliexpressu za necelých 8$. A i do prázdné paměti by měl jít dostat firmware přes SD kartu. No uvidíme, dávám tomu rudokorejskému nokovi rok, max. dva :)

      31.3.2016 Kolega z práce mi donesl na pokusy 3 vrchní díly z Galaxy S3 s rozbitými sklíčky. Jeden z nich měl i rozbitý displej, zbylé 2 normálně fungovaly. Pomocí horkovzdušné pistole Bosch s regulací teploty jsem opatrně rozbitá sklíčka sundal (pochopitelně jsem jako první zkusil ten vadný kus). Zjistil jsem, že optimální teplota vzduchu je 150°C, při které ještě dlouhodobě nedochází k žádné barevné změně displeje. Při zvýšení teploty na 180°C už začal displej asi po 5s světlat, přičemž procesu odlepování to nijak nepomohlo. Takže doporučuju nepřekračovat teplotu 150°C, na odlepení to stačí. Nejvíc času mi zabralo opatrné odlepení horního kraje. Ten jsem pak chytil do kleští a táhnul nahoru za současného postupného nahřívaní. Při tom je krásně vidět, jak mezi přední stranu displeje a lepidlo na sklíčku vniká vzduch a postupně se sklíčko i s vrstvou lepidla odlepuje. Chce to trpělivost a netáhnout příliš silně, aby sklo dál nepraskalo a nepoškodil se displej. U spodního okraje pozor na flexipásky a podsvětlovací fólie 2 dotykových tlačítek. Tentokrát se mi povedlo sundat obě sklíčka bez poškození displejů. Jedno sundání se základním očištěním mi zabralo 15 minut.

Samsung Galaxy S3-removing the glass Samsung Galaxy S3-unglassed Samsung Galaxy S3-unglassed

      1.4.2016 mi od Číňanů dorazilo náhradní sklíčko s oboustrannou samolepkou a tlačítko Power. Na základní desku jsem připájel tlačítko a vyzkoušel ho. Jelikož je displej k přednímu dílu docela pevně přilepen, vybral jsem si ten lepší kus od kolegy a přehodil do něj kamerky, repráček, vibrátor a všechny flexipásky ze svého kusu.

new power switch for Samsung Galaxy S3 Samsung Galaxy S3-soldered power switch on PCB Samsung Galaxy S3-glass, sticker and display

      Sloupnul jsem starou samolepku na přední straně a vyčistil přední plochu displeje. Z nové samolepky jsem napřed sloupnul zadní krycí fólii, nalepil na přední díl s displejem a pak strhnul přední krycí fólii. Ještě jsem dočistil poslední zrnka prachu a nalepil tam nové sklíčko. To mi zabralo celkem asi hodinu, protože jsem puntičkář a trval jsem na tom, aby byl povrch displeje dokonale čistý. Vypadá to docela dobře, dotykovka funguje. Objednal jsem si tedy další 2 sklíčka a samolepky na zbylé displeje. Také zkusím kámošovi přesklít Galaxy S4.
UPDATE: jak jsem později zjistil, tak samolepka od Číňana je moc tenká a občas se při prohnutí sklíčka zevnitř přilepí ve středu k displeji. Doporučuji tedy objednat rovnou 2 samolepky a nalepit je přes sebe. Totéž platí i pro samolepky na Galaxy S4.

Samsung Galaxy S3-glued sticker Samsung Galaxy S3-removing film from the sticker Samsung Galaxy S3-display with new glass with protective film Samsung Galaxy S3-display with new glass without protective film Samsung Galaxy S3-power on after glass replacement

      Telefon jsem smontoval dohromady a vložil do něj testovací baterku, kterou jsem za 40 Kč koupil na burze na Kolbence. Na to, že byla chudinka úplně vybitá, se drží docela dobře (po hodině čtení PDFka jsem na 90%). Nová náhradní je zatím na cestě. UPDATE: od tohoto podvodníka baterie určitě nekupujte, viz níže. Do kompletu mi tak už chybí jen zadní kryt... UPDATE: už jsem dostal od kámoše kryt-klapačku.

      27.5.2016 mi dorazila náhradní baterka od Číňana z eBay za 144 Kč. Nečekal jsem žádný zázrak, ale to, že bude mít menší výdrž, než stávající vyběhaná (avšak patrně originální) baterka z Kolbenky, mě kapánek zklamalo. Podle statistiky využití baterie v systému Android byla doba chodu displeje pouhých 3:02 hod. (při běžném čtení bez Wi-Fi/GSM/GPS) a celková spotřebovaná energie 789 mAh (baterka z Kolbenky dá kolem 1600 mAh a vydrží 2x déle). Navíc nová baterka ani neobsahuje NFC anténu. Tak jsem ji hodil do batohu jako zálohu pro případ nouze a Číňanovi za to vysolil na eBay negative feedback. Druhý den se hned ozval a škemral o revizi hodnocení. Když mi poslal plnou částku zpět na PayPal účet, tak jsem mu vyhověl. Nová originální baterka stojí kolem 250 Kč (už jsem ji sehnal od kolegy z práce).
UPDATE: později jsem provedl exaktní měření kapacity baterií pomocí dataloggeru a vyšlo mi 895 mAh; 3,37 Wh u baterky od Číňana, 1693 mAh; 6,35 Wh u staré baterky z Kolbenky a 2013 mAh; 7,60 Wh u nové origo baterky. Orientační údaj v Androidu tedy nebyl zas tak mimo...
      16.10.2021 Na blešáku U Elektry jsem v hrabárně za 10 Kč vylovil alternativní čínskou baterku Dejimax S3 2300 mAh bez RFID cívky. Při pohledu na kontakty bylo evidentní, že ještě nebyla nikdy použitá, tak jsem ji vzal. Byla vzorně nabitá na 50% (3,8 V) a měření na dataloggeru ukázalo celkem solidní kapacitu 2087 mAh a energii 7,91 Wh, takže ne každá čínská náhražka musí být špatná.

      30.9.2016 Ceny flash pamětí neustále klesají a tak jsem se rozhodl do telefonu koupit větší microSD kartu, aby bylo dost místa na mapy a MP3. Při hledání na netu jsem narazil na časté varování před nekompatabilitou zařízení podporujících jen SDHC karty (do 32 GB včetně) s novými kartami SDXC (64 GB a výše). Avšak zřejmě jde pouze o FUD, neboť někteří uživatelé popisují, že SDXC kartu rozjeli i ve starších zařízeních. Příliš jsem se po tom dál nepídil, v hardware nejspíš problém nebude (narozdíl od případu nekompatability SD zařízení a SDHC karet), jediná odlišnost je asi v tom, že SDXC karty používají defaultně souborový systém exFAT, avšak nic nám nebrání kartu přeformátovat na FAT32, kterou umí i starší zařízení. Může tomu bránit leda tak demence Windows, které odmítají naformátovat FAT32 oddíly větší než 32 GB, ale to řeší utilita FAT32Format nebo jiný OS. Koupil jsem si tedy paměťovou kartu Kingston Micro SDXC 64GB Class 10 UHS-I za 549 Kč, která měla na sobě překvapivě NTFS oddíl a přeformátoval ji na FAT32 s 32kB clustery. Karta funguje jak v telefonu, tak v 7 let staré externí USB 2.0 čtečce MSI StarReader Smart.

      11.6.2017 Při přehrávání hudby jsem zjistil, že sluchátkový jack je už kapánek vyčlochtaný a dochází tak k praskání a výpadkům zvuku. Telefon jsem rozebral a zkusil napružit kontakty v dutině jacku, ale jde to blbě, protože konektor je částečně zalitý v plastovém dílu krytu a bez hrubého násilí nejde vyndat. Určitého zlepšení jsem sice dosáhl, ale raději jsem u Číňana z eBay objednal kompletní plastový díl krytu s jackem a reproduktorkem za 39 Kč.

      9.8.2017 mi konečně přišel náhradní díl. Výměna je snadná (na pár minut). Stačí odšroubovat zadní kryt, odpojit konektor a plastový díl trochu zapáčit v krajích, vycvaknout a vyměnit. Nový jack i reproduktor fungují bezchybně.

      30.8.2021 Na radiojarmarku v Holicích jsem od šroťáka z Ostravy sehnal za stovku nefunkční Samsung Galaxy S3 na náhradní díly. S připojeným adaptérem ani s nabitou baterkou nejevil jakékoliv známky života, nicméně displej byl v pořádku a nebyl ani moc otlučený, takže jsem do něj přehodil základní desku ze svého telefonu. Nefunkční desku a staré plasty jsem uschoval, třeba se to bude někdy hodit. Získal jsem také náhradní originální baterku EB535163LU bez RFID cívky, která má podle dataloggeru ještě solidní kapacitu 1834 mAh a energii 6,76 Wh.

      9.11.2021 Dnes mi přišla SMS, že mobilní operátor T-Mobile (jako poslední) během listopadu vypne svou 3G síť. To se bohužel týká i tohoto telefonu. Sice se vyráběla i varianta GT-I9305 s podporou LTE, větší RAM a jiným CPU, ale ta nebyla určena pro evropský trh. Po letech tak asi bohužel budu muset se svou S3 odložit do šuplíku a migrovat všechny appky a jejich konfigurace na jiný telefon, nejspíš Lenovo K6.


Rootnutí a instalace CyanogenModu

      4.4.2016 Předpokládal jsem, že rootnutí telefonu bude brnkačka. Jako první jsem zkusil klikací aplikaci Kingo Android Root, která se mi však v průběhu procesu zasekávala: jednou při 10%, pak při 26%, nakonec se při 99% telefon přepnul do download módu, ale nic se nepřeneslo a opět to vytuhlo. Dále jsem zkusil zaručený postup přes Odin. Podle severského boha je pojmenován proprietární přenosový USB protokol a ovládací program od Samsungu. K tomu jsem stáhnul poslední verzi TWRP 3.0.1 Recovery image a nainstaloval Samsung USB ovladače. Pak jsem telefon přepnul do download módu (z vypnutého stavu) současným stiskem tlačítek Vol-, Home a Power (jakmile se rozsvítí na displeji logo, tak je třeba Power pustit a následně potvrdit tlačítkem Vol+ volbu "Volume up: Continue" a objeví se robot s nápisem "Downloading..."), spustil na PC Odina a zapojil USB kabel do telefonu. Odin rozpoznal telefon na virtuálním portu COM6. Nechal jsem zatržené volby "Auto Reboot" a "F. Reset Time", vybral jsem soubor twrp-3.0.1-0-i9300.img.tar tlačítkem "AP" a kliknul na "Start". Nějaká komunikace asi proběhla, ale operace okamžitě skončila chybou a na telefonu se vůbec neobjevil progress bar.


 <ID:0/006> Added!!
 <ID:0/006> Odin engine v(ID:3.1005)..
 <ID:0/006> File analysis..
 <ID:0/006> SetupConnection..
 <ID:0/006> Complete(Write) operation failed.
 <OSM> All threads completed. (succeed 0 / failed 1)

Vyndal a zandal jsem baterku a pokus opakoval. Zkoušel jsem i různé verze Odina, např. 3.10.6, 3.10, 3.09, 1.87, ale bez úspěchu. V některých případech se v logu navíc objevily zprávy:


 ...
 <ID:0/006> Initialization..
 <ID:0/006> Get PIT for mapping..
 <ID:0/006> Firmware update start..
 <ID:0/006> SingleDownload.
 <ID:0/006> recovery.img

aniž by se na telefonu objevil progress bar a zatuhly mi natvrdo Windowsy, takže jsem musel restartovat PC. Na Internetu i na XDA fóru má podobné problémy řada dalších uživatelů, někteří dokonce tvrdí, že je to problém USB kabelu, nikde sem však nenašel nějaké systémové řešení.
      UPDATE: na jiném PC s Windows XP-SP3 jsem taktéž vyzkoušel několik verzí Odina a po několika failech a zatuhnutích systému se překvapivě podařilo Recovery image flashnout. A to několikrát po sobě ve 2 různých verzích Odina 3.10.6 a 3.10. Ale po restartu Windows to už zase nešlo. Takže nedoporučuju s tím ztrácet čas a rovnou zkusit Heimdall.


 <ID:0/006> Added!!
 <ID:0/006> Odin v.3 engine (ID:6)..
 <ID:0/006> File analysis..
 <ID:0/006> SetupConnection..
 <ID:0/006> Initialzation..
 <ID:0/006> Get PIT for mapping..
 <ID:0/006> Firmware update start..
 <ID:0/006> SingleDownload.
 <ID:0/006> recovery.img
 <ID:0/006> NAND Write Start!!
 <ID:0/006> RQT_CLOSE !!
 <ID:0/006> RES OK !!
 <ID:0/006> Removed!!
 <ID:0/006> Remain Port ....  0
 <OSM> All threads completed. (succeed 1 / failed 0)

      Jako další pokus jsem vyzkoušel alternativní OpenSource ovládací program Heimdall, který je k dispozici pro Windows, Linux a Mac OS X. Nejprve jsem vyzkoušel Windowsovou verzi, jejíž součástí jsou i alternativní USB ovladače Zadig, které je třeba předem nainstalovat (WinUSB filtr pro zařízení Gadget Serial / Samsung Android Interface - tak se telefon hlásí v download módu). Program nešel spustit pod Windows XP, protože měl v PE hlavičce nastavenou min. verzi OS 6.0 (Vista), což jsem ale snadno napravil pomocí PEHDR a pak šla spustit alespoň konzolová verze. Bohužel po spuštění příkazu heimdall flash --RECOVERY recovery.img --verbose --no-reboot (pro Heimdall je třeba tar archiv rozbalit) se proces uploadu zasekl hned na 0% a opět se na telefonu nezobrazil progress bar. Zkusil jsem tedy linuxovou verzi pod Debianem a tam to běželo jako po másle, upload Recovery byl během pár vteřin hotový. UPDATE: Na PC s Windows 10 mi to fungovalo taky normálně.


 [  531.566799] usb 2-1.2: new high-speed USB device number 5 using ehci-pci
 [  531.654277] usb 2-1.2: New USB device found, idVendor=04e8, idProduct=685d
 [  531.654340] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
 [  531.654396] usb 2-1.2: Product: Gadget Serial
 [  531.654425] usb 2-1.2: Manufacturer: SAMSUNG
 [  531.654755] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device

 $ heimdall flash --RECOVERY recovery.img --verbose --no-reboot

 Heimdall v1.4.0
 Copyright (c) 2010-2013, Benjamin Dobell, Glass Echidna
 http://www.glassechidna.com.au/

 This software is provided free of charge. Copying and redistribution is
 encouraged.

 If you appreciate this software and you would like to support future
 development please consider donating:
 http://www.glassechidna.com.au/donate/

 Initialising connection...
 Detecting device...
       Manufacturer: "SAMSUNG"
            Product: "Gadget Serial"
             length: 18
       device class: 2
                S/N: 0
            VID:PID: 04E8:685D
          bcdDevice: 021B
    iMan:iProd:iSer: 1:2:0
           nb confs: 1

 interface[0].altsetting[0]: num endpoints = 1
    Class.SubClass.Protocol: 02.02.01
        endpoint[0].address: 83
            max packet size: 0010
           polling interval: 09

 interface[1].altsetting[0]: num endpoints = 2
    Class.SubClass.Protocol: 0A.00.00
        endpoint[0].address: 81
            max packet size: 0200
           polling interval: 00
        endpoint[1].address: 02
            max packet size: 0200
           polling interval: 00
 Claiming interface...
 Attempt failed. Detaching driver...
 Claiming interface again...
 Setting up interface...
 Initialising protocol...
 Protocol initialisation successful.
 Beginning session...

 Some devices may take up to 2 minutes to respond.
 Please be patient!

 Session begun.
 Downloading device's PIT file...
 PIT file download successful.

 Uploading RECOVERY
 0%, 15%, 31%, 46%, 62%, 77%, 93%, 100%
 RECOVERY upload successful

 Ending session...
 Releasing device interface...
 Re-attaching kernel driver...

      Telefon zůstane díky parametru --no-reboot dál v download módu a je bezprostředně nutné spustit Recovery režim, protože při normálním bootu by mohl oficiální systém změnu Recovery vrátit zase zpátky. Pokud vše proběhlo bez chyby, můžeme vyndat a zandat baterku a spustit Recovery současným stiskem tlačítek Vol+, Home a Power (jakmile se rozsvítí na displeji logo, tak je třeba Power pustit), po pár vteřinách by se měla objevit úvodní obrazovka TWRP a hlavní menu. Zde můžeme pod položkou Wipe vyčistit obsah Dalvik Cache a oddílů cache, System a data (předpokládám, že máte zálohováno), případně lze změnit typ souborového systému jednotlivých oddílů. Standardně se používá ext4, neoficiální verze TWRP a některé ROMky umí pracovat s oddíly data a cache zformátovanými na F2FS, který je lepší při zápisu do flash paměti. Dále přejdeme v hlavní menu na položku Install a vybereme soubor system image (ZIP archiv) alternativní ROMky z SD karty. Zde je poslední verze CyanogenMod 12.1 s Androidem Lollipop. Já jsem šel rovnou do novější verze 13.0.

- = CyanogenMod 13.0 = -

- = CyanogenMod 14.x = -

      Koncem září se pro Galaxy S3 objevily neoficiální ROMky (CM14) s novým OS Android Nougat 7.0. Zásadní novinky jsou např. vylepšení multitaskingu a režim zobrazení více oken (aplikací), nový JIT překladač, který by měl zvýšit rychlost a zmenšit velikost kódu, podpora nového Vulkan 3D API, zvýšení bezpečnosti, šifrování souborů a lepší přizpůsobitelnost GUI. Zatím jde o testovací verze, kde řada funkcí a periferií nefunguje korektně. Navíc některé aplikace nejsou s novým OS kompatabilní a bude třeba počkat na nové verze, takže zatím jsem žádnou z těchto ROMek nezkoušel.

Android/CyanogenMod - tipy a triky

      Pro začátek uvedu známé servisní kódy. Některé jsou generické, známé už od dob prvních tlačítkových mobilů, jiné jsou specifické podle výrobce a podle použité verze FW/OS. Na Internetu lze nalézt kódů více, ale zdaleka ne všechny fungují. Níže uvedené kódy, kromě resetů, jsem osobně vyzkoušel.

Servisní kódy (platné pro oficiální Android 4.3 Jelly Bean)

*#06# IMEI
*#0*# General test mode
*#0011# Service mode
*#0228# Battery status: capacity, voltage, temperature
*#0283# Audio loopback control
*#0808# USB setting
*#1111# SW version
*#1234# AP CP CSC version
*#2222# HW version
*#2663# TSP / TSK firmware update
*#7284# USB I2C
*#7353# Quick test menu
*#9090# Diag config
*#9900# System dump to SD
*#12580*369# Main version
*#87976633# Factory reset
*2767*3855# Full reset

Servisní kódy (platné pro CyanogenMod 13.0)

      Jak jsem dále zjistil, tak s novou verzí Androidu (CyanogenMod) nefungují některé výše uvedené servisní kódy, ale fungují zase jiné, další skryté zajímavosti zde. Dříve na starších verzích Androidu bylo možné pohodlně zadávat kódy pomocí aplikace Hidden Features, ale ta už v novém Androidu nefunguje, protože z bezpečnostních důvodů bylo zablokováno vytáčení čísel od aplikací třetích stran.

*#06# IMEI
*#*#0011#*#* Service mode
*#*#0228#*#* Antenna/ADC: battery voltage, temperature, Ant. RSSI
*#*#0283#*#* Audio loopback control
*#*#0599#*#* RRC(HSPA) control
*#*#1111#*#* FTA SW version
*#*#1575#*#* GPS test
*#*#2222#*#* FTA HW version
*#*#2263#*#* RF Band Selection
*#*#4636#*#* Information about Phone, Wi-Fi, Battery and Usage statistics
*#*#7284#*#* Diag Config: log, dump
*#*#9090#*#* Diag Config: log, dump
*#*#32489#*#* Ciphering info
*#*#279301#*#* RRC(HSPA) control
*#*#301279#*#* RRC(HSPA) control
*#*#4238378#*#* CFG Settings: GSM, REL5, cancel
*#*#73876766#*#* SellOut SMS Enable
*#*#197328640#*#* Service mode: debug, version, UMTS RF, GSM RF, audio, common, IPC LB, WB-AMR
*#*#738767633#*#* SellOut SMS Disable
*#*#4387264636#*#* SELLOUT SMS
*#*#7387677763#*#* Sellout SMS Set Product Mode
*#*#7387678378#*#* Sellout SMS Set Test Mode

Nastavení oprávnění jednotlivých aplikací

      Jednou z významných bezpečnostních funkcí nového Androidu 6.0 Marshmallow je možnost nastavit individuálně práva pro každou nainstalovanou aplikaci v menu Nastavení|Aplikace|*|Oprávnění. Škoda, že to nejde rovnou při instalaci aplikace. Pokud chcete mít kontrolu i nad datovým tokem, nainstalujte si nějaký firewall. Já jsem vyzkoušel AFWall+, který pracuje jako grafická nadstavba IPtables.

USB Mass Storage

      4.4.2016 USB Mass Storage pro SD kartu se mi zatím povedlo v CyanogenModu zprovoznit jen v režimu pouze pro čtení pomocí aplikace SD card as USB drive 1.1, kde jsem musel ručně nastavit mountpoint na /dev/block/mmcblk1. Dříve používaná Aplikace Multi Mount SD-Card 2.50 v novém Androidu nefunguje (sice připojí nějaký disk, ale pro Windows je nečitelný).
      7.4.2016 Po úmorně zdlouhavém pátrání na Internetu jsem konečně našel indicii, proč mi nefunguje zápis na USB mass storage. V novější verzi Androidu, který používá jádro s rozšířením SELinux, je totiž nutné snížit úroveň zabezpečení SELinuxu z "enforcing" na "permissive". To lze na rootnutém telefonu snadno provést pomocí aplikace SELinuxModeChanger, případně u CyanogenModu v Nastavení|Vývojářské nástroje|Selinux Mode (poslední volba). Předchozí způsob modifikace souboru /system/etc/permissions/platform.xml z Androidu 4.4 / 5.x už bohužel nefunguje. V "permissive" módu dovolí systém přístup k objektům a pouze loguje porušení přístupových pravidel. Chyby lze vytáhnout z logu pomocí příkazu cat /proc/last_kmsg |grep avc, kde jsem objevil toto:


 [ 1045.427074] c0 type=1400 audit(1460597838.520:54):
 avc: denied { write } for pid=897 comm="file-storage" path="/dev/block/mmcblk1"
 dev=tmpfs ino=1133 scontext=u:r:kernel:s0 tcontext=u:object_r:block_device:s0
 tclass=blk_file permissive=0

      Jedinou aplikací, schopnou na mém telefonu s CyanogenMod 13.0 zpřístupnit externí SD kartu v režimu UMS (USB Mass Storage) je SD card as USB drive-MTP USB Switcher 1.1, který umožňuje ruční zadání cesty k blokovému zařízení. Totéž lze docílit v konzoli příkazem echo /dev/block/mmcblk1 > /sys/devices/platform/s3c-usbgadget/gadget/lun0/file. Po instalaci aplikace je třeba přidat její widget na plochu a po té se objeví konfigurační dialog. Zde jsem musel zadat zařízení /dev/block/mmcblk1 místo defaultně nabízeného /dev/block/vold/public:179_17 - proč nefunguje (v PC se sice objeví nový oddíl, ale nelze k němu přistupovat), byť figuruje ve výpisu mount jako externí SD karta, to opravdu netuším. Zkoušel jsem i jinou SD kartu s FAT FS a taky to nešlo. Hlavně že to s /dev/block/mmcblk1 chodí a v "permissive" módu i se zápisem. Akorát je třeba dbát na to, aby se karta před připojením k PC v telefonu korektně odpojila (tím se zapíše obsah cache na kartu) a po odpojení od PC znovu připojila. Jinak hrozí vlivem nekonzistence dat v cache a skutečného stavu FS na kartě poškození/ztráta dat. Případné poškození FS na kartě lze opravit ve Windows standardním příkazem chkdsk x: /f, kde x je písmeno přiřazené kartě.

About phone-SELinux mode SD card as USB drive-MTP USB Switcher manual device configuration
změněný režim SELinuxu MTP USB Switcher - nastavení dev

      16.4.2016 Vývojář GokulNC na XDA vydal novou verzi aplikace Universal USB Mass Storage Enabler 1.2, která nyní správně detekuje cestu k blokovému zařízení SD karty a umí si sama změnit úroveň zabezpečení SELinuxu na "permissive", aby fungoval zápis na kartu. Appku jsem vyzkoušel a funguje. Stále platí, že je třeba před připojením k PC kartu v nastavení odpojit a pak zas znovu připojit. V nové verzi bylo přidáno tlačítko pro rychlý přístup do nastavení k odpojení/připojení SD karty.

Universal USB Mass Storage Enabler 1.3.1
UMS Enabler 1.3.1

      21.8.2016 Od verze 1.4 už není třeba ručně odpojovat a připojovat SD kartu v systémovém nastavení. Podmínkou je, že se bude mountovat jen jeden oddíl a nikoliv celá karta, konkrétně v mém případě jsem v Menu|Advanced Settings měl nastaveno "LUNs in use: /sys/devices/platform/s3c-usbgadget/gadget/lun0" a "Partition Block in use: /dev/block/mmcblk1p1" (jiná možnost volby tam ani nebyla). Vyzkoušel jsem rovnou poslední verzi 1.5 a zdá se, že funguje korektně. Také byl přepracován grafický vzhled aplikace:

Universal USB Mass Storage Enabler 1.5 Advanced Settings Universal USB Mass Storage Enabler 1.5 Main Screen
UMSE 1.5: pokročilé nastavení UMSE 1.5: hlavní obrazovka

      23.10.2016 UMS Enabler spokojeně používám už několik měsíců, ale až teď jsem narazil na problém při přenosu velkých souborů (stovky MB map) do telefonu. Po určitém množství zapsaných dat, které je pokaždé jiné (80 MB - 2,5 GB), se totiž přenos náhle zastaví, spojení s telefonem se přeruší a přiřazené písmeno UMS disku zmizí ze systému. Nepomohlo ručně připojit/odpojit SD kartu ani restartovat UMS Enabler. Když jsem telefon v tomto stavu připojil pod Linuxem, dostal jsem chybovou hlášku:


 [ 32.390196] usb 2-1.4: new high-speed USB device number 6 using ehci-pci
 [ 32.479202] usb 2-1.4: New USB device found, idVendor=04e8, idProduct=685e
 [ 32.479247] usb 2-1.4: New USB device strings: Mfr=2, Product=3, SerialNumber=4
 [ 32.479290] usb 2-1.4: Product: GT-I9300
 [ 32.479316] usb 2-1.4: Manufacturer: samsung
 [ 32.479344] usb 2-1.4: SerialNumber: 4df137bd00e6afcb
 [ 37.480103] usb 2-1.4: can't set config #1, error -110

Pak už pomůže jedině restart Androidu. Zkoušel jsem kopírování zopakovat několikrát na 2 různých PC, v jiných USB portech s různými USB kabely, ale ani jednou se nepodařilo zkopírovat celý set souborů o velikosti 2,8 GB. UMS Enabler na to patrně nemá vliv, protože ten se stará pouze o připojení disku, samotná obsluha USB je záležitostí jádra. Proto jsem se rozhodl vyzkoušet nainstalovat alternativní Boeffla kernel 5.3. Instalace není nijak komplikovaná. Stažený ZIP archiv nahrajeme na SD kartu a přebootujeme do TWRP. Tam je vhodné nejprve vytvořit zálohu boot oddílu na SD kartu. Pak vybereme instalaci ZIP balíčku a naťukáme umístění daného souboru na SD kartě. Flashnutí by mělo trvat asi 10 - 20 s. Pak z TWRP restartujeme normálně do Androidu. Dále je třeba nainstalovat konfigurační aplikaci a povolit jí root přístup. Já jsem potřeboval udělat ještě jeden restart, aby se správně načetla konfigurace. Pak už můžete v appce vesele konfigurovat nastavení jádra do nejmenších detailů na několika záložkách (zejména pře/pod-taktování, pře/pod-voltování CPU a GPU, nabíjecí proudy, uspávání a další věci kolem power managementu). Další zajímavou funkcí zabudovanou v tomto kernelu je podpora HID periferie (po připojení k PC jsou detekována 2 nová zařízení HID), která s pomocí aplikace USB Keyboard umožňuje ovládat PC nebo třeba Raspberry Pi virtuální klávesnicí a touchpadem na telefonu, když není zrovna po ruce fyzická klávesnice a myš.
      Zkusil jsem znovu UMS Enabler a kopírování souborů, ale zase se to opakovaně sekalo. Na první záložce Boeffla-Configu jsem si všiml položky "UMS mód". Tak jsem ho zkusil zapnout (zůstává aktivní, dokud se neťukne na "ANO"). Zkusil jsem znovu kopírování a tentokrát vše proběhlo bez problémů. Zopakoval jsem to ještě 3x a ani jednou se to neseklo. Když jsem však přepnul do jiné aplikace a nechal Boeffla-Config s UMS běžet na pozadí, tak se kopírování seklo asi po 1,4 GB, takže ho doporučuju alespoň během kopírování nechat běžet na popředí.

Boeffla-Config UMS mode active
Boeffla-Config UMS mód

Jak vytvořit PrintScreen

      Snímek aktuálního stavu obrazovky se na Androidu vytvoří současným stiskem tlačítek Vol- a Power, uloží se do adresáře /storage/emulated/0/Pictures/Screenshots a v levém horním rohu se zobrazí malá ikonka. Pokud roztáhneme shora stavovou lištu, můžeme si hned screenshot prohlédnout nebo ho někam odeslat.

Jak zálohovat/přepsat aktuální obrázek pozadí

      V adresáři /data/system/users/0 se nachází soubory wallpaper (obrázek bez přípony) a wallpaper_info.xml, který popisuje rozlišení obrázku atd. Pro přepsání jsou třeba root práva.

Přenos souborů přes Bluetooth

      Další věc, co se může občas hodit, je přenos souborů přes Bluetooth mezi 2 mobilními zařízeními. Konkrétně popíšu nastavení a posílání souborů mezi Galaxy S3 s CyanogenModem a iPAQ 214 s Windows Mobile 6.0. Nejprve je třeba zapnout Bluetooth rádio, nastavit případně viditelnost zařízení a spárovat je spolu.

Jak se připojit terminálem na sériovou linku

      Pro většinu bastlířů je sériová komunikace po UARTu i nadále nepostradatelnou záležitostí. Anroidí telefon či tablet lze snadno použít jako terminál. Stačí si k tomu koupit levný micro USB OTG kablík a kablík či redukci s převodníkem FTDI. Jsou k dispozici s rozhraním RS232, RS422, RS485 a TTL (pro napěťové úrovně 5 V, 3,3 V i 1,8 V). Ovladače pro většinu FTDI převodníků jsou už součástí linuxového jádra Androidu. Stačí tedy jen nainstalovat aplikaci FTDI UART Terminal 1.1, připojit kablík, nastavit komunikační parametry linky a jedeme. Aplikace podporuje přenos souborů protokoly XModem, YModem a ZModem.

FTDI UART Terminal 1.1-Xmodem download
FTDI UART Terminal - Xmodem DL

Jak připojit externí USB kameru

      Občas se může hodit připojit k telefonu externí USB webkameru, mikroskop, endoskop, noční vidění a pod. K tomu stačí výše zmiňovaný USB host kabel, ovladače na většinu kamer už jsou v linuxovém jádře. Vyzkoušel jsem několik free aplikací a jako nejlepší mi přišly kompaktní USB Camera Standard 2.1.7 a funkčně vybavenější USB Camera 4.0, která má i funkce detekce pohybu a uploadovaní dat na server.

Jak připojit externí USB RTL-SDR tuner

      Ano, softwarové rádio přes levný USB TV tuner lze provozovat i na Android zařízeních. TV tuneru a SDR softwaru se věnuji v samostatném článku zde.

Mých 14 nejpoužívanějších aplikací

1. Total Commander 2-panelový správce souborů
2. Universal USB Mass Storage zpřístupní externí SD kartu jako mass-storage (root)
3. Hacker's Keyboard rozšířená klávesnice
4. Mozilla Firefox + Adblock webový prohlížeč
5. Adobe Acrobat Reader prohlížeč PDF
6. CG Transit offline jízdní řády
7. OziExplorer offline GPS mapy/navigace
8. AIMP hudební přehrávač
9. ZXTune hudební přehrávač modulů a chiptunů
10. Graph 89 emulátor kalkulačky TI-89 (a dalších)
11. DOSBox Turbo emulátor DOSu
12. Titanium Backup Pro zálohování aplikací a dat (root)
13. nRF Connect for Mobile ladění pro Bluetooth Low Energy
14. Spectroid spektrální analyzér zvuku zachyceného mikrofonem

      Poslední dobou jsem si též oblíbil aplikaci Spectroid, kterou lze za pochodu zkoumat spektra všech možných zvuků okolo, např. kontrolní pískání evakuačního rozhlasu na hranici ultrazvuku (20 kHz), které už uchem neslyším, ale elektretový (v principu kondenzátorový) mikrofon v mobilu ho spolehlivě zachytí. Níže uvedený screenshot jsem pořídil v budově Hlavního nádraží v Praze (průchod k nástupištím).

Spectroid 1.0.1 - zachycený kontrolní tón evakuačního rozhlasu 20 kHz na Hlavním nádraží v Praze

Zajímavé spektrum také produkoval jeden podrážděně syčící netopýr v jeskyni. Nejedná se však o ultrazvukový echolokační signál, který dosahuje frekvencí i přes 100 kHz, na ten by bylo potřeba lepší mikrofon a rychlejší vzorkování.

Spectroid 1.0.1 - spektrum syčení podrážděného netopýra

      Galaxy S3 je mj. vybaven celou řadou různých senzorů: MEMS akcelerometr, gyroskop a barometrický tlakový senzor, magnetometr, teploměr baterie, měřič intenzity osvětlení a detektor přiblížení (proximity). Surová data z těchto senzorů lze vyčítat např. aplikací CPU X. Barometrický senzor se dá také využít k měření nadmořské výšky, resp. relativního převýšení mezi 2 body v rozumně krátkém čase (tlak dlouhodobě driftuje se změnou počasí). Zde je konkrétně osazen LPS331AP od STM s integrovaným teploměrem, který měří absolutní tlak v rozsahu 26 - 126 kPa s rozlišením 2 Pa pomocí 24-bitového ADC. Atmosférický tlak klesá exponenciálně s nadmořskou výškou a je závislý na teplotě. Do 1000 m nad mořem klesá tlak zhruba o 11,3 Pa na každý výškový metr, takže rozlišení by mělo odpovídat cca 20 cm, což je mnohem lepší rozlišení a přesnost, než může poskytnout běžný GPS přijímač (jeho chyba výšky je větší než chyba 2D polohy). Vyzkoušel jsem několik aplikací na měření výšky a nakonec jsem si vybral Barometer & Altimeter 1.3.1, který funguje i offline a s vypnutou GPS (umožňuje však kalibraci pomocí GPS), zobrazuje výšku až na 2 desetinná místa, umožňuje nastavit rychlost měření a počet průměrování a zobrazuje časový graf s možností uložení dat. Na obrázku níže je měření výšky přes 5 pater paneláku (cesta výtahem + pauza na ustálení), kde jsem naměřil rozdíl 13,0 m, skutečná hodnota byla 13,9 m.

Barometer and Altimeter 1.3.1 floor elevation measurement
Barometer & Altimeter 1.3.1

      Pokud se zajímáte trochu o fungování GSM sítě, tak vám asi neunikla veřejně dostupná databáze ID GSM buněk jednotlivých operátorů. BTSky jsem už kdysi lovil v servisním menu na svém prvním mobilu Bosch 509 a později Siemens S10. Nyní máte možnost pohodlně lovit BTS na Androidu s aplikací Netmonitor.

Jak opravit poškozený oddíl /preload

      1.6.2019 Zrovna když jsem byl o víkendu pryč na Metalfestu, tak se mi stala taková nepříjemná věc, že po vybití baterie a několika neúspěšných pokusech o zapnutí telefonu se mi ho po následné výměně vybité baterky za nabitou (pro všechny případy připravenou v batohu v autě) už nepodařilo zapnout. Telefon prostě furt visel na úvodní obrazovce CyanogenModu a nic. Podařilo se mi aspoň nabootovat do recovery režimu (TWRP 2.8.7.3), kde jsem z logu zjistil, že se nepodařilo přimountovat oddíl /preload. Průser je, že TWRP neumí tento oddíl naformátovat. Vyzkoušel jsem postupně Wipe Cache, zformátovat oddíly /cache, /system, /data a přehrát je ze zálohy, ale bez úspěchu. Naštěstí jsem měl s sebou ještě druhý, dosud nenainstalovaný smartphone Lenovo K6, do kterého jsem přendal SIM a microSD kartu a nainstaloval základní potřebné aplikace jako třeba navigaci. Už jsem myslel, že se nadobro dosrala eMMC fleška, ale doma jsem pak našel způsob, jak telefon oživit.
      Stačí z PC pomocí Heimdallu nahrát alternativní CWM Recovery 6.0.3.2 (tar balíček je třeba rozbalit a nahrát soubor recovery.img) v download módu (Vol-, Home a Power). Po té přejít do recovery módu (Vol+, Home a Power) a v menu mounts and storage vybrat položku format /preload. Pak je možné pomocí Heimdallu nahrát zpět TWRP, který jinak nabízí více možností. Po zformátování už TWRP hlásil, že oddíl /preload přimountoval bez problémů a po obnovení zálohy telefon znovu ožil. Ještě jsem pomocí aplikace eMMC Brickbug Check provedl čtecí test, který též dopadl v pořádku. Stejný postup lze použít i v případě neopravitelného poškození oddílu /data, kdy TWRP zamrzne na úvodní obrazovce.
      Dále mě zajímalo, jestli je možné z eMMC vyčíst nějaké informace o počtu relokovaných bloků FlashROM, resp. stavu wear levelingu. To je skutečně v některých případech možné pomocí MMC Utils (port pro Android). Soubor mmc_utils jsem nahrál Total Commanderem do adresáře /system/xbin, nastavil mu správné atributy: -rwxr-xr-x, GID: 2000 shell a v terminálu jsem jako root spustil mmc_utils extcsd read /dev/block/mmcblk0. Dostal jsem poměrně obsáhlý výpis ECSD (Extended Card-Specific Data), kde však chybí očekávané položky Vendor proprietary health report, Device life time estimation type a Pre EOL information. Ty byly definovány až v novější verzi eMMC specifikace 5.0, než má použitá paměť od Samsungu (eMMC 4.5).


Android Smart Watch

      21.7.2016 V poslední době se roztrhl pytel s chytrými hodinkami, co by doplněk chytrých telefonů, postavenými na OS Android Wear (sdílí stejné jádro s velkým Androidem, ale je upravený pro malé displeje a slabší HW), které se s Android či Apple telefonem spojí pomocí aplikace přes bluetooth a umožňují zobrazovat různé notifikace a ovládat velké aplikace v telefonu (i hlasem). Poslední verze Android Wear 2.0 už umožňuje instalaci dalších miniaplikací z Google Play přímo na hodinky. Co mě kapánek šokovalo, za jakou cenu jsou schopní někteří čínští výrobci takové hodinky prodávat, viz např. model DZ09 za pouhých 283 Kč (kolik tak může být výrobní cena?), který obsahuje i GSM modem, takže může fungovat jako samostatný telefon, hudební přehrávač, krokoměr a další blbosti. Zde je natočená rozborka, tak se tomu můžete podívat na střeva. Na desce jsem si všiml testpointů označených jako Rx a Tx. Možná tam běží rootovská konzole pro ladění a dalo by se to hacknout. Mám svrbění si to koupit na hraní, ale nějak sem zatím nevymyslel žádné rozumné alternativní využití...



Zpět

Aktualizováno 12.12.2021 v 3:40