Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: MobiLLion 30. 08. 2013, 10:48:55
-
zdravím,
prosím poraďte, jak si pomoct s následující situací. Mám zařízení s Android Jelly Bean (4.1.1) a potřebuju v určitých časových intervalech zjistit jeho síťovou dostupnost (ať už přes data operátora/T-Mobile, nebo Wi-fi). Potíž je v tom, že ping z internetu na veřejnou IP adresu zařízení neodpovídá (dohledal jsem na netu, že je to asi vlastnost JB, ICS na ping odpovídá).
Jak jinak můžu zjistit, že je můj Jelly Bean v noci on-line? Mám totiž podezření, že se mi nechtíc při delší nedostupnosti stopne proces připojení (Wi-fi i 2G/3G) a potřebuju se o tom přesvědčit/zjistit, kdy přesně se tak děje.
nejsem síťař, tak mě prosím neukamenujte. :-)
Díky,
Z.
-
Pingat zevnitř ven a monitorovat to na venkovním zařízení nebo postavit vpn a pingat přes ni.
-
taky bych zkusil tu vpn - jinak se za NAT např. v té mobilní síti stejně dostat nedá (pokud nemáš veřejnou IP)
na druhou stranu, VPN to rádio bude udržovat naživu, tedy problém s odpojováním se přitom neprojeví. dost možná se to neprojeví ani při pravidelném pingání z telefonu ven = spojení bude držet. každopadně androidy mají spoustu různých nastavení držení spojení, tedy problém může být i tam (data všechny, data na pozadí, wifi na baterce/na nabíječcce...)
-
Mě telefon připojený na stejnou WiFi jako notebook na ping odpovídá (Samsung Galaxy Note N7000 Android 4.1.2)
Jinak samozřejmě správné řešení je pingat z telefonu ven, na mobilní síti se tam zvenku stejně nedostaneš, si za NATem. Dřív sem měl Dell Streak a ten měl divnou wifi, která se odpojovala a sekala, zkoušel sem několik utilit, které kontrolovaly konektivitu a v případě výpadku se snažily wifi reasociovat či vypnout a zapnout, obvyklá strategie prostě bylo pingat na default gateway. Ale tokový proces ti bude zhoršovat standby výdrž, můžeš si tam dát i nějakou appku co bude na wifi držet wakelock, ale to s výdrží nejspíš zahýbe ještě více. Je vůbec otázka je se bude navenek jevit zařízení připojené na wifi po upadnutí do deep sleep i kdyby v bdělém stavu krásně na pingy reagovalo.
-
Jak píše Tonda, na lokalní Wifi síti to pingat půjde buď z jiného zařízení připojeného na wifi (na access pointu nesmí být nastaveno client isolation) nebo přímo z access pointu, pokud má AP takovou funkčnost. Např. z mého Mikrotiku RB751-2hnd i z Linksysu WRT-54GS s OpenWRT to jde.
-
Já mám nejnovější Android 4.3, předtím jsem měl 4.2.2 a ještě předtím 2.3.7 a všechny normálně na ping odpovídají. Já si pingám po IPv6 a funguje mi to na všech sítích naprosto bez problémů.
-
alfi: VPN nedám, nebo možná dal bych, ale nikdy jsem nic takovyho nedělal/nepotřeboval. Pingy v určitých intervalech rádio naživu neudrží, resp. tady nejde ani tak o rádio, ale o proces samotný. E-mailový klient mi taky data neudrží zapnutá, a to se synchronizuje co půl hodiny. Tohle je bug v JB - po nějaké době v režimu spánku se data cutnout, bez ohledu na nastavení. Já jen potřebuju zjistit, po jak dlouhé době, kdy přesně a tak...
astray: nepingá mi to ani v rámci wi-fi. Ještě ověřím nastavení toho AP, ale obávám se, že tady potíž nebude...
-
Jak sem psal, v Play store na dotaz wifi lock nebo wifi wake lock najdeš spoustu aplikací, které udrží wifi zapnutou a připojenou, ovšem to patrně bude znamenat, že telefon nepůjde do deep sleep, takže se rozluč s výdrží baterie. Ale nějak mi uniká smysl takového počítání.
-
Tonda: smysl je ten, aby se mi i v noci aktualizovaly e-maily (chodí mi tam různé alerty), aby mi i v noci chodily zprávy přes Whats app... Když mi telefon natvrdo vypne data (ať už Wifi, nebo 3G/2G), tak jsem v háji. :-(
-
Tohle je bug v JB - po nějaké době v režimu spánku se data cutnout, bez ohledu na nastavení. Já jen potřebuju zjistit, po jak dlouhé době, kdy přesně a tak...
ještě mě napadá syslog.. nevím, jestli bude použitelný i po delší době nebo je třeba připojit k PC s adb a ukládat až tam. bude tam čas a co se děje - tedy nejspíš i historie, kdy k odpojení došlo :-)
http://android.stackexchange.com/questions/14430/how-can-i-view-and-examine-the-android-log
-
Mám pocit, že triviální řešení je mít to na nabíječce, pak nejde do deep sleep, pokud si vynutíš neuspávání, tak to na tý nabíječce stejně budeš muset mít.
A když máš telefon přes den třeba hodinu v kapse aniž bys s ním cokoliv dělal, tak ten problém není, jen v noci po nějaké době nečinnosti?
-
Aha, tohle je běžné chování. Ve výchozím stavu ten telefon po pár minutách přejde do hlubokého spánku a odpojí se od Wi-Fi. Procesor pak nejede, systém spí a nereaguje. Na nabíječce se to nestane a systém běží a odpovídá stále. Chování Wifi se dá nastavit: Nastavení - Wifi - Pokročilé - Wifi aktivní i v režimu spánku. Na nabíječce je pak telefon pořád vzhůru a dá se k němu kdykoliv přopojit a třeba přenášet soubory nebo se vám na něj dovolají přes VoIP.
-
Já si nechávám posílat na mail informace o pohybech na účtu a přichází mi to i když telefon není na nabíječce a nějaký čas jen tak leží, používám GMail aplikaci, občas je tam pár minut prodleva. Ono také záleží na aplikaci jak je udělaná a jestli používá Google Cloud Messaging, každopádně například u IM klientů je poměrně často kritizováno, že při usnutí dojde k odpojení, nestudoval jsem jak se trvalé připojení po síti slučuje s deep sleep. taky se to asi může lišit podle zařízení, jak moc má ohnutou/doprasenou ROM i podle nastavení různých úsporných režimů apod., těch faktorů bude mraky. Teď si vzpomínám, že sem si kdysi hrál se SMB serverem na Androidu a že se mi stávalo, že nějaký čas po usnutí se share stával nedostupným.
Ale Android má mechanizmy jak si vynutit bdělost a připojení sítě, aplikace by snad měly umět se i pravidelně probouzet a např. stahovat poštu.
Jinak SMS jsou sichr, ty chodí vždy.
-
U Gmailu, IM a dalších aplikací funguje push. Telefon se nechá usnout a šetří se baterie. Ale server má možnost ho po GSM probudit a říct mu, že se něco děje. Telefon se pak normálně připojí a zjistí si, co je nového. Na rozdíl od udržování přímého spojení nebo pravidelného dotazování to výrazně šetří baterii.
-
Pingy v určitých intervalech rádio naživu neudrží, resp. tady nejde ani tak o rádio, ale o proces samotný
Koukni u OpenVpn na "keepalive (http://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html)". Spojeni udrzi, ale rychle vybije baterku.
Jdes na to blbe. Stahni si z Marketu app Llama (https://play.google.com/store/apps/details?id=com.kebab.Llama) a nastav si neco jako "zapni wifi na 1 minutu - vypni wifi a pockej 15 minut - zapni wifi na 1 minutu..."
-
U Gmailu, IM a dalších aplikací funguje push. Telefon se nechá usnout a šetří se baterie. Ale server má možnost ho po GSM probudit a říct mu, že se něco děje. Telefon se pak normálně připojí a zjistí si, co je nového. Na rozdíl od udržování přímého spojení nebo pravidelného dotazování to výrazně šetří baterii.
Je k tomu probouzení přes GSM nějaké technické info? Není to "jen" IMAP IDLE?
-
IMO je to probouzení přes GSM blbost, nedokážu si představit, že by servery byť třeba Google mohly nějak na úrovni GSM komunikovat s každou ze stovek sítí na světě a probouzet v ní přihlášené telefony. Základní info o GCM je tady http://developer.android.com/google/gcm/index.html ale nízkoúrovňovou technickou informaci o tom, jak u je telefonů v deep sleep zajištěn příjem dat, sem tam nenašel. Výhoda je, že aplikace, které toto využijí jsou prostě systémem vyvolány a nemusí mít puštěný v telefonu proces na pozadí nebo se pravidelně probouzet a něco olizovat. Nevýhoda, je že tam musí být serverová část, která komunikuje se serverovou částí GCM u Google tj. například u e-mailů nezávislý IMAP klient toto prostě nemůže použít, musel by to implementovat přímo ten IMAP server nebo by autor aplikace musel někde provozovat další, server, který by zvenku ten IMAP server hlídal (a tedy musel znát přihlašovací údaje) a následně klienta notifikoval.
-
Google (ale i Apple a všichni ostatní) pro to nabízí jak klient, tak server. Klientskou část v Androidu zajišťuje Google Play. Funguje to tak, že klient vyvolá spojení proti push serveru u Google a naobjednává si události, které ho mají později vzbudit. Pak se to spojení nechá viset v accept režimu a celý telefon může usnout včetně Wi-Fi a celého systému. Zůstane žít jen rádio, které udržuje spojení s GSM sítí. Tím se maximálně šetří baterie, nemusí se udržovat spojení kvůli IDLE v IMAP, ani se neprovádí energeticky nároční polling.
Pokud se stane objednaná událost (třeba přijde mail), push server se o tom dozví, otevře spojení a může při tom klientovi poslat i nějaká menší data (třeba předmět mailu jako základní info). Rádio zprávu dostane, probudí zbytek telefonu a doručí systému (resp. aplikaci Google Play) celou tu událost, podle které je pak rozhodnuto, která aplikace je probuzena (v našem příkladu mail klient) a zda jí mají být předána nějaká data z push zprávy nebo si je už sama pak vyžádá třeba od svého IMAP serveru.
-
Ano, tento vysokoúrovňový přehled se dá vyčíst z odkazu co sem uvedl. Ta zásadní otázka je jak je technicky vyřešeno to, že ten push server je schopen to na telefon dotlačit i když ten spí.
-
Google (ale i Apple a všichni ostatní) pro to nabízí jak klient, tak server. Klientskou část v Androidu zajišťuje Google Play.
Takze by teoreticky slo rozjet si svuj vlastni IMAP server, ktery by to umel? A jako klienta pouzit treba K-9 mail (https://play.google.com/store/apps/details?id=com.fsck.k9&hl=cs).
-
Jo, K9 je OSS, OSS IMAP servery se vyskytují rovněž, takže by to určitě doprogramovat šlo.
-
Urcite by to slo doprogramovat. Me by hlavne zajimalo, jestli uz neco svobodneho s touto funkci existuje. Urcite by se to hodilo dost lidem.
-
Petr Krčmář: podle toho co píšeš je možné, že některé aplikace ve spánku fungují (resp. jsou on-line) a některé ne?
Tonda: ano, přes den jsem se s problémem nesetkal, v noci pak pravidelně. Dneska v noci vyzkouším dostupnost z Whats appu, podaří-li se mi se vzbudít, okolo 4. ráno si pošlu zprávu a jsem zvědavej, jestli hned dorazí.
-
Tak jsem v noci zkoušel, jak se v noci data chovají. Wi-Fi jsem vypnul, nechal jsem zapnutá jen 2G datové přenosy. Cca o půlnoci jsem šel spát, ve 3 ráno jsem si poslal zprávu na Whats app a... nepřišla. Po 5 minutách jsem zapnul displej (ani jsem ho neodemykal), data se okamžitě připojila a zpráva přišla. Hned půl hodiny jsem vyzkoušel to samé znovu a zpráva opět nepřišla, to znamená, že JB ukončí data za méně než půl hodiny (!!!). Fuj, to je hnus. Každopádně si myslím, že takto prasácky se to chová jen v noci.
Ještě jednou jsem procházel nastavení JB a hledal, jestli přece jen nemůže být zakopaný pes tak. Položky v nastavení, které ovlivňují chování dat, by měly být tyto:
- nastavení - napájení - úsporný režim - datové připojení ("přepnout do spánku, když je obrazovka vypnutá") - tady mám odfajfkováno (modrá fajfka nesvítí)
- pouze pro Wi-Fi pak je ještě: nastavení - Wi-Fi - nabídka - pokročilé - nechat Wi-Fi zapnutou i při spánku - tady mám vždy
Tak nevím. :-/
-
Ano, tento vysokoúrovňový přehled se dá vyčíst z odkazu co sem uvedl. Ta zásadní otázka je jak je technicky vyřešeno to, že ten push server je schopen to na telefon dotlačit i když ten spí.
Vývojář z Google, který tu push službu (dnes se jmenuje Google Cloud Messaging) vytvořil, tvrdil, že používají dlouhotrvající spojení. Chápu to tak, že mobil naváže TCP/IP spojení se servery Googlu, kterým normálně neproudí žádná data (nanejvýš občas nějaký keep-alive paket). Když je potřeba doručit notifikaci na telefon, pošle se právě tímhle spojením. Protlačení na telefon je pak úplně standardní doručení paketu přes GSM síť – je to obyčejný paket, který je součástí aktivního TCP/IP spojení (které akorát shodou okolností dlouho nepřenášelo žádná data).
-
MobiLLion, ale je otázka zda je to prasárna tvůrce té aplikace (jestli používá GCM) nebo Androidu.
Filip Jirsák, to sem v podstatě čekal, tu magii jak to zařídí GSM síť na podnět zvenčí sem si dost bobře nedokázal představit. Musí mít nějak dobře vychytané aby udržování toho trvalého spojení nežralo moc baterky a fungovalo i během deep sleep.
Každopádně já v noci spím a toto neřeším :-)
-
No, ten Whats app bych ještě dokázal překousnout, ale ta nefunční synchronizace mailu mi pořádně vadí. Ještě mě napadá vyzkoušet třeba Skype. Ale spíš bych to viděl na bug (nebo nedejbože vlastnost) Androidu. Soudím podle toho, že nefunguje jak Whats app, tak K-9, i poštovní klient z Androida...
Teď ještě koukám, že v K-9 mám nastaveno: Dotazovat se při PUSH připojen (zakliknuto) a obnovit připojení IDLE každou minutu.
-
Tak jasně, při připojení na nějaký obecný IMAP server GCM z důvodů popsaných výše nejde použít. Taky to může být nějak nakopnutá ta konkrétní ROM.
Každopádně jak už sem dvakrát psal, řešením je zabránit telefonu usnout, což zajistí nabíječka nebo na to určitě bude existovat nějaká aplikace, ale bude to žrát baterku, takže to zase skončí na té nabíječce.
-
Každopádně jak už sem dvakrát psal, řešením je zabránit telefonu usnout, což zajistí nabíječka nebo na to určitě bude existovat nějaká aplikace, ale bude to žrát baterku, takže to zase skončí na té nabíječce.
Nebo si kazdych X minut pomoci app Llama (http://forum.root.cz/index.php?topic=7217.msg71339#msg71339) zapnout displej, nebo wifi a po minute zase vypnout.
-
Musí mít nějak dobře vychytané aby udržování toho trvalého spojení nežralo moc baterky a fungovalo i během deep sleep.
K tomu podle mne stačí udržovat tu aktivitu spojení ze strany telefonu a tam k tomu stačí obyčejný budík. Nejsložitější je podle mne vyladit ten interval tak, aby nějaké NATy a filtry u operátorů ta spojení neztrácely. Ale Google má dost velký testovací vzorek uživatelů, na kterém to mohl vyzkoušet a odladit :-)