Linux/Android na telefonie komórkowym Xperia X1
Napisał Mariusz Dalewski w kategorii Android, Linux, tags: Android, angstrom, Linux, x1, xperiaChciałbym zapoczątkować serię artykułów poświęconych tematyce Linuxa na urządzeniach mobilnych, a dokładniej na telefonach komórkowych nie koniecznie dostarczonych z Linuxem.
Głównym obiektem moich badań jest telefon Sony Ericsson Xperia X1, nazywany (głównie na zachodzie) też HTC Kovsky bądź HTC Venus. Telefon ten, dostarczany z Windows Mobile 6.1, wyposażony jest w procesor Qualcomm 7200A taktowany zegarem 528 Mhz. Procesor ten obsługuje zestaw instrukcji ARMv6.
W sieci znaleźć można kilka stron mówiących o podobnej tematyce, jednak X1 na zachodzie nie jest tak popularne jak HTC Raphael, HTC Kaiser czy HTC Diamond. Ostatnie publiczne „badania” nad uruchomieniem linuxa na X1 zostały zaprzestane kilka miesięcy temu. Od jakiegoś czasu pracuje nad patchem do kernela dla X1. Kontynuuje też research który został zapoczątkowany na forum XDA. Niedługa na XDA zaczną też się pojawiać moje aktualizacje.
Cała praca (analiza sprzętowa urządzenia itp.) ma na celu uruchomienie w pełni funkcjonalnego Androida na telefonach z ww. procesorem.
Na tą chwilę mogę pochwalić się kernelem, który poprawnie obsługuje:
- czytnik kart SD
- klawiatura
- zgłaszanie eventa w momencie otworzenia klawiatury
- obsługa klawiszy z frontowego panelu (z wyłączeniem joysticka optycznego)
- touchpad
Całość do testów/zabawy dostarczam z dystrybucją Angstrom skompilowaną specjalnie dla tego procesora ARM. Tutaj znajdziecie wersję mojej publicznej paczki z Linuxem dla X1: aiv-x1-pack-02.zip
W archiwum znajduje się:
- haret-x1.exe – loader linuxa, który zastępuję Windows Mobile w pamięci. Dzięki takiemu rozwiązaniu po restarcie telefonu nie zauważycie żadnych zmian – normalnie uruchomi się Windows.
- initrd-aiv-04.gz – obraz initrd z systemem Angstrom
- zImage-aiv-x1-31-2006 – kernel który HaRET umieści w pamięci (31 oznacza moją wersję kernela, a 2006 numer mtype – wyjaśnienie poniżej)
- default.txt – skrypt uruchamiający procedury HaRET’a
Rozpakowane archiwum umieść na swoim telefonie w dowolnym miejscu – byle by wszystkie ww. pliki były w jednym katalogu. Uruchom haret-x1.exe i naciśnij „Run”. Pojawi Ci się leader linuxa, który po chwili zamieni ekran Windows w czarną konsolę z komunikatami kernela (ekran podczas łądowania będzie do góry nogami). Po pomyślnym załadowaniu Angstroma zobaczysz piękne „x1 login:”. Login: root, bez hasła.
Domyślnie Twój telefon posiada interfejs sieciowy usb0 z ustawionym ip 192.168.0.206/24. Jeżeli podłączysz telefon pod linuxa via usb (pod Windowsem nie działa) to zostanie on wykryty jako interfejs sieciowy i pojawi Ci się usb0 w systemie. Konfigurując interfejs na przykład tak: 192.168.0.202/24 będziesz mógł podłączyć się do swojego telefonu via SSH.
W pliku default.txt znajdziesz:
Opis:
#1 – ustawienie typu maszyny dla haret’a i kernela. Dzięki tej zmiennej kernel wie na jakim telefonie jest uruchamiany
#2 – plik kernela
#3 – plik obrazu initrd
#4-5 ustawienia dotyczące rozmiaru pamięci
#6 – linijka przekazywana jest bezpośrednio do kernela:
- fbcon=rotate:3 obrót ekranu po załadowaniu framebuffera
- msmts_calib parametry kalibracyjne touchscreen’a
- pozostałe ustawienia dotyczą źródła bootowania bądź definicji rozmiaru pamięci
Możesz dodać do niej parametry, które są zakomentowane:
- boot_delay pozwala wprowadzić pewnie opóźnienie w wyświetlaniu każdej linii kernela na ekranie
- msmvkeyb_toggle odpowiada za wyłączenie, ukrycie klawiatury ekranowej
Z aktualnych problemów, które możesz napotkać:
- bootowanie staje na opcji “Calibrating delay loop…” – jeżeli poczekasz dłużej linux się załąduje
- bootowanie staje na msmfb_probe() … – musisz ponownie uruchomić telefon (reset rysikiem albo wyjęcie baterii)
W przyszłych publikacjach będę opisywał postępy i udostępniał nowe wersje paczek (niedługo pewnie z Androidem). Znajdzie się tez miejsce na bardziej techniczne informacje o samej strukturze systemu, urządzeniach telefonu itp. Za jakiś czas udostępnię też moje repozytorium git’a z kernele dla X1.
Rozwiązanie to jest całkowicie bezpiecznie dla Twojego telefonu. HaRET podmienia Windowsa w pamięci RAM, która po restarcie telefonu jest czyszczona. Oczywiście, jak to ma zawsze miejsce, nie ponoszę żadnej odpowiedzialności za jakiekolwiek błędy, straty itp.
Na koniec kilka zdjęć z działającego linuxa:











Wpisy (RSS)
Lipiec 15th, 2009 o 3:00 - Edycja
to jesli wrzuce twoja werje na tel to bede mogl przywrocic windowsa bo nie zabardzo rozumiem tego haret-x1.exe – leader linuxa, który zastępuję Windows Mobile w pamięci. Dzięki takiemu rozwiązaniu po restarcie telefonu nie zauważycie żadnych zmian – normalnie uruchomi się Windows
Lipiec 15th, 2009 o 6:47 - Edycja
No, no, gratuluje!
Lipiec 15th, 2009 o 7:09 - Edycja
@przemo191 zaktualizowałem artykuł o jedno zdanie na końcu. HaRET podmienia Windowsa w pamięci RAM, która po restarcie jest czyszczona. Technologia ta nie wprowadza żadnych zmian w Twoim telefonie (chyba żre z poziomu Linuxa zapiszesz sobie jakiś plik na karcie pamięci
to wtedy będziesz miał zmianę).