Archive for Lipiec, 2010

Udostępnienie połączenia internetowego z Andorida poprzez port USB

Udostępnianie połączenia internetowego przy użyciu sieci wi-fi, które opisałem we wpisie Udostępnienie połączenia internetowego z Andorida poprzez sieć bezprzewodową ma w moim przypadku kilka wad:

  • pobiera tyle energii, że telefon podłączony do komputera przy użyciu kabla USB raczej się rozładowuje niż ładuje
  • w moim przypadku połączenie to także rozgrzewało telefon do 50 stopni, co prawdopodobnie powodowało, że czasem się po prostu wyłączał

Jeżeli posiadamy zrootowany telefon z zainstalowanym Cyanogenmod w wersji 5 (może wcześniejsze wersje też to obsługują, ja testowałem w tej) to istnieje możliwość udostępnienia połączenia internetowego poprzez kabel USB.

Konfiguracja telefonu

W telefonie należy właściwie zrobić tylko jedną rzecz, włączyć udostępnienia połączenia poprzez USB. A można to zrobić wybierając Ustawienia, następnie Sieci zwykłe i bezprzewodowe, a na końcu zaznaczyć opcję Internet Tethering.

I to właściwie tyle.

Konfiguracja komputera

W moim przypadku konfiguracja dotyczy systemu Ubuntu 10.4. Postaram się pokazać, jak należy ten system skonfigurować, aby automatycznie nawiązywał połączenie z telefonem i konfigurował odpowiednio połączenie sieciowe.

Wymogiem poprawnego działania tego połączenie jest obeność w jądrze modułu RNDIS, odpowiedzialnego za zestawienie połączenie sieciowego po łączu USB. W przypadku Ubuntu odpowiednie jądro zostało juz skompilowane z odpowiednimi modułami.

Po podłączeniu telefonu warto wydać polecenie:

# ip a s usb0

Jeżeli polecenie to wyświetli informacje o interfejsie usb0 to oznacza, że połączenie działa, pozostaje je tylko skonfigurować.

A konfiguracja polega tak naprawdę na pobraniu adres IP z serwera DHCP. Można zrobić w następująco:

# dhclient usb0

Komenda ta powinna pobrać dynamiczny adres IP, po jej wydaniu warto sprawdzić, czy możemy połączyć się z jakimiś zasobami.

I tak naprawdę to wszystko, po tych operacjach powinno działać połączenie z Internetem.

Automatyczna konfiguracja połączenia z telefonem

Konfiguracja automatycznej konfiguracji internfejsu usb0 jest stosunkowo prosta. Należy w pliku /etc/network/interfaces dopisać dwie linijki:

1
2
auto usb0
iface usb0 inet dhcp

Pierwsza linijka oznacza automatyczne konfigurowanie wybranego interfejsu sieciowego, a druga informuje, że należy pobrać informacje o sieci IP pobrać z serwera DHCP.

Pozstaje jeszcze tylko zrestartować sieć:

# /etc/init.d/networking restart

Od tej pory po podłączeniu telefonu sieć USB powinna automatycznie zostać skonfigurowana.

Źródła

Tags: , ,

Udostępnienie połączenia internetowego z Andorida poprzez sieć bezprzewodową

W przypadku telefonów z systemem Android pojawia się pewien problem, jeżeli chcemy użyć go do udostępnienia połączenia z Internetem. Większość „normalnych” telefonów dysponuje wbudowanym modemem z którym można się połączyć z poziomu komputera i nawiązać odpowiednio połączenie. Niestety, nie jest tak w przypadku Androida. Tutaj trzeba korzystać z innych rozwiązań, które pozwalają na udostępnienie już nawiązanego połączenia z siecią.

Z grubsza sposoby można podzielić na wymagające uprzywilejowanego dostępu do telefonu i takie które go nie wymagają. O drugim sposobie więcej można przeczytać w tym artykule: Dostęp do Internetu za pomocą HTC G1 z systemem Android (Proxoid).

