Małe ostrzeżenie

Wszelkie modyfikacja telefonu mogą skutkować:

  • utratą gwarancji
  • zawsze jest szansa, że telefon przestanie działać

Także cokolwiek robisz z telefonem robisz to na własną odpowiedzialność. Jak się nie uda, trudno, nic na to nie poradzę.

Proponuję przed przystąpieniem do modyfikacji telefonu dokładnie przeczytać cały artykuł, łącznie z linkami które są w nim podane.

Podczas wyjazdu urlopowego pojawił mi się poważny problem – brak dostępu do Internetu. W hotelu nie ma, po kawiarenkach (nawet jakbym jakieś znalazł) biegać nie mam zamiaru. Oczywiście, od czego jest telefon, wystarczy podpiąć do komputera, skorzystać z porad umieszczonych w tym artykule Dostęp do Internetu za pomocą HTC G1 z systemem Android (Proxoid) i powinno działać.

Niestety, coś się zepsuło. Połączenie między moim komputerem a telefonem przy użyciu kabla USB ciągle jest restartowane, adb bez przerwy przestaje nasłuchiwać na wybranych portach, jednym słowem do pracy się to nie nadaje. Wymiana kabla USB nie przyniosła żadnych pozytywnych rezultatów…

Pozostało więc wymyśleć inną metodę udostępnienia połączenia internetowego, najlepiej przy użyciu sieci bezprzewodowej. A do tego potrzeb zrootowanego telefonu (czyli dostępu do użytkownika root).

Ponieważ „włamywanie” się do telefonu i uzyskanie dostępu do użytkownika uprzywilejowanego w praktyce sprowadza się do instalacji raz starej wersji systemu operacyjnego (posiadającej odpowiednie dziury w zabezpieczeniach) a następnie instalacji wersji docelowej, więc za jednym zamachem postanowiłem zaktualizować system Androida do wersji 2.1 w wydaniu CyanogenMod w wersjo 5.0.8. Wersje nowsze niestety ciągle znajdowały się w fazie beta.

Uzyskanie konta root

Zanim zaczniesz cokolwiek robić, upewnij się że zrobiłeś kopię wszystkich danych z telefonu oraz karty SD. Jak już skończysz wszystkie kroki to zostanie Ci w rekach czysty telefon oraz czysta karta SD.

Uzyskanie dostępu konta root daje szereg dodatkowych możliwości, te istotne z mojego punktu widzenia:

  • możliwość instalacji aplikacji wymagających do swojego działania użytkownika uprzywilejowanego (czyli np. udostępnienie połączenia internetowego poprzez sieć bezprzewodową)
  • możliwość instalacji nowych wersji systemu Andorid (nawet jeżeli oficjalnie nie są dostępne na danym telefonie)
  • możliwość tworzenie pełnej kopii bezpieczeństwa systemu
  • instalacja aplikacji na karcie SD (ważne w przypadku G1, który nie dysponuje szczególnie duża ilością pamięci)

Więcej informacji można znaleźć w tym artykule: Rooting Q&A.

Proces uzyskiwania użytkownika root sprowadza się do kilku kroków:

  1. Instalacji starej wersji systemu.
  2. Wykorzystanie błędów w systemie w celu uzyskanie użytkownika roo.
  3. Aktualizacja poszczególnych komponentów systemu i instalacja nowej wersji systemu operacyjnego
  4. Ponowna konfiguracja telefonu

Wygenerowanie pliku goldcard.img

Posiadam telefon HTC G1 wydany przez Erę z wersją Andorida 1.6. Musze w związku z czym zainstalować na nim starą wersję systemu operacyjnego (bodajże 1.1), ale w przypadku telefonów od Ery wymaga to odpowiedniego przygotowania karty SD. Więcej informacji na ten temat (w szczególności dla osób nie używających Linuksa) można znaleźć w tym artykule: ROOT dla HTC G1 – goldcard.

Najpierw należy wygenerować plik golden.img:

  1. Odczytanie zawartości pliku /sys/class/mmc_host/mmc1/mmc1:*/cid.
    W pliku tym znajduje się numer karty SD. Można to zrobić w następujący sposób:

    • użyć jakiegoś zarządce plików i odczytać ten plik
    • użyć aplikację o nazwie CIDConverter, która odczyta numer i wykona na nim odpowiednie operacja (o nich za chwilę)
    • otworzyć konsolę i wykonać polecenie:
      cat /sys/class/mmc_host/mmc1/mmc1:*/cid

    Dwa pierwsze sposoby są omówione w powyższym artykule, ja natomiast skorzystałem z aplikacji ConnectBot – jest to klient SSH, ale posiada także możliwość otworzenia konsoli znajdującej się na telefonie.

  2. Odczytany numer zapisać w formie liczb szesnastkowym, czyli podzielić go na pary znaków, powinien wyglądać tak:
    11 22 33 44 55 66 77 88 99 00 aa bb cc dd ee ff
  3. Odwrócić kod:
    ff ee dd cc bb aa 00 99 88 77 66 55 44 33 22 11
  4. Zamienić diwe pierwsze cyfry na zera i usunąć spacje:
    00eeddccbbaa00998877665544332211
  5. Powyższy numer wkleić na stronie Free HTC android goldcard generator. Strona ta generuje wygeneruje potrzebny plik golden.img na podstawie powyższego numeru i wyśle go na podany adres e-mail.

Po otrzymani pliku należy go zapisać na karcie SD. W moim przypadku karta ta została wykryta jako urządzenie /dev/sdb.

