Kupiłem motorówę G5S - zachciao się custom ROMa

Kupiłem motorówę G5S - zachciao się custom ROMa

Kupiłem nie telefon a telewizor.
Z androidem.
Jakbym nie miał nic lepszego do zrobienia, tylko pałować się z kolejnym gratem i jego systemem.

Na Apisa, co ja najlepszego zrobiłem?! Przecież ja chronicznie nie cierpię dupoida ( ͡° ʖ̯ ͡°)
Do tego pokpiłem sprawę jeszcze bardziej, bo 5.2" ekran to nie wszystko i zapomniałem o dodatkowej powierzchni budy telefonu z dołu i góry. Nie dość że dupoid, to jeszcze telewizor do noszenia w kieszeni ლ(ಠ益ಠლ)
Chrzanić, zapłacone.


Sam telefon pod względem bebechów i bajerów okazuje się być całkiem wporzo. Generalnie lubię motorówy. Klapkowata linia RAZR to były świetne telefony. Ba, RAZR wrócił z powrotem w postaci nowiutkiego klapka z rozkładanym w pełni wyświetlaczem amoled. Fajna sprawa bo to zgrabne telefony i dobrze się je nosiło w przedniej kieszeni spodni. Dodatkowy mały wyświetlacz na froncie był baaaardzo dobrym ficzerem. Drobnym mankamentem jest tylko cena: <6400cbln. Ale co to dla takich #programista15k? xD

Na pokładzie jest snapdragon, 3GB ramu, 32GB pamięci (jakieś 6GB zdziera z tego droid). Z takimi bebechami powinien działać płynnie. Płynnie jak na słuchawę za 5 stów.
Choć przyglądałem się wcześniej specyfikacji to zdziwiło mnie, że mój egzemplarz ma jednak dualsima a nie tylko slot na jedną kartę oraz obsługę NFC. Jak już tak hojnie wyszło to i ładowanie Qi (indukcyjne) mogli motorowcy dorzucić.
Co jeszcze? Słuchawa jest zakuta w ameliniową budę co wydaje się być dobrym rozwiązaniem w kwestii ochrony. Niemniej jednak po wzięciu telefonu do ręki zaczął mi się z niej wyślizgiwać. Do bani. Dokupiłem zatem jakieś gumowe etui, żeby się go dało utrzymać. Podniesie tym samym trochę plecy bo obiektyw aparatu wystaje poza obudowę.

Z minusów, co bym pamiętał jakie mnie rzeczy denerwują, to bateria jest zamontowana na stałe i jak na telewizor przystało jest wpizdu szeroki. Niewygodnie się go trzyma w dłoni. Jak je wszystkie, te przenośne telewizory. Przywykłem do blackberry i windowsowych lumii. Idealnie siedziały w dłoni. No chyba że się ma łapy jak chleby.
Ja nie mam.

Aha, tackę na kartę sim i microSD cholernie ciężko wysunąć i jest bardzo delikatna.
Na razie tyle z minusów.

Domyślnie zainstalowany jest droid 7.1 - Nugat. Motorówa zapewniła aktualizację do 8.1 Oreo, co też uczyniłem. Aktualizacji było po drodze chyba z 7, zeszło do wieczora. Natomiast w trakcie oczekiwania na dostawę postanowiłem zainstalować na nim od razu jakiegoś custom ROMa z andkiem 10.
Padło na LineageOS jako sukcesora cyanogenmoda. Przez wzgląd na długość czasu jaki istnieje, częstotliwość aktualizacji i wsparcie dla dużej ilości urządzeń. Niestety oficjalnego builda LOS-a nie było i posmutniałem.
Od czego jest jednak xda-developers.com? Dwóch developerów zmontowało ROMa dla G5S, z czego jeden - wnioskując po komentarzach - działał prawdopodobnie bez wad. Bez wad, czyli że można dzwonić, wysyłać wiadomości, robić foto itd. Niby oczywiste, ale nie do końca.

Wątek na xda: https://forum.xda-developers.com/moto-g5s/development/rom-lineageos-17-1-t4160495

Zaryzykowałem