Jeżeli natomiast dysponujemy zrootowanym telefonem, otwiera się kilka kolejnych możliwości udostępnienia Internetu poprze telefon. Najciekawsza z nich (wg mnie) to połączenie w przy użyciu sieci bezprzewodowej. Uniezależni ona nas od gniazda USB (chociaż przy dłuższym korzystaniu z takiego połączenia i tak jakoś trzeba rozwiązać problem zasilania telefonu) i jednocześnie pozwala korzystanie z różnych usług sieciowych (np. protokołu SSH).

Konfiguracja telefonu

Konfiguracja telefonu jest stosunkowo prosta, ale trzeba pamiętać, że należy dysponować uprawnieniami użytkownika root. Wersja systemu Android musi być większa niż 1.5. Mój telefon miał zainstalowaną wersję 2.1.

Pierwszym krokiem będzie zainstalowanie aplikacji Wireless Thether for Root Users, można ją znaleźć w markecie aplikacji:

Andorid Market - Wireless Thether

Andorid Market - Wireless Thether

Po instalacji można przejść do szybkiej konfiguracji. W moim przypadku postanowiłem użyć połączenia szyfrowanego przy użyciu 128 bitowego algorytmu WEP. Po uruchomieniu aplikacji należy wcisnąć klawisz Menu i wybrać pozycję Setup.

Włączenie szyfrowania WEP odbywa się poprzez zaznaczenie opcji konfiguracyjnej Enable WiFi-Encryption. Włącza ona 128 bitową wersję algorytmu WEP.

Wireless Thether - Włączenie szyfrowania WEP

Wireless Thether - Włączenie szyfrowania WEP

Kolejnym krokiem będzie ustawienie odpowiedniego hasła korzystając z opcji Change Passphrase. Standardowo jest ustawione poniższe hasło, które oczywiście należy zmienić. Należy pamiętać, że musi ono posiadać dokładnie 13 znaków (ani mniej, ani więcej).

Wireless Thether - Zmiana hasła

Wireless Thether - Zmiana hasła

Teraz kolej jeszcze na dwie opcje: konfiguracja nazwy sieci (pozycja Change SSID) oraz kanał, na którym będzie pracować nasza sieć (Change Channel). Ich zmiana nie jest obowiązkowa, ale na jednym obszarze nie powinny znaleźć się dwie sieci o takiej samej nazwie oraz pracujące na tym samym kanale. Wartości te także będę potrzebne podczas konfiguracji komputera, więc należy je przynajmniej zapamiętać, ale najlepiej ustawić na własne.

Wireless Thether - Zmiana SSID

Wireless Thether - Zmiana SSID

Wireless Thether - Zmiana kanału

Wireless Thether - Zmiana kanału

Ostatnim krokiem będzie konfiguracja zakresu adresów IP, które będę przydzielane komputerom łączącym się z telefonem (nie jest to także konieczne, ale czasem trzeba te wartości zmienić na inne, jeżeli kolidują z jaką inną siecią działającą na naszych maszynach):

Wireless Thether - Zmiana kanału

Wireless Thether - Zmiana kanału

Teraz nie pozostaje nic innego jak tylko włączyć sieć bezprzewodową i przystąpić konfiguracji komputera. Aplikację uruchamiamy poprzez naciśniecie zielonego symbolu sieci wifi:

Wireless Thether - Włączenie sieci wifi

Wireless Thether - Włączenie sieci wifi

Podczas uruchamiania sieci zostaniemy zapytania, czy aplikacja może uzyskać uprawnienie super-użytkownika (czyli użytkownika root). Należy wyrazić na to zgodę, w przeciwnym wypadku sieć nie zostanie uruchomiona.

Konfiguracja komputera

Konfiguracja komputera jest prosta. Jeżeli korzystamy np. z narzędzia WiCd lub Network Manager wystarczy wybrać zdefiniowaną sieć, podać klucz do sieci WEP i powinno wszystko działać.

Jest jednak przynajmniej jeden problem z użyciem tych narzędzie: karty Intela identyfikujące się w taki sposób Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61) nie działają tak pięknie i prosto (a ja należę to tych „szczęśliwców is traciłem kilka godzin próbując uzyskać połączenie).

