W przeciwieństwo do wielu innych telefonów HTC G1 z Androidem nie ma wbudowanego modemu umożliwiającego zestawienie połączenia z siecią Internet po podłączeniu do do komputera. Jest to dosyć irytująca cecha, która utrudnia wykorzystanie łączności Internetowej w podróży. W przypadku telefonów, które nie zostały „zrootowane” musimy posiłkować się zarówno odpowiednią aplikacją na telefonie, jak i zbudować odpowiedni tunel łączący nasz komputer z telefonem.

Krok 1: Instalacja aplikacji Proxoid na telefonie

Najpierw należy zainstalować aplikację Proxoid na telefonie. Jest ona dostępna na Google Market, więc nie powinno to sprawić kłopotów.

Krok 2: Konfiguracja telefonu

Włączyć tryb „USB debugging” na telefonie. Jest on potrzebny do tego, aby dało się komunikować z telefonem z poziomu komputera. Czyli z MENU wybrać opcję Settings->Applications->Development, i zaznaczyć opcję USB debugging.

Okienko Android USB Deugging

Okienko Android USB Deugging

Krok 3: Konfiguracja UDEV

Przynajmniej w przypadku Ubuntu trzeba jeszcze skonfigurować odpowiednio demona UDEV, tak aby poprawnie rozpoznawał telefon. Należy utworzyć plik /etc/udev/rules.d/11-android.rules o następującej zawartości:

1
2
SUBSYSTEMS=="usb", SYSFS{idVendor}=="0bb4", SYSFS{idProduct}=="0c02", MODE="0666", OWNER="nazwa użytkownika"
SUBSYSTEMS=="usb", SYSFS{idVendor}=="0bb4", SYSFS{idProduct}=="0c01", MODE="0666", OWNER="nazwa użytkownika"

Aktualizacja

W przypadku jądra 2.6.32 powyższy wpis sprawiał mi problemy (telefon był ciągle wykrywany, nagle przestawał być widziany). Dopiero zmiana tego wpisu na poniższy rozwiązała problemy:

1
2
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c01", ENV{ACL_MANAGE}="1", MODE="0666", OWNER="nazwa użytkownika"
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c02", ENV{ACL_MANAGE}="1", MODE="0666", OWNER="nazwa użytkownika"

Swoją drogą, wg. komunikatów podawanych przez jądro to użycie atrybuty SYSFS nie jest zalecane przynajmniej od wersji 2.6.32, zamiast tego poleca się użycie właśnie atrybutu ATTR.

Należy wpisać swoją nazwę użytkownika po deklaracji OWNER.

Teraz restart demona:

# /etc/init.d/udev restart

I można podłączać telefon. Po wydaniu poniższego polecenia powinniśmy otrzymać podobny komunikat:

# lsusb  | grep High
Bus 001 Device 017: ID 0bb4:0c02 High Tech Computer Corp.

Krok 4: Pobranie SDK do androida

Należy pobrać SDK do tworzenia aplikacji dla systemu Android. Znajduje się tam aplikacja o nazwie adb, która będzie potrzebna do uzyskania połączenie pomiędzy komputerem a telefonem.

SDK można pobrać ze strony: http://developer.android.com/sdk/index.html.

W moim przypadku korzystam z Android SDK ver. 1.6 oraz na telefonie także mam zainstalowany system Android w wersji 1.6.

Po pobraniu SDK należy je rozkompresować i odszukać polecenie adb, które zaraz będzie potrzebne. Powinno ono znajdować się w katalogu: android-sdk/tools/adb.

Krok 5: Utworzenie tunelu

Ponieważ telefon nie posiada modemu, nie można w zwykły sposób zestawić połączenia pomiędzy nim a komputerem. Do tego celu służy aplikacja adb, która potrafi nasłuchiwać na wybranym porcie i przekazywać dane do telefonu także tam na odpowiedni port. Przypomina to tworzenie tunelu przy użyciu ssh.

Włączenie nasłuchiwania na lokalnym porcie 8080 i przekazywanie pakietów na port 8080 na telefonie, gdzie aplikacja Proxoid pobierze je i przesle dalej w świat:

/adb forward tcp:8080 tcp:8080
* daemon not running. starting it now *
* daemon started successfully *

Przy pierwszym wywołaniu aplikacji otrzymamy komunikat o jej starcie. Za pomocą programu netstat można sprawdzić, czy adb faktycznie nasłuchuje na wybranym przez nas porcie:

$ netstat -tlpn | grep adb

tcp        0      0 127.0.0.1:5037          0.0.0.0:*               LISTEN      11573/adb
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      11573/adb

Jeżeli wynikiem działania polecenia netstat będzie tylko jedna linia (lub wcale), to można jeszcze raz spróbować włączyć przekierowanie portów przy użyciu adb. Jeżeli w wyniku znajdzie się linia w postaci 127.0.0.1:8080 to wszystko powinno nam już działać.

Krok 6: Konfiguracja przeglądarki

Należy skonfigurować wybraną przeglądarkę tak, aby korzystała z serwera proxy HTTP. Jako adres serwera należy wpisać wartość localhost, jako port 8080.

Jeżeli zdarza się nam często konfigurować serwer proxy, warto rozważyć na przykład instalację dodatku FoxyProxy do Firefoksa.

Krok 7: Uruchomienie aplikacji Proxoid

Ostatnim elementem jest uruchomienie aplikacji Proxoid na telefonie. Po uruchomienie należy wybrać jeszcze przełącznik Start/Stop Proxoid i powinniśmy się już cieszyć działającym połączeniem z siecią Internet.

Kroków było sporo, ale w codziennym użytkowaniu konieczne będzie wykonanie tylko kroków 5, 6 oraz 7.

Problemy

Jeżeli z jakiś powodów nie działa komunikacja, należy sprawdzić za pomocą polecenia netstat czy aplikacja adb nasłuchuje na odpowiednim porcie. Jeżeli nie, to uruchomić ją ponownie (nie wiem czemu, ale czasem się po prostu proces wysypuje).

Można także sprawdzić, czy adb wykrywa nasz telefon:

$ ./adb devices

List of devices attached
HT92FKV03562    device

W przypadku konfliktów portów, można zmienić port 8080 na jakiś inny, ale należy pamiętać aby jego numer był większy niż 1024 oraz zmodyfikować odpowiednio konfigurację przeglądarki.

Źródła