I tu się rozpoczęła droga przez mękę. To było pewne jak przegrana w destruction derby, że nic nie pójdzie zgodnie ze wszystkimi opisami howto jakie przeczytałem. No, ale może się jakimś magicznym przypadkiem uda. Najwyżej z telefonu zrobię cegłę (z ang. bricked device) i będzie robił za podstawkę pod browar.

To mój pierwszy customowy ROM

Jakoś poszło, choć kosztowało mnie to dwa wieczory, dwa browary i worek nerwów. Nie będę klepał tutaj co i jak bo metoda instalacji jest podobna na każdym urządzeniu. Jednakże wraz z postępującym rozwojem sofware-u sprawy mogą się nieco skomplikować.

Na pewno należy zacząć od instalacji bootloadera TWRP.me w wersji na swój model telefonu. W moim przypadku musiałem przy każdym uruchomieniu motorówy instalować go ponownie, naokrągło, bo nie chciał nadpisać istniejącego. Dopiero po pewnym czasie i kilkunastu tutkach, z których i tak nic nie wynikało wpadłem na sposób. Po instalacji TWRP należy zrobić od razu reboota do bootloadera, jeszcze raz wejść w recovery i voilla, twrp jest już na stałe na pokładzie.

Zanim jednak uda się zainstalować TWRP trzeba ten bootloader odblokować. W przypadku motoroli należy wygenerować najpierw odpowiedni 5-liniowy string i uzyskać kod odblokowujący na stronie http://motorola.com/unlockbootloader Brzmi łatwo? Oczywiście, ale nie w praniu. ADB wypluło mi tylko 4 linie i już byłem na skraju wkurwienia. Jednakże pojawił się guzik pod formularzem coś tam nt supportu, kliknąłem i po chwili dostałem kod odblokowujący na maila. GITuwa!

Reszta już jakoś poszła choć nonstop zapominałem o przełączaniu trybu podpięcia kablem USB, aktywowaniu opcji developerskich itd. Koszmar. Na pewno nie działało pchanie obrazu systemu poprzez ADB. W bootloaderze w ogóle nie działało połączenie. Sam obraz ostatecznie skopiowałem na kartę microSD i z niej instalowałem pod TWRP. W zasadzie można po kablu skopiować obraz ROMa ale robiłem w międzyczasie backup a byłem już i tak mocno wkurzony tym, że nic nie szło zgodnie z instrukcją.

LineageOS 17.1 zainstalowany, wszystko wydaje się działać. Pozostaje żmudna robota z ustawieniami, przerzuceniem kontaktów, instalacją kilku apek, no i z jakimś backupem tych aplikacji jak już się je wszystkie skonfiguruje.

ps. Na pokładzie motorówy jest czytnik linii papilarnych. Pomyślałem, że może uda się go zaprzęgnąć do czegoś bardziej przydatnego. Są faktycznie appki do tego, choć motorówa miała swoje gesty (w LOS niestety nie ma tego, a aplikacja moto nie jest przeznaczona do droida 10). Niestety, FingerprintGestureController API w nowych telefonach jest niedostępne, przez co czytnik paluchów nadaje się tylko i wyłącznie do tego co w nazwie. Appki ma się rozumieć nie mają przez to racji działania.


Nachalność reklam przydałoby się przyhamować

Szybkie rozeznanie czego można by użyć z gotowych rozwiązań - najlepiej w postaci zgrabnej appki blokującej wszystko co możliwe - i w jaki sposób działających, dało jasny obraz tego jak rozwiązania na dupoida blokują reklamy:

  1. appka działa w tle i filtruje wszelki ruch
  2. filtrowanie polega na ingerencji w plik /system/etc/hosts i mapowaniu adresów hostów pod lokalne IP; co, ma się rozumieć, wodzi wszelkie reklamowe requesty na manowiec
  3. appka blokuje reklamy wyłącznie w przeglądarce - jako plugin, nie standalone app

Niestety, globalnego (czyt. systemowego) blokera reklam próżno szukać, ponieważ łamałby zasady publikacji w google play. Pokrótce żadna aplikacja nie może ingerować, zmieniać itd. żadnych innych zainstalowanych aplikacji.
Standardowe sranie.
Tak naprawdę google trzepie hajs, developer trzepie hajs, wszyscy są zadowoleni. Poza użytkownikiem, któremu pół ekranu zasrywa reklama w jakiejś do niczego mu potrzebnej gównoaplikacyjki.