Problem objawia się tym, że nie można pobrać adresu IP przy użyciu serwera DHCP (ustawienie adresu na statyczny nie rozwiązuje problemu). Więcej o tym błędzie można znaleźć na tym zgłoszeniu o błędzie Bug 1689 – iwl3945, ad-hoc mode not working. Błąd powinien już zostać usunięty, więc pewnie w przypadku nowszych wersji jądra wszystko będzie działać.

Istnieje pewne obejście problemów z tą kartą, polega ono na konfiguracji interfejsu sieciowego w określonej kolejności i można to zrobić przy użyciu standardowych narzędzi dostępnych w systemie. Poniżej znajduje się, który wykonuje odpowiednie czynności, pwostał on na podstawie skryptu zaprezentowanego w tym artykule: How-To: Intel Wireless 4965 AGN with Ad-Hoc network + WEP. Oryginalny skrypt ma jednak wg mnie przynajmniej dwie wady:

  • próbuje usunąć moduły jądra, które w mojej wersji nie istnieją (prawdopodobnie w jakieś wcześniejszej wersji jądra miało to sens)
  • skrypt jest napisany w Pythonie, a jedynym jego celem jest wywoływanie odpowiednich poleceń, wg mnie dużo lepszym rozwiązaniem będzie tutaj prosty skrypt napisany w bashu

Moja wersja nazwa się android_network i wygląda następująco:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash


INTERFACE="wlan0"
ESSID="siec"
KEY="abcdefghijklm"
CHANNEL=2
RATE="auto"
SLEEP=2

INIT_NETWORK_SCRIPT='/etc/init.d/wicd'

if [ $1 == "start" ]; then

        echo "Wyłączam zarządzanie siecią bezprzewodową"
        $INIT_NETWORK_SCRIPT stop

        echo "Wyłączam interfejs sieciowy $INTERFACE"
        ifconfig $INTERFACE down
        sleep $SLEEP

        echo "Pierwsza próba połączenia"
        iwconfig $INTERFACE essid $ESSID channel $CHANNEL mode ad-hoc key s:$KEY rate $RATE
        sleep $SLEEP


        ifconfig $INTERFACE up
        sleep $SLEEP

        echo "Druga próba połączenia"
        iwconfig $INTERFACE essid $ESSID channel $CHANNEL mode ad-hoc key s:$KEY rate $RATE
        sleep $SLEEP

        echo "Pobieram adres DHCP"
        dhclient $INTERFACE

        exit $?
fi

if [ $1 == "stop" ]; then

        echo "Zwalniam adres DHCP"
        dhclient -r $INTERFACE

        echo "Wyłączam intefejs sieciowy $INTERFACE"
        ifconfig $INTERFACE down

        echo "Uruchamiam zarządzanie siecią bezprzewodową"
        $INIT_NETWORK_SCRIPT start

        exit $?
fi

Włączenie odbywa się poprzez wydanie polecenia

# android_network start

Wyłączenie sieci poprzez polecenie

# android_network stop

Skrypt ten można umieścić np. w katalogu /usr/local/bin i nadać mu atrybut 700.

Przed pierwszym uruchomieniem należy jeszcze skonfigurować odpowiednie zmienne:

  • INTERFACE – interfejs sieci bezprzewodowej, który będzie konfigurowany
  • ESSID – nazwa sieci udostępnianej przez telefon
  • KEY – hasło do sieci WEP
  • CHANNEL – kanał, który jest wykorzystywany do komunikacji
  • RATE – prędkość transmisji
  • SLEEP – czas, jaki należy odczekać pomiędzy wywołaniami poszczególnych poleceń, w przedziale od 2 do 10 sekund
  • INIT_NETWORK_SCRIPT – skrypt, który wyłączy aplikacje zarządzające siecią bezprzewodową, w moim przypadku WiCd

W moim przypadku uruchomienie tego skryptu zaowocowało połączeniem się z siecią WEP udostępnianą przez telefon.

Źródła

