Portál AbcLinuxu, 1. května 2025 01:29
Jsem pomerne novym majitelem telefonu Samsung E250V (od Vodafone, k pausalu). Za svoji cenu toho nabizi pomerne hodne, ale o tom psat nebudu a nechci. Trapila me jedna vec, stahovani java her a aplikaci.
Od vyrobce je to totiz sikovne zablokovano jen na WAP, cili pomerne draha a nesikovna zalezitost. Postupne jsem na netu nasel par navodu, z nichz jsem pochopil, ze to jde i jinak. Bohuzel navody byly vyhradne pro Windows a jeste s pouzitim komercnich nastroju.
Googlenim jsem k nicemu nedospel, dany navod se vyskytoval na hodne forech. Jedine o cem se tam ale diskutovalo byla neschopnost urcitych jedincu postupovat krok za krokem, dusledkem cehoz jim postup nefungoval. Zajimal jsem se, zda existuje nejaky zpusob, jak stahovat hry do telefonu pod Linuxem ale to byla proste mission impossible. Rekl jsem si, ze to zkusim jinak a vysledkem je tento navod.
Hned na zacatek si muzeme rict, ze k uspesnemu stahovani potrebujeme tyto zalezitosti:
Nejprve musime obstarat vlastni spojeni s telefonem. Pouzivam Bluetooth dongle od Soleda v cene asi 200,- Kc. Prenos nebezi moc rychle ale funguje a za tu cenu se proste vyplati. K jeho zprovozneni potrebujeme jednak zapnout Bluetooth v jadre (v sekci Networking) a pak nainstalovat balicek bluez-utils.
Zkusime najit telefon pomocihcitool scan
. Opiseme si MAC adresu telefonu (ja budu vzdy psat XX:XX:XX:XX:XX:XX) a nastavime konfigurak v /etc/bluetooth/rfcomm.conf
rfcomm0 { # Automatically bind the device at startup bind yes; # Bluetooth address of the device device XX:XX:XX:XX:XX:XX; # RFCOMM channel for the connection channel 2; # Description of the connection comment "Samsung E250V"; }Toto by melo automaticky spojit telefon a umistit odkaz do /dev/rfcomm0. Osobne to ale spoustim z prikazove radky pouzitim
rfcomm bind 0 XX:XX:XX:XX:XX:XX 2
. Mozna jeste nastavime pin v /etc/bluetooth/pin, abychom se mohli bez problemu sparovat. Spravnost nahozeni seriove linky overime napr. pomoci nastroje gsmctl
z balicku gsblib. Vyvolanim gsmctl ME -d /dev/rfcomm0
by se nam mely vypsat zakladni udaje o telefonu.
Dalsi podminkou je bezici PPP spojeni mezi telefonem a PC. Pouzijeme ppp demon, opet pouzivam primo prikazovou radku.
pppd /dev/rfcomm0 nodetach local debug lock 192.168.1.1:192.168.1.2 mtu 270
Kdyz se to spusti s temito parametry, tak demon zustane bezet v popredi a muzete si tak zkontrolovat, zda nedoslo k nejakemu problemu pri navazovani spojeni. Spojeni ale musi iniciovat telefon, jak ho tedy k tomu primet?
Na klavesnici telefonu vytukejte *#JAVATEST#. Dostanete se do servisniho menu. Zmente nosnou technologii na seriovou linku -> OTA type setting, Serial bearer OTA. Toto staci provest jen jednou, potom spustte onen ppp demon a prejdete do menu Serial test -> PPP UP -> Bluetooth. Timto se navaze PPP spojeni telefonu s PC. Vypis ze strany PPP demonu by mel vypadat zhruba takto:
Using interface ppp0 Connect: ppp0 <--> /dev/rfcomm0 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xa8183940> <pcomp> <accomp>] rcvd [LCP ConfReq id=0x3 <asyncmap 0xa0000>] sent [LCP ConfAck id=0x3 <asyncmap 0xa0000>] sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xa8183940> <pcomp> <accomp>] rcvd [LCP ConfRej id=0x1 <magic 0xa8183940> <pcomp> <accomp>] sent [LCP ConfReq id=0x2 <asyncmap 0x0>] rcvd [LCP ConfNak id=0x2 <asyncmap 0xa0000>] sent [LCP ConfReq id=0x3 <asyncmap 0xa0000>] rcvd [LCP ConfAck id=0x3 <asyncmap 0xa0000>] sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>] sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 192.168.1.1>] rcvd [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>] sent [IPCP ConfRej id=0x1 <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>] rcvd [LCP ProtRej id=0x4 80 fd 01 01 00 0c 1a 04 78 00 18 04 78 00] Protocol-Reject for 'Compression Control Protocol' (0x80fd) received rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>] sent [IPCP ConfReq id=0x2 <addr 192.168.1.1>] rcvd [IPCP ConfReq id=0x3 <addr 0.0.0.0>] sent [IPCP ConfNak id=0x3 <addr 192.168.1.2>] rcvd [IPCP ConfAck id=0x2 <addr 192.168.1.1>] rcvd [IPCP ConfReq id=0x5 <addr 192.168.1.2>] sent [IPCP ConfAck id=0x5 <addr 192.168.1.2>] Cannot determine ethernet address for proxy ARP local IP address 192.168.1.1 remote IP address 192.168.1.2 Script /etc/ppp/ip-up started (pid 8300) Script /etc/ppp/ip-up finished (pid 8300), status = 0x1
Vidime, ze mame navazano spojeni, adresa tunelu na strane PC je 192.168.1.1, na strane telefonu 192.168.1.2. Funkcnost muzete overit pomoci ping 192.168.1.2
, telefon by mel normalne odpovidat. Samozrejme adresy muzete libovolne zmenit, pokud vam zrovna tento rozsah s necim koliduje.
127.0.0.1
. Dlouho mi trvalo, nez mi doslo, ze telefon se snazi navazat spojeni sam se sebou (a ne s PC na mistni smycce). Kdyz jsem to zjistil, premyslel jsem, jak z toho ven. A resenim byl DNAT. Do IPTables je potreba pridat nasledujici pravidlo.
iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp -j DNAT --to-destination 192.168.1.1Tim prinutime smerovat spojeni na nas pocitac, kde jiz muze poslouchat www server. V opacnem smeru neni potreba nic stavet, protoze routavaci tabulka nam odpoved nasmeruje spravne do PPP tunelu.
Blizime se do finale :) Musime nastavit WWW server tak, aby poslouchal na portu 888 na adrese 192.168.1.1. Ja jsem zvolil thttpd
, protoze nema cenu kvuli tomuto instalovat apache. Port staci upravit v souboru /etc/conf.d/thttpd
.
V adresari /var/www/localhost
je nutno vytvorit adresar test, dat prava k pristupu pro uzivatele nobody
a do nej nahrat dva soubory: getNextApp.jad
a vlastni .jar
aplikace. Soubor getNextApp.jad
je prejmenovany puvodni .jad dodany k aplikaci. Je to vlastne popisovac, ktery dale telefonu rekne, o jaky soubor ma pozadat. Vlastni stahovani zahajime opet z servisniho menu k telefonu, volbou Serial test -> seriove stahovani. Telefon pak navaze spojeni s WWW servem, stahne dany MIDLet a aplikaci spusti.
Pokud mate vsechno dobre nastaveno a aplikace se stahla, tak se vam srdecne blahopreji! Myslim ze pro vas opet o trochu stoupla hodnota tohoto jinak skvele vybaveneho lowendoveho telefonku :)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.