Mały tutorial:
Jeśli będę pisał jakieś oczywiste dla czytającego zagadnienia, proszę wybaczyć ale moja przygoda z androidem zaczęła się dopiero 05.04.2012r od zakupu tabletu A73 🙂
Może trochę zbyt dużo informacji będę chciał przekazać, ale spędziłem ponad 2 tygodnie przeszukując różne strony i fora żeby to rozgryźć, a tu postaram się skondensować tą wiedzę.
Podstawowymi narzędziami z których musimy skorzystać są:
1. Program do wysyłania komend AT do modemu ( ja użyłem Hercules SETUP utility) RS232 terminal, serial port terminal, udp terminal, tcp/ip client server - Hercules
Aby wysłać komendę do modemu należy:
a) podłączyć modem do pc i zainstalować sterowniki
b) otworzyć menadżera urządzeń i odnaleźć modem
c) otworzyć jego właściwości -> zakładka modem w górnym rogu jest port modemu
d) uruchomić Herkulesa -> przejść do zakładki serial
e) wpisać lub wybrać port naszego modemu i kliknąć Open
f) w oknie na dole wpisać komendę -> kliknąć Send -> wcisnąć enter
UWAGA!!! niewłaściwe komendy mogą uszkodzić lub zablokować modem
2. Dostęp do konsoli, można go uzyskać na 3 sposoby:
a) instalując Terminal Emulator na tablecie – opcja najłatwiejsza ( aplikacja dostępna w Google Play) niestety mało wygodna w obsłudze ze względu na obsługę klawiatury dotykowej. Dużą zaletą jest wolny port USB oraz możliwość wyłączenia Wi-Fi
b) instalując na PCta Android SDK Tools – na tablecie należy włączyć Debugowanie USB, zainstalować Google USB Drivers, spreparpwać plik android_winusb.inf dodając w sekcji
[Google.NTx86]
%CompositeAdbInterface% = USB_Install, USB\Vid_18d1&Pid_0003&MI_01
%CompositeAdbInterface% = USB_Install, USB\Vid_18d1&Pid_0002&MI_01
po podłączeniu PC z Tabletem zainstalować sterownik i łączyć się przez :
C:\Program Files\Android\android-sdk\platform-tools>adb shell
(opcja najmniej wygodna , najbardziej pracowita, blokuje jedyny port USB w tablecie )
c) instalując na tablecie SSHDroid ( można łączyć się z PC przy pomocy Putty) - tej opcji używałem najczęściej, jednak musimy sobie zapewnić łączność sieciową z tabletem a przy włączonym Wi-Fi modem nie zestawi połączenia. Ja wybrnąłem z sytuacji podłączając kartę sieciową LAN-USB przez Hub-USB co pozwoliło na późniejsze podłączenie modemu.
3. aplikacja logcat uruchamiana w linii komend, pokazująca na bieżąco logi z operacji wykonywanych aktualnie w systenie. Dodatkowo jako narzędzie ułatwiajace poruszanie się po konsoli polecam instalację MC
Modemy Huawei ( i nie tylko ) posiadają dwa tryby działania Default i Modem, w zależności w jakim trybie pracują przedstawiają się w systemie dwoma różnymi ID. Tabelę najczęściej spotykanych modemów można znaleźć tu Mobile Broadband - DD-WRT Wiki . Do przełączania trybów w systemach Unixowych między innymi w Androidzie służy aplikacja usb_modeswitch. Ponieważ w przypadku modemów E353s-2 i E3131 podłączanych do Tabletu, aplikacja przełączająca działa prawidłowo nie będę się nad nią rozpisywał.
Poprawność aplikacji można sprawdzić uruchamiając u3gmonitor przed połączeniem modemu, lub wpisując lsusb , lub busybox lsusb
A teraz do rzeczy:
Aby modem E353s-2 działał z Tabletem GoClever A73 należy :
1. Sprawdzić działanie modemu i zainstalowanej w nim karty na komputerze PC, w przypadku kary Aero2 pomocny może być ten artykuł: Aero2 - Na czym polegają problemy z Huawei E169 - jdtech.pl
2. Korzystając z aplikacji Hercules wysłać do modemu
AT^SETPORT?
Modem powinien odpowiedzieć:
^SETPORT:A1,A2;1,16,2,3,A1,A2
następnie wydajemy komendę
AT^SETPORT="A1,A2;3,2,1,16,A1,A2"
dostaniemy odpowiedz OK
Zabieg ten służy do ustawienia kolejności urządzeń, ponieważ tablet szuka modemu na 3 porcie a domyślnie modem jest na porcie 1. po zmianie kolejności najlepiej odłączyć i podłączyć modem a następnie sprawdzić kolejność poleceniem AT^SETPORT? lub AT^GETPORTMODE
3. Podłączamy modem do Tabletu i sprawdzamy poprawność wykrycia i przełączenia trybu z Defaut na Modem:
busybox lsusb
Bus 001 Device 042: ID 12d1:14fe
a po chwili oczekiwania
busybox lsusb
Bus 001 Device 043: ID 12d1:1506
Nasz modem figuruje pod właściwym ID i jest na właściwym porcie niestety Adndroid nie zna takiego urządzenia, zatem wydajemy polecenie:
echo "12d1 1506" > /sys/bus/usb-serial/drivers/option1/new_id
4. należy skonfigurować APN w moim przypadku jest to Aero2
ustawienia -> sieci komórkowe -> punkty dostępowe -> nowa nazwa APN
Nazwa: Aero2
APN: darmowy
MCC: 260
MNC: 17
Typ uwierzytelnienia: PAP lub CHAP
reszta bez zmian
5. włączamy dodany APN jako domyślny
6. zaznaczamy ustawienia -> sieci komórkowe -> Włącz przesył danych
po chwili na dole ekranu powinna pojawić się upragniona ikona 3g oraz wskaźnik poziomu sygnału.
W przypadku problemów bardzo pomocne jest obserwowanie logów
I/pppd ( 1072): Starting pppd
V/SSHDroid( 474): EventsReceiver: WIFI_STATE_CHANGED_ACTION (exists: false, connected: false)
I/pppd ( 1073): PORT: /dev/ttyUSB2 115200
I/pppd ( 1074): USER:
I/pppd ( 1075): PSWD:
I/pppd ( 1076): CONN: /system/bin/chat -v -s -S TIMEOUT 25 ABORT 'BUSY' ABORT 'ERROR' ABORT '+CME ERROR:' '' AT '' ATH0 '' ATDT*99# CONNECT
I/pppd ( 1077): DISC: /system/bin/chat -v -s -S ABORT 'BUSY' ABORT 'ERROR' ABORT '+CME ERROR:' '' +++ATH0
W/Smack/Packet( 331): notify conn break (IOEx), close connection
W/Netd ( 82): No subsystem found in netlink event
D/NetlinkEvent( 82): Unexpected netlink message. type=0x11
I/qtaguid ( 331): Failed write_ctrl(u 66) res=-1 errno=22
I/qtaguid ( 331): Untagging socket 66 failed errno=-22
W/NetworkManagementSocketTagger( 331): untagSocket(66) failed with errno -22
D/ConnectivityService( 159): handleInetConditionChange: no active default network - ignore
V/SSHDroid( 474): EventsReceiver: WIFI_STATE_CHANGED_ACTION (exists: false, connected: false)
I/pppd ( 1078): Serial connection established.
D/pppd ( 1078): using channel 2
I/pppd ( 1078): Using interface ppp0
I/pppd ( 1078): Connect: ppp0 <--> /dev/ttyUSB2
D/Tethering( 159): MasterInitialState.processMessage what=3
D/Tethering( 159): MasterInitialState.processMessage what=3
D/dalvikvm( 159): GC_CONCURRENT freed 544K, 11% free 8463K/9479K, paused 2ms+5ms
D/pppd ( 1078): sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x7f753088> <pcomp> <accomp>]
D/pppd ( 1078): rcvd [LCP ConfReq id=0x1 <accomp> <pcomp> <asyncmap 0x0> <mru 1500> <magic 0x545> <auth chap MD5>]
D/pppd ( 1078): No auth is possible
D/pppd ( 1078): sent [LCP ConfRej id=0x1 <auth chap MD5>]
D/pppd ( 1078): rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x7f753088> <pcomp> <accomp>]
D/pppd ( 1078): rcvd [LCP ConfReq id=0x2 <accomp> <pcomp> <asyncmap 0x0> <mru 1500> <magic 0x545>]
D/pppd ( 1078): sent [LCP ConfAck id=0x2 <accomp> <pcomp> <asyncmap 0x0> <mru 1500> <magic 0x545>]
D/pppd ( 1078): sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
D/pppd ( 1078): sent [iPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
D/pppd ( 1078): rcvd [iPCP ConfReq id=0x1]
D/pppd ( 1078): sent [iPCP ConfNak id=0x1 <addr 0.0.0.0>]
D/pppd ( 1078): rcvd [LCP ProtRej id=0x3 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
D/pppd ( 1078): rcvd [iPCP ConfNak id=0x1 <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
D/pppd ( 1078): sent [iPCP ConfReq id=0x2 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
D/pppd ( 1078): rcvd [iPCP ConfReq id=0x2]
D/pppd ( 1078): sent [iPCP ConfAck id=0x2]
D/pppd ( 1078): rcvd [iPCP ConfNak id=0x2 <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
D/pppd ( 1078): sent [iPCP ConfReq id=0x3 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
D/pppd ( 1078): rcvd [iPCP ConfNak id=0x3 <addr 78.30.121.162> <ms-dns1 193.41.112.14> <ms-dns3 193.41.112.18>]
D/pppd ( 1078): sent [iPCP ConfReq id=0x4 <addr 78.30.121.162> <ms-dns1 193.41.112.14> <ms-dns3 193.41.112.18>]
D/pppd ( 1078): rcvd [iPCP ConfAck id=0x4 <addr 78.30.121.162> <ms-dns1 193.41.112.14> <ms-dns3 193.41.112.18>]
W/pppd ( 1078): Could not determine remote IP address: defaulting to 10.64.64.64
I/pppd ( 1078): local IP address 78.30.121.162
I/pppd ( 1078): remote IP address 10.64.64.64
I/pppd ( 1078): primary DNS address 193.41.112.14
I/pppd ( 1078): secondary DNS address 193.41.112.18
D/pppd ( 1078): Script /etc/ppp/ip-up started (pid 1081)
D/pppd ( 1078): Script /etc/ppp/ip-up finished (pid 1081), status = 0x0
D/ConnectivityService( 159): ConnectivityChange for mobile: CONNECTED/CONNECTED
Wszystkie operacje wykonujesz na własną odpowiedzialność
ps.: w przypadku modemu E3131 należy pominąć krok 2 ponieważ android w przypadku tego modemu odwołuję się własciwie do /dev/ttyUSB0
ps2 po podłączeniu modemu mogą pojawić się komunikaty "uszkodzona karta sd", "usunięta karta sd", nie mają one wpływu na pracę modemu
ps3 Może któryś z kolegów podpowie jak dodać "echo "12d1 1506" > /sys/bus/usb-serial/drivers/option1/new_id " do autostartu, atk aby po każdym restarcie urządzenia nie wpisywać tego z palca
ps4 zapomniałem dodać że w pliku /etc/3g_dongle.cfg dodałem :
[E353]
dongle_name=E353
production_name=E353
vendor_name=huawei
network_type=GSM_MODE
pid_vid_origin=0x12d114fe
bcdDevice_origin=0x0
pid_vid_now=0x12d11506
bcdDevice_now=0x0
at_port=1
ppp_port=0
[E3131]
dongle_name=E3131
production_name=E3131
vendor_name=huawei
network_type=GSM_MODE
pid_vid_origin=0x12d114fe
bcdDevice_origin=0x0
pid_vid_now=0x12d11506
bcdDevice_now=0x0
at_port=1
ppp_port=0
Małe uproszczenie, wystawiam swoje pliki w których dokonywałem zmian, do apns-conf.xml dodałem paremetry sieci Aero2, wiec po poprawnym wykryciu modemu w menu sieci komórkowe -> punkty dostępowe powinno pojawić się AERO2 wystarczy je aktywować po prawej stronie.
Wystarczy Herkulesem ustawić porty modemu i skopiować te pliki:
do katalogu /etc/
1. 3g_dongle.cfg
2. apns-conf.xml
do katalogu /system/etc/init.d/
3. 11aero2