Tags: , ,

Instalacja systemu Android 2.1 (Eclair) na telefonie G1

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.

Wpis ten jest kontynuacją artykułu: Uzyskanie roota w telefonie G1 od Ery.

Teraz kolej na instalację docelowego systemu operacyjnego. W moim przypadku będzie Andorid w wersji 2.1 (nazwa kodowa Eclair). Oczywiście system nie będzie pochodził od operatora ;). Zdaje się także, że oficjalnie nigdy nie pojawi się ta wersja Androida na telefony G1, ponieważ mają one za mało pamięci RAM. W wersji nieoficjalnej o nazwie CyanogenMod w wersji 5.0.8.

Zanim zaczniesz

Oto lista elementów, które muszą zostać spełnione aby zainstalować nową wersję systemu operacyjnego:

  • telefon z dostępem do użytkownika root (zrootowany)
  • zainstalowane radio w wersji 2.22.23.02

Uwaga!

Nie spełnienie tych wymagań może spowodować, że telefon przestanie działać.

Lista potrzebnych plików

Należy pobrać następujące pliki i przegrać je do głównego katalogu karty SD:

  • DangerSPL – w pliku tym znajduje się tak zwany Second Program Loader. Odpowiada on za przygotowanie telefonu i zadołowanie systemu operacyjnego. Jest on niezbędny do tego, aby zainstalować Androida 2.1 na telefonach G1. Pozwala on tak przygotować telefon poprzez odpowiednie partycjonowanie pamięci i karty, że omija barierę 64MB pamięci przeznaczonej na system operacyjny.

    Instalacja tego pakietu jest także najbardziej ryzykowana. Należy się upewnić, że przed instalacją została zrobiona kopia wszystkich danych (wszystkie dane zostaną zniszczone) oraz że dysponujemy radiem w wersji 2.22.23.02. Nie można go instalować z radiami z serii 1.x, 4.x czy 6.x – jeżeli spróbujemy, telefon przestanie działać.

    Sprawdzenie wersji radia, która jest zainstalowana na telefonie:

    1. Uruchom telefon w trybie fastboot – podczas włączania telefonu naciśnij i przytrzymaj przycisk włączający kamerę.
    2. Sprawdź wpis mówiący o wersji radia, jeżeli się zgadza, możesz kontynuować
    3. Aby wyjść z tego trybu należy wcisnąć równocześnie kombinację klawiszy MENU+SEND+END – czyli MENU + telefon + odłożoną słuchawkę.
  • gapps-ds-ERE36B-signed.zip – aplikacje od firmy Google
  • CyanogenMod 5 for Dream/Sapphire – system operacyjny Android 2.1

Aktualizacja systemu operacyjnego

Instalacja systemu jest relatywnie prosta, sprowadza się do kilku restartów i instalacji odpowiednich pakietów. Ważna jest kolejność instalacji, więc należy zwrócić na to szczególną uwagę.

  1. Jeżeli jeszcze tego nie zrobiłeś, skopiuj pobrane pliki do głównego katalogu karty SD.
  2. Włącz telefon w trybie recovery – czyli podczas włączania przytrzymaj klawisz Home.
  3. Instalacja DangerSPL – wybierz pozycję Flash from file a następnie plik spl-signed.zip, potwierdź chęć instalacji. Plik zostanie zainstalowany i pojawi się prośba o restart telefonu (co też należy uczynić). Zostanie dokończona instalacja DangerSPL i nastąpi ponowny restart telefonu do trybu recovery.
  4. Wyczyść teraz wszystkie dane z telefonu, czyli Wipe Data/Factory Reset.
  5. Instalacja systemu operacyjnego – wybierz pozycję Flash from file a następnie plik update-cm-5.0.8-DS-signed.zip i potwierdź chęć instalacji. Zainstaluje do właściwy system operacyjny.
  6. Instalacja aplikacji Google – wybierz pozycję Flash from file a następnie plik gapps-ds-ERE36B-signed.zip i potwierdź chęć instalacji. Zainstaluje do aplikacje Google w telefonie.
  7. Restart telefonu i odczekanie kilku minut na jego uruchomienie.
  8. Rejestracja konta u Googla.