UWAGA!

Wybranie złego urządzenia i wydanie poniższej komendy może doprowadzić do zniszczenia wszystkich danych na wskazanym urządzeniu, więc należ się upewnić, że plik zostanie zapisany we właściwym miejscu.

Nalezy wydać komendę:

sudo dd if=golden.img of=/dev/sdb

Należy powyższe polecenie odpowiednio zmodyfikować podając ścieżkę do pliku golden.img oraz nazwę urządzenia będącego kartą SD. należy zwrócić uwagę na to, że należy odwołać się do urządzenia, a nie partycji.

Jeżeli wszystko poszło OK, dysponujesz odpowiednio przygotowaną kartą SD.

Downgrade systemu operacyjnego

Czas teraz na instalajce dziurawej, starej wersji systemu operacyjnego Android. Do wyboru są dwie, o nazwach RC7 oraz RC29. Wersja RC7 jest przeznaczona dla telefonów z Wielkiej Brytanii, natomiast wersja RC27 na telefonów ze USA. Ja korzystałem z wersji RC7.

Instalowana wersja pozwala na wykonywania dowolnych poleceń z uprawnieniami użytkownika root (cokolwiek będziemy pisali na klawiaturze, zostanie wykonane na konsoli z takimi uprawnieniami).

  1. Należy więc poprać odpowiedni plik archiwum i go rozkompresować.
  2. W wyniku powinniśmy otrzymać plik o nazwie DREAIMG.nbh. Proszę zwrócić uwagę na rozszerzenie, jest pisane małymi literami. W moim przypadku musiałem zmienić nazwę tego pliku (wielkość liter MA znaczenie). Następnie należy skopiować go na kartę SD, do jej głównego katalogu.
  3. Należy teraz wyłączyć telefon i włączyć go ponownie trzymając wciśnięty przycisk kamery. Powinno pojawić się szare tło i kolejne komunikaty. Teraz należy wcisnąć klawisz Action (słuchawka) i rozpocząć instalację systemu.

    Jeżeli z jakiś powodów nie nie udało się rozpocząć instalacji, może to oznaczać że blednie został odczytany numer karty SD lub też wersja systemu nie działa z naszym telefonem. Można spróbować pobrać wersję RC27 i sprawdzić czy uda się uruchomić instalację. Mi się udało ten krok przejść bez problemów.

  4. Po zakończeniu kopiowania telefon powinien się zrestartować i kontynuować instalację. Jeżeli pojawi się menu z bootloadera, to trzeba będzie nacisnąć kombinację klawiszy Home+Back w celu restartu systemu.
  5. Po uruchomieniu systemu należy skonfigurować dostęp do sieci internetowej oraz zarejestrować się.

Wczytanie nowej wersji pliku recovery.img

Teraz czas na magię, czyli na stałe uzyskanie dostępu do konta root:

  1. Najpierw należy pobrać pliku recovery-RA-dream-v1.7.0-cyan.img i następnie zapisać go na karcie SD w głównym katalogu pod nazwą recovery.img.
  2. Należy odszukać w markecie aplikację o nazwie telnet. Pozwoli ona na uruchomienie serwera telnetd i następnie podłączenie do niego
  3. Teraz należy wykonać następujące polecenia:
    • dwa razy nacisnąć klawisz Enter
    • wpisać na klawiaturze telnetd i nacisnąć klawszi Enter (telefon wejdzie do książki telefonicznej, należy to zignorować), polecenie to spowoduje uruchomienie demona protokołu telnet
  4. Teraz należy uruchomić aplikację Telnet i wybrać opcję Connect to Serwer. Spowoduje to uruchomienie klienta protokołu telnet, czyli dostaniemy dostęp do konsoli na uprawnienia użytkownika root.
  5. Teraz należy wprowadzić następujące polecenie:
    1
    2
    3
    4
    mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
    cd sdcard
    flash_image recovery recovery.img
    cat recovery.img > /system/recovery.img

    Powinno to zainstalować plik recovery.img (pod warunkiem, że nie wyskoczy żaden błąd, w takim przypadku należy sprawdzić czy nie zostały popełnione jakieś literówki).

  6. Czas na restart telefonu. Mój telefon po restarcie nie uruchomił się, zdaje się że jest to normalne działanie. Należy wyłączyć telefon i włączyć go ponownie trzymając wciśnięty klawisz Home. Pojawi się menu bootloadera w którym należy wybrać pozycję Wipe i wyczyści system. Po tym kroku telefon powinien się uruchomić.

Po tych krokach powinniśmy dysponować już dostępem do konta uprzywilejowanego użytkownika i można przystąpić do instalacji docelowej wersji Androida.

Instalacja nowej wersji radia

Kolejnym elementem będzie instalacja nowej wersji radia. Tym razem na szczęście proces będzie już w miarę prosty:

  1. Należy pobrać najnowszą dostępną wersję radia, w moim przypadku jest to wersja 2.22.23.02
  2. Skopiować ją na kartę SD zmieniając nazwę na update.zip.
  3. Uruchomić telefon w trybie Recovery (czyli nacinać klawisz Home w momencie uruchamiania telefonu).
  4. Z menu wybrać pozycję Flash zip from sdcard a następnie plik update.zip. Potwierdzić chęć instalacji nowego pakietu.
  5. Zrestartować telefon.

Po tych krokach na telefonie powinna znajdować się nowa wersja radia i telefon gotowy jest już do instalacji nowej wersji systemu operacyjnego Android.

Źródła