Większość apek do prawidłowego działania wymaga zrootowanego telefonu. Nie mam ochoty uzyskiwać roota, nie jest to do niczego potrzebne przy codziennym użytkowaniu TELEFONU. Nie pieprzonego minikomputera do wszystkiego! Z drugiej strony chyba nie będę miał wyjścia jeśli koniec końcem chciałbym jeszcze tworzyć backupy danych aplikacji aby nie pałować się od nowa z instalacją i konfiguracją wszystkiego po aktualizacji do nowszej wersji OS. Ale to może w niedalekiej przyszłości rozważę.

Wracamy na tory bo musi być jakiś inny sposób, przecież w IT nie ma rzeczy niemożliwych. Dupoid to w końcu jajko linuksa ze szpetnym UI z zerowym UX, więc stawiam na ręczną podmianę pliku hosts, tak samo jak robię to w łyndołsie czy w pingwinie.


Najsampierw potrzebujemy jakiegoś w miarę aktualnego pliku hosts zawierającego adresy serwerów reklamowych.

Używam listy hostów StevenBlack, dostępnych również na githubie pod adresem https://github.com/StevenBlack/hosts/releases

Po pobraniu pliku wracamy z powrotem do konsoli z ADB(Android Debug Bridge).
Czekałtujemy podłączone urządzenia: adb devices

Pobieramy hosts z komóry żeby zobaczyć co tam siedzi adb pull /system/etc/hosts C:\temp\pulledhosts

Ścieżka zapisu dowolna, nikt nie daje o to j____a bo w pliku i tak nic potrzebnego nie ma. Podmieniamy zatem z marszu plik hosts w androidzie na ten pobrany z sieci adb push C:\temp\hosts /system/etc/

I tu następuje bitchslap w dziąsło.
Otóż: adb: error: failed to copy 'C:\temp\hosts' to '/system/etc/hosts': remote couldn't create file: Read-only file system Ja jebię, znowu pod górę. Z 3 szybkich komend zrobi się pewnie kolejna godzina.
Albo trzy >_<

Jedziemy z tym gównem, bo szkoda czasu.
Komóra -> ustawienia -> system -> opcje programistyczne -> znajdź i włącz: debugowanie jako root adb root -> zwrotne: restarting adbd as root

adb remount -> zwrotne: remount succeeded

Jeszcze roz adb push C:\temp\hosts /system/etc

Dostajemy zwrotnie C:\temp\hosts: 1 file pushed, 0 skipped. 482.3 MB/s (1732241 bytes in 0.003s)

Wysoka piątka przybita i fajrant.


Warto byłoby się upewnić czy blokada na poziomie hosts działa.
Restart komóry adb reboot Losujemy jakiegokolwiek hosta z pliku, wrzucamy w przeglądarkę i powinniśmy otrzymać najpiękniejszy z komunikatów Nie udało się nawiązać połączenia

Mission accomplished, pora na CSa (⌐ ͡■ ͜ʖ ͡■).
Jak coś pokpiłeś to spadaj na bambus.


A może jednak aplikacją go?

Tydzień po całej akcji trafiłem na wątek, w którym polecano appkę do blokowania reklam. Jednak coś globalnego istnieje, czego próżno szukać w oszczanych wynikach gooogIe.
Notabene aplikacja o polsko brzmiącej nazwie blokada.org jest w rzeczywistości faktycznie rozwijana przez polskiego programistę. Co ważne, nie wymaga rootowania telefonu.
Zerknąłem co w trawie piszczy i rozpocząwszy pobieranie .apk pobladłem nieco. 50MB to zbyt ciężka waga dla mnie. Jednakże wcześniejsza wersja (v4) ważąca ~11MB brzmi bardziej zachęcająco. Po całym ambarasie z podmianą hosts nie będę jej testował dopóki aktualizacja listy hostów będzie wystarczająca do blokowania reklam w telefonie.
Z pewnością bardziej przydatne rozwiązanie na smartTV, które można wyklikać bez żadnego szukania, pobierania i klepania komend w konsoli pchając wszystko przez kabel.
Bo mi się z ADB po wifi nie chce pałować, ot co.

Co sądzisz o tym wpisie?