Mi się udało te kroki przejść bez jakiś problemów i wygląda na to, że telefon działa bez problemów. Co prawda ponowna instalacja aplikacji, ich konfiguracja i generalnie dostosowanie telefonu zajmie jeszcze klika dni.


Zapowiada się, że Android 2.2 także będzie dostępny na G1, trzeba będzie zainstalować CyanogenMod w wersji 6. Niestety, w chwili gdy ja aktualizowałem system była dostępna wersja beta, gdzie nie działa kamera i klika innych rzeczy. Ale może warto sprawdzić jak się sprawy mają.

Źródła

Tags: , , , ,

Uzyskanie roota w telefonie G1 od Ery

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

Tags: , , ,

Tworzenie prezentacji przy użyciu LaTeX cz. 3: budowa prezentacji

We wcześniejszych wpisach przedstawiłem w jaki sposób utworzyć szkielet prezentacji w LaTeXu. Teraz czas na utworzenie właściwych slajdów. Od razu uprzedzę, znajdą się tu tylko same podstawowe informacje, akurat to co było mi potrzebne do utworzenia prezentacji o Subversion.

Konstrukcja slajdu

Slajdy w klasie Beamer są zawarte między dwoma tagami: \begin{frame} oraz \end{frame}. Tylko to co zostanie umieszczone pomiędzy nimi zostanie wzięte pod uwagę i na tej podstawie zostaną wygenerowane slajdy.

Generalnie wynikiem pojedynczej ramki (frame) jest utworzenie pojedynczego slajdu w pliku PDF. Nie zawsze jednak tak będzie, istnieją polecenia, których użycie spowoduje wygenerowanie większej ilości slajdów.

I tak wygląda podstawowy slajd:

Przykładowy slajd w LaTeXu

Jego definicja:

237
238
239
240
241
242
243
244
245
246
247
248
249
250
\begin{frame}[c]{Kiedy blokowanie jest potrzebne}
  Model kopiuj -- modyfikuj -- scal sprawdza się bardzo
  dobrze przy założeniu, że mamy do czynienia z plikami
  tekstowymi, które są łatwe w zarządzaniu i sprawdzaniu
  co się zmieniło.

  \pause

  W przypadku pracy z plikami binarnymi, których nie da się
  łatwy czy też nawet automatyczny sposób scalić, przydatne
  może być blokowanie plików przed rozpoczęciem ich
  modyfikacji.

\end{frame
}

Slajd ten jest zbudowany w nastepujący sposób:

  • \begin{frame} – rozpoczęcie slajdu
  • [c] – mówi, że zawartość slajdu ma zostać wycentrowana na środku, można też użyć [t] mówiącego, że zawartość slajdu ma zostać wyrównana do góry
  • {Kiedy blokowanie jest potrzebne} – tytuł slajdu, można także umieścić podtytuł w kolejnym nawiasie klamrowym, do dyspozycji są także dwa polecenie: \frametitle oraz \framesubtitle, które pozwalają na ich ustawienie wewnątrz slajdu
  • zawartość slajdu, w tym przypadku po prostu akapit tekstu, poszczególne akapity muszą być rozdzielone przynajmniej dwoma znakami końca linii (jeden znak końca linii pozwala na dzielenie długiej linii w pliku źródłowym, ale przez LaTeX będzie on zastąpiony znakiem spacji)
  • \pause – powoduje, że zostanie zatrzymane wyświetlenie slajdu w momencie napotkania znaczka, w praktyce w tym przypadku spowoduje wygenerowanie dwóch stron w pliku PDF: pierwsza będzie zawierała tylko pierwszy akapit, druga oba
  • \end{frame} – koniec slajdu

Wypunktowania na slajdach

Jednym z najczęściej używanych elementów prezentacji są różnego rodzaju wypunktowania. W przypadku tworzenia prezentacji mamy można zdefiniować ich trzy rodzaje:

  • lista
  • numerowane
  • użycie definicji do numerowania

Lista wartości

Przykładowy wygląd listy wartości:

LaTeX - lista wartości

LaTeX - lista wartości

I kod który odpowiada za wygenerowanie tej strony:

73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
\begin{frame}{Czym jest repozytorium}
    \begin{itemize}
        \item scentralizowany system współdzielenia danych
        \item operacje jakie można wykonać na repozytorium:
        \begin{itemize}
            \item dodawanie plików
            \item usuwanie plików
            \item zmiany nazwy pliku
            \item przeniesienie pliku do innego katalogu
            \item zmiana właściwości
        \end{itemize}
        \item historia zmian
        \item odczyt danych przez klienta
    \end{itemize}
\end{frame
}

Nowe elementy, które się pojawiły:

  • \begin{itemize} – rozpoczęcie listy numerowanej
  • \item – nowy element listy
  • \end{itemize} – koniec listy numerowanej

Jak widać, listy można także zagnieżdżać poprzez ponowne rozpoczęcie definicji listy numerowanej. Jeżeli z jakiś powodów chcemy wyświetlić część elementów listy, lub wyświetlać je po kolei, to zawsze można w odpowiednim miejscu dodać polecenie \pause.

Lista numerowana

Tworzenie list numerowanych wygląda praktycznie tak samo jak tworzenie zwykłej listy (zmienia się tylko jej typ). Tak wygląda slajd w wybranym temacie:

LaTeX - lista numerowana

LaTeX - lista numerowana

I kod odpowiedzialny za jego wygenrowanie:

129
130
131
132
133
134
135
136
137
138
\begin{frame}{Zablokuj -- zmodyfikuj -- odblokuj}{Schemat działania}
    \begin{itemize}
        \item sposób działania:
        \begin{enumerate}
            \item zablokuj plik
            \item zmodyfikuj plik
            \item odblokuj plik
        \end{enumerate}
    \end{itemize}
\end{frame
}

Elementy nowe:

  • \begin{enumerate} – rozpoczęcie listy numerowanej
  • \item – kolejny element listy
  • \end{enumerate} – zakończenie listy numerowanej

Listy z wartościami definiowanymi

Można także stworzyć listę, w której będzie się podawało definicję, która jest opisywana:

LaTeX - lista definiowanych wartości

LaTeX - lista definiowanych wartości

Kod, który definiuje tę stronę:

340
341
342
343
344
345
346
347
\begin{frame}{Budowa repozytorium}
    Zalecany podział repozytorium na katalogi:
    \begin{description}[\texttt{branches}]
        \item[\texttt{trunk}] aktualna wersja danych (np. bieżący rozwój projektu)
        \item[\texttt{branches}] poszczególne odgałęzienia projektu
        \item[\texttt{tags}] oznakowane wersje
    \end{description}
\end{frame
}
  • \begin{description}[\texttt{branches}] – rozpoczęcie listy opisowej, w nawiasach [] można podać wartość najszerszego elementu, dzięki temu będzie możliwe odpowiednie ustawienie szerokości kolumny na wartości opisowe
  • \item[\texttt{trunk}] – kolejny element listy, w nawiasach [] podaje się wartość etykiety
  • \texttt{trunk} – wyświetlenie podanego tekstu (w nawiasach {}) przy użyciu czcionki o stałej szerokości znaków
  • \end{description} – koniec listy opisowej

Wstawienie grafiki

Kolejnym elementem często umieszczanym w prezentacjach są rożnego rodzaju obrazki. W prezentacji wyglądają one tak:

LaTeX - grafika na slajdzie

LaTeX - grafika na slajdzie

Kod, który generuje ten slajd:

98
99
100
101
102
103
\begin{frame}{Współdzielenie plików}{Pobranie plików z repozytorium}
    \begin{figure}[t]
        \includegraphics[height=0.62\textheight,keepaspectratio=true,clip=true,trim=0 0 0 100]{img/wsp_plik_1.png}
        \caption{Użytkownicy pobierają plik z repozytorium}
    \end{figure}
\end{frame
}

Znaczenie nowych elementów:

  • \begin{frame}{Współdzielenie plików}{Pobranie plików z repozytorium} – podanie tytułu i jednocześnie podtytułu slajdu
  • \begin{figure}[t] – oznaczenie, że będzie wstawiany obrazek, który zostanie wyrównany do góry (znacznik [t]
  • \includegraphics – wstawienie grafiki
    • height=0.62\textheight – ustawienie nowej wysokości obrazka, w tym przypadku to będzie 0,62 pomnożone przez wielkość miejsca na wprowadzenie tekstu
    • keepaspectratio=true – przy skalowania obrazka zachowaj proporcje
    • clip=true – obcięcie marginesów, należy ustawić aby działał parametr trim
    • trim=0 0 0 100 – zdefiniowanie marginesów do obcięcia
    • {img/wsp_plik_1.png} – ścieżka dostępu do grafiki
  • \caption – definicja podpisu pod obrazkiem
  • \end{figure} – koniec wstawianie obrazka

Tworzenie ramek

Można na prezentacji także umieszczać rożnego rodzaju ramki pozwalające na grupowanie informacji znajdujących się na slajdzie.

LaTeX - tworzenie ramek

LaTeX - tworzenie ramek

I kod pozwalający na wygenerowanie tego slajdu:

329
330
331
332
333
334
335
336
337
338
\begin{frame}{Utworzenie repozytorium}
    \begin{block}{Linia poleceń}
        \texttt{svnadmin create NoweRepozytorium}
    \end{block}
    \begin{block}{TortoiseSVN}
        \begin{figure}
            \includegraphics[scale=0.45,keepaspectratio=true]{img/20_tortoise_create_new_repository.png}
        \end{figure}
    \end{block}
\end{frame
}

Jak widać, za utworzenie ramki odpowiada konstrukcja \begin{block}{Linia poleceń}. Pozwala ona na zdefiniowanie ramki oraz jej tytułu.

Pojawia się także dodatkowa opcja w polecenie \includegraphics: scale=0.45. Pozwala ona na skalowanie obrazka o zadaną wielkość.

Wstawienie fragmentów kodu

Przy normalnym używaniu LaTeXa musimy uważać na obecność znaków specjalnych, które są w odpowiedni sposób przez niego interpretowane. Czasem istnieje potrzeba wstawienia fragmentu np. kodu źródłowego, który zawiera pokaźna ilość tych znaków specjalnych (np. przykład użycia jakiejś metody w LaTeXu). Przydatna wtedy jest możliwość wyłączenia interpretacji tekstu jako poleceń Tex.

LaTeX - wyłączenie interpretacji poleceń TeX

LaTeX - wyłączenie interpretacji poleceń TeX

I kod źródłowy, który pozwala na wygenerowanie powyższego slajdu:

445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
\begin{frame}[fragile]{Konflikty związane z plikami}{Zmiany w wewnątrz pliku}
    W przypadku wystąpienia tego rodzaju konfliktu w pliku
    źródłowym można znaleźć następujące linie:
   
    \begin{verbatim}
        < <<<<<< nazwa pliku
        twoje zmiany       
        =======
        kod pobrany z repozytorium
        >>>>>>> nr rewizji
    \end{verbatim}
   
    Można teraz tak zmodyfikować plik, aby najlepiej
    odzwierciedlał stan faktyczny.
\end{frame
}

Na co zwrócić uwagę:

  • \begin{frame}[fragile] – podczas definiowania slajdu należy ustawić parametr [fragile], włącza ona odpowiedni sposób interpretacji slajdu i pozwala na użycie poniższego polecenia
  • \begin{verbatim} – rozpoczęcie bloku, które ma zawierać wrażliwy tekst
  • \end{verbatim} – koniec bloku
  •  

Przykładowy projekt – prezentacja Subversion

Powyższe informacje wystarczyły mi do utworzenia prezentacji o Subversion. Poniżej link zarówno do pliku PDF z prezentacją, jak i do jej źródeł w LaTeXu:

Źródła

Tags: , , ,