Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Android & Linux - Zgrywamy dane z mobila

Jako, że na co dzień w domu korzystam z linuksów, od dnia kiedy w ręce wpadł mi tablet Samsunga z Androidem, myślałem sobie jak w łatwy sposób zgrać garść danych z tabletu na komputer z zainstalowanym, np. Ubuntu, nie wyciągając karty SD ze slotu urządzenia, lecz korzystając z WiFi... Pod uwagę brałem różne rozwiązania, a droga jaką przeszedłem poszukując tego satysfakcjonującego, wyglądała mniej więcej tak:

MTP vs MassStorage

Skąd w ogóle wziął się problem? Nie wystarczy wziąć kabel USB, podłączyć go do komputera i zgrać co trzeba? W przypadku linuksa nie jest to takie proste - już tłumaczę dlaczego. Urządzenia przechowujące dane i podpinane do portu USB komputera (pendrive'y, dyski przenośne) rozpoznawane są zazwyczaj, jako Urządzenia Pamięci Masowej (USB MassStorage) i z tymi na linuksie nie ma problemu. Tak też było z Androidem, aż do momentu wydania wersji HoneyComb, w której postanowiono zastąpić MassStorage protokołem MTP (Media Transfer Protocol). Obsługa tego protokołu pod linuksem działa tragicznie, żeby nie powiedzieć, że w ogóle nie działa - przynajmniej mnie nie udało się dorwać do danych via MTP na linuksie. Pomysł wykorzystania gMTP do transferu danych z Androida do Ubuntu szybko zweryfikowała rzeczywistość - po kilku próbach zrezygnowałem i porzuciłem to rozwiązanie.

Może KiesAir?

Niezłym rozwiązaniem wydaje się być KiesAir. KiesAir pobieramy na urządzenie z Androidem z Googlowego sklepu Play za darmo. Po potwierdzeniu i wyrażeniu zgody instalujemy program, jak każdy inny w systemie od Googli.

Program KiesAir jest bardzo łatwy w użyciu i prawdopodobnie część użytkowników na tym etapie zakończy czytanie moich przygód z przesyłaniem danych z androida do linuksa, znajdując to czego szukali. Jak działa program? Wręcz banalnie: po odpaleniu program prosi nas, abyśmy połączyli się komputerem do tej samej sieci, do której podłączony jest nasz tablet i wprowadzili konkretny adres w przeglądarce. Adres ten to nic innego, jak adres IP naszego tabletu, który nasłuchuje połączenia na porcie 8080. W moim przypadku jest to http://10.10.10.103:8080. Po wykonaniu powyższej czynności, w oknie przeglądarki wyświetli się monit o podanie kodu PIN, który właśnie został wygenerowany i wyświetlony na ekranie tabletu.

Po wpisaniu PIN'u oczom naszym ukazuje się istny kombajn do zarządzania zawartością naszego tabletu. Mamy dostęp do muzyki, filmów, zdjęć, dzwonków, zakładek, spisu połączeń, kalendarza, jak i eksploratora plików. Pliczki możemy pobierać, wysyłać, teoretycznie przeglądać (nie udało mi się pooglądać filmików), lecz wszystko to jest, według mnie, jakieś takie "przerośnięte". Owszem, jest to ładne i czytelne, ale według mnie, średnio funkcjonalne. Do poprawnego działania niezbędna jest zainstalowana java, a wszystko działa tak jakoś ślimaczo - mam wrażenie, że większość pakietów podróżujących przez sieć dzięki KiesAir, robi to bez większej potrzeby i bezsensownie zapycha naszą sieć - co kto lubi, ale ja nie takiego rozwiązania szukałem...

zwyczajnie zgrać pliczki...

Zawsze byłem pod wrażeniem, jak sprawnie inne udziały potrafią się zintegrować z systemem plików na linuksie. Czy to udział sieciowy NFS, CIFS, czy vFAT, NTFS - wszystko to możemy podpiąć sobie do, np. jakiegoś podkatalogu w domowym folderze użytkownika. Po podmontowaniu właściwego udziału, zwyczajnie wchodzimy do katalogu i już oglądamy zawartość urządzenia/lokalizacji sieciowej - wszystko w obrębie jednego drzewa katalogów, wręcz genialne.

Idąc tym tokiem rozumowania, chciałem początkowo tak podmontować androidowy MTP, lecz jak to opisałem powyżej, bez większych sukcesów. Z pomocą przyszedł program WebDav Server, który udostępnia zawartość tabletu w sieci przez protokół HTTP. WebDav miał pełnić funkcje podobne do FTP, ale przy okazji miał rozwiązywać szereg innych problemów, z którymi borykał się ten znany protokół. Jednym z problemów były zapory internetowe, z którymi WebDav (w odróżnieniu od FTP) radzi sobie bezproblemowo, bo transmisja zawartości odbywa się tym samym protokołem, co przesyłanie stron internetowych, a te (jak wiemy) rzadko są przez adminów blokowane. Znając mniej więcej założenia WebDav, postaram się więc podejrzeć i zgrać pliczki z tabletu z jego pomocą.

WebDav Server

Jak już wspomniałem, do osiągnięcia celu użyłem programu od The Olive Tree: WebDav Server. Pobieramy go i instalujemy na tablet za pomocą sklepu Play - program jest rozpowszechniany za darmo. Uruchamiamy zainstalowany program i wchodzimy do ustawień (settings). Zanim udostępnimy zawartość tabletu, musimy ustawić kilka opcji:
  • Network interfaces: ustawiamy Loopback
  • Port: możemy ustawić, np. 8080
  • Use Password: Zaznaczamy, aby nikt niepowołany zgrał nasze dane
  • Username: podajemy nazwę użytkownika
  • Password: wprowadzamy hasło
  • Home directory: ustawiając na Root (/) mamy dostęp do wszystkich pliczków w tablecie

Dalsze parametry pozostawiamy bez zmian - nie mają większego znaczenia. Mając ustawione opcje, powracamy do ekranu głównego, klikamy na czerwoną ikonę i uruchamiamy serwer, a stan uruchomienia będzie obrazować zielona ikonka w tray'u, za pomocą której możemy ponownie wywołać okno programu WebDAV Server.

davfs

Mając uruchomiony serwer WebDAV na tablecie, przechodzimy do komputera i naszego linuksa. W moim przypadku jest to Ubuntu, więc opis dalszej części, siłą rzeczy, oparty będzie o system Ubuntu. Aby obejrzeć udostępnioną zawartość tabletu programem WebDAV, musimy zainstalować obsługę davfs na linuksie.

Na Ubuntu robimy to (za pomocą konsoli) tak:sudo apt-get install davfs2Kiedy mamy już zainstalowany davfs w systemie, musimy utworzyć katalog, do którego będziemy montować udział:mkdir ~/AndroidMając katalog, możemy przystąpić do zamontowania w nim udostępnianego udziału z tabletu. Tablet w mojej sieci ma adres 10.10.10.103 (można sprawdzić to w ustawieniach połączenia):sudo mount -t davfs http://10.10.10.103:8080 ~/Androidi voila...

Teraz możemy za pomocą naszego ulubionego menadżera plików przejść do katalogu ~/Android i zobaczyć w nim zawartość tabletu, z którego możemy teraz zgrać co trzeba na dysk naszego komputera będącego pod kontrolą pingwina.

Może metoda ta nie jest jakaś nadzwyczajna czy imponująca, ale jest (IMHO) genialna w swej prostocie. Robi co trzeba, nie generując zbędnego ruchu sieciowego podczas działania. Wydajność, czytelność, pełna integracja z drzewem katalogów - nic więcej do szczęścia nie potrzeba. Ściąganie plików z androida na linuksa to teraz czysta przyjemność - o takie właśnie rozwiązanie mi chodziło. Oczywiście, całość można sobie ułatwić, tworząc skrypty gotowe do uruchomienia, które automatycznie bez klepania w konsoli zrobią co trzeba, ale to nie jest aż tak bardzo konieczne - ileż razy dziennie łączymy się z tabletem w celu pobrania jakiejś słitfoci?

 

linux porady urządzenia mobilne

Komentarze

0 nowych
Shaki81 MODERATOR BLOGA  38 #1 04.04.2013 21:45

Czyli jak widać - dla chcącego nic trudnego:)

yyy tak wyglądałeś po przetestowaniu tych kilku rozwiązań? Czy jednak za Tobą była cięższa praca:)

  #2 04.04.2013 22:02

NoobModeOn
Nie lepiej było wrzucić Windowsa?
NoobModeOff


Próbowałeś może AirDroid? Niby podobne do KiesAir, ale wydaje mi się, że jednak wygodniejsze.

kuba144   5 #3 04.04.2013 22:03

AirDroid na zmianę z adb do pojedynczych plików mnie urządza ;)

2099   8 #4 04.04.2013 22:06

@lukasamd wyprzedziłeś mnie minutę z komentarzem o airdroid :) używam i zachęcam do spróbowania.
Jest ładnie i przejrzyście choć mnie zaskoczył pare razy generowanym hasłem którego treść była conajmniej wulgarna :)- taki mój żywot, że nawet generator haseł coś do mnie ma.

Autor edytował komentarz.
  #5 04.04.2013 22:09

NoobKillerModeOn
Nie.
NoobKillerModeOff

Po włączeniu w preferencjach telefonu "trybu deweloperskiego" gMTP działa (jak radziecki telewizor, ale dizała), bez zbędnego piepszenia.

command-dos   18 #6 04.04.2013 22:11

AirDroid nie próbowałem - na pewno zobaczę i przetestuję. Dzięki za propozycję, jestem "nowy" w temacie oprogramowania na androida ;)

lucas__   13 #7 04.04.2013 22:26

To Ubuntu nawet nie obsługuje MTP? Trochę mnie to dziwi, zważywszy na fakt, że zarówno KDE
http://www.afiestas.org/workspaces-gain-mtp-support/
http://www.muktware.com/4872/install-android-mtp-support-kde
jak i GNOME http://www.muktware.com/5404/how-access-android-devices-gnome-arch-linux obsługują protokół MTP.

dragonn   11 #8 04.04.2013 22:31

Swego czasu używałem na Androidzie apk do serwera ftp a na PC curlftp - możliwość zamontowania ftp w systemie plików, działo całkiem znośnie. Ale w ostatnim czasie praktycznie w 100% używam adb. Do tego napisałem sobie program do dwukierunkowej synchronizacji danych przez adb coś w stylu rsync (porównanie data modyfikacji plików), jak by ktoś chciał kod to niech pisze, publicznie go chwilowo nie udostępnię bo raczej jest to niezły potwór i wstyd takie coś pokazywać, ale swoje funkcje spełnia :P.

xomo_pl   21 #9 04.04.2013 22:33

może ktoś wie po co Google zmieniło USBMassStorage na MTP? co dała ta zmiana niby?

dragonn   11 #10 04.04.2013 22:36

@zomo_prl MassStorage działa tylko z kartami SD i wymaga odmontowania jej od systemu, MTP działa bez odmontowania i z pamięcią wewnętrzną.

command-dos   18 #11 04.04.2013 22:43

@lucas__ - widzę, że coś się w temacie poprawia: http://www.muktware.com/5404/how-access-android-devices-gnome-arch-linux - MTP, przyznam się, testowałem jakiś czas temu i lipnie to działało, albo nie działało w ogóle. Testowałeś to? Doświadczyłeś organoleptycznie, czy Twoje propozycje działają?

  #12 04.04.2013 23:01

Nie jestem pewien, ale nie da się za pomocą Wammu zgrać?

dragonn   11 #13 04.04.2013 23:08

@command-dos ja testowałem MTP jakiś czas temu i działo, tylko że testowałem tylko z linii poleceń, ale porzuciłem to rozwiązanie bo nie działo na nim rsync (nie potrafiło pobrać daty modyfikacji pliku), dlatego napisałem swój program który działa przez adb.

sgj   11 #14 04.04.2013 23:18

Sporo urządzeń z ICSem obsługuje nadal tylko MassStorage. Z kolei w wielu urządzeniach jest w opcjach wybór trybu pracy.
Swoją drogą nie ma co specjalnie kombinować bo po sieci domowej można z androida wrzucić cokolwiek na dowolny udostępniony zasób smb czy to na Windows czy na Linuksie.

gowain   19 #15 04.04.2013 23:49

Jezu command-dos... ale sweet focia :P

ktośtam   5 #16 04.04.2013 23:58

Kurczę, dopiero po tym wpisie zainteresowałem się AirDroid i... to działa!

przemor25   14 #17 05.04.2013 04:34

Ale fota... jakbym widział siebie w tej chwili ;]

DjLeo MODERATOR BLOGA  18 #18 05.04.2013 08:12

Ciekawy wpis, choć dla Windows-owców niezbyt przydatny. Ja również używam AirDroid i jest to najlepszy soft z jakim się do tej pory spotkałem. Choć równie proste jest włożenie kabla do kompa i zgranie fotek na komputer. A Airdroid jest świetnym i uniwersalnym narzędziem, które nie wymaga instalacji na komputerze, wszystko przez przeglądarkę. Dlatego również polecam.

Jak zobaczyłem Twoje zdjęcie to pomyślałem, że tak właśnie wygląda statystyczny user DP czekający na hotzlot :)

wojtekadams   18 #19 05.04.2013 08:52

Czytając ten wpis od razu pomyślałem i nie tylko ja o programie AirDroid :) Wpis jak zawsze na wysokim poziomie :)

Fotki komentować nie będę :)

kamil_w   11 #20 05.04.2013 09:41

1. W SGS2 w ustawieniach systemu -> Komunikacja -> Więcej ustawień jest pozycja "Ustawienia USB". Kilkając w przycisk, który tam się znajduje można podłączyć urządzenie do komputera za pomocą USB i będzie rozpoznane jako pamięć masowa.

2. Ja używam ES File Explorera i z komputerem łączę się poprzez LAN. Podaję IP komputera, login i hasło konta użytkownika z komputera i gotowe. Program pamięta te dane więc żadnych skryptów robić nie trzeba. Działa to w przypadku Windowsa, a biorąc pod uwagę, że w Linuksie jest Samba to to pod tym systemem też powinno działać.
ES File Explorer ma też opcję tworzenia serwera FTP.

3. Używam również Dropsynca. Można w nim ustawić które foldery mają się synchronizować z Dropboxem, czy ma to się odbywać automatycznie czy nie i dla każdego folderu można ustawić sposób synchronizacji (czy ma być dwustronna, czy Dropsync ma tylko pobierać dane z Dropboxa lub czy ma je tylko na Dropboxa wysyłać).

laston   9 #21 05.04.2013 15:12

Aż specjalnie dziś sprawdzałem go-mtpfs i wydaje się działać bezproblemowo, więc nie wiem o co "awantura".
Link dla zainteresowanych: http://community.linuxmint.com/tutorial/view/1185

command-dos   18 #22 05.04.2013 15:31

@laston - "it appears that mtp will be natively supported in 13.04 and can be backported with instructions here(http://www.webupd8.org/2013/01/upgrade-to-gvfs-with-mtp-support-in.html) however it may not work." - może warto poczekać ;)

laston   9 #23 05.04.2013 15:43

@command-dos
Natywna obsługa zawsze mile widziana :)

PS. Szczerze mówiąc dopiero po przeczytaniu tego wpisu dowiedziałem się, że w ogóle istnieje taki problem. Mój poprzedni telefon z androidem obsługiwał tylko mass storage, kilka razy w życiu zdarzyło mi się podłączać go do linuxa i zgrzytów nie było. Jednak jak dzisiaj przyjrzałem się mojej Xperii P to niestety jest MTP-only.

Autor edytował komentarz.
  #24 05.04.2013 19:33

Chcę się dowiedzieć, uaaaa

Czemu Wammu nie nada się, nie obsługuje tego telefonu / telefonu z Androidem?

command-dos   18 #25 05.04.2013 20:54

Fervi.doctor - nie obsługuje, bo nie ;) inna organizacja przechowywania danych. Generalnie wammu/gammu było pierwotnie stworzone do synchronizacji nokii (pierwsze wersje programu nazywały sie mygnokii) - mowa o tych starych telefonach, które przechowywały kontakty w vcf'ach bodajże. Okazało się, że program może obsłużyć kilka innych modeli telefonów i tak zaczęła się przygoda z wammu, a baza obsługiwanych telefonów jest tu: wammu.eu/phones/

ryba321   3 #26 05.04.2013 22:42

Ja kopiuje pliki z androida do Ubuntu i odwrotnie za pomocą AirDroid.

reastignity   4 #27 06.04.2013 22:27

Do backupu karty pamięci korzystam z rsyca i dropboxa(automatycznie zdjęcia wrzuca), a jak coś mam wrzucić to winda jakaś się w domu znajduje

MasteROOT   4 #28 07.04.2013 15:26

Gdyby ktoś jednak wolał po kablu to polecam to: http://www.nibyblog.pl/kopiowanie-plikow-poprzez-mtp-linux-android-4-0-5872.html . Przetestowane - działa, a wiadomo że jak mamy więcej danych to lepiej po kablu niż via WiFi.

MasteROOT   4 #29 07.04.2013 15:30

Gdyby ktoś jednak wolał po kablu to polecam to: http://www.nibyblog.pl/kopiowanie-plikow-poprzez-mtp-linux-android-4-0-5872.html . Przetestowane - działa, a wiadomo że jak mamy więcej danych to lepiej po kablu niż via WiFi.

  #30 08.04.2013 12:51

Ja używam QuickSSHd ( https://play.google.com/store/apps/details?id=com.teslacoilsw.quicksshd ) i łączę się za pomocą protokołu SFTP lub SCP. Trochę wolne ale daje radę... :)

ldawid   1 #31 13.04.2013 09:01

Witam, jako że w LG Optimus P700 są kłopoty z dostępem do danych z poziomu np. Wheezy-ego,
przypadło mi do gustu prezentowane rozwiązanie z wykorzystaniem davfs-a.
Tym bardziej, że moim podstawowym systemem na którym pracuję, jest właśnie Wheezy.
Po instalacji stosownego oprogramowania zarówno na Andku jak i Wheezy-m, przystąpiłem do
podmontowania LG a tu na konsoli zonk...

Kod:

root@debian:/home/leszek# mount -t davfs http://127.0.0.1:8080 /Android
Please enter the username to authenticate with server
http://127.0.0.1:8080 or hit enter for none.
Username: francis
Please enter the password to authenticate user francis with server
http://127.0.0.1:8080 or hit enter for none.
Password:
WARNING: gnome-keyring:: couldn't connect to: /home/leszek/.cache/keyring-llwNT9/pkcs11: Brak dostępu
/sbin/mount.davfs: connection timed out two times;
trying one last time
/sbin/mount.davfs: server temporarily unreachable;
mounting anyway
root@debian:/home/leszek#

W katalogu /Android po w/w operacji pokazał się katalog /lost+found o wadze 64 b a po wejściu do niego okazuje się, że pusty.

W czym rzecz?
Pozdrawiam … Leszek

ldawid   1 #32 13.04.2013 09:04

Witam, jako że w LG Optimus P700 są kłopoty z dostępem do danych z poziomu np. Wheezy-ego,
przypadło mi do gustu prezentowane rozwiązanie z wykorzystaniem davfs-a.
Tym bardziej, że moim podstawowym systemem na którym pracuję, jest właśnie Wheezy.
Po instalacji stosownego oprogramowania zarówno na Andku jak i Wheezy-m, przystąpiłem do
podmontowania LG a tu na konsoli zonk...

Kod:

root@debian:/home/leszek# mount -t davfs http://127.0.0.1:8080 /Android
Please enter the username to authenticate with server
http://127.0.0.1:8080 or hit enter for none.
Username: francis
Please enter the password to authenticate user francis with server
http://127.0.0.1:8080 or hit enter for none.
Password:
WARNING: gnome-keyring:: couldn't connect to: /home/leszek/.cache/keyring-llwNT9/pkcs11: Brak dostępu
/sbin/mount.davfs: connection timed out two times;
trying one last time
/sbin/mount.davfs: server temporarily unreachable;
mounting anyway
root@debian:/home/leszek#

W katalogu /Android po w/w operacji pokazał się katalog /lost+found o wadze 64 b a po wejściu do niego okazuje się, że pusty.

W czym rzecz?
Pozdrawiam … Leszek

ldawid   1 #33 13.04.2013 09:25

Jeśli wcześniejszy mój wpis o tej samej treści przeszedł, proszę Moda o "wyprostowanie" i przepraszam.

Do rzeczy:
witam, jako że w LG Optimus P700 są kłopoty z dostępem do danych z poziomu np. Wheezy-ego,
przypadło mi do gustu prezentowane rozwiązanie z wykorzystaniem davfs-a.
Tym bardziej, że moim podstawowym systemem na którym pracuję, jest właśnie Wheezy.
Po instalacji stosownego oprogramowania zarówno na Andku jak i Wheezy-m, przystąpiłem do
podmontowania LG a tu na konsoli zonk...

Kod:

root@debian:/home/leszek# mount -t davfs http://127.0.0.1:8080 /Android
Please enter the username to authenticate with server
http://127.0.0.1:8080 or hit enter for none.
Username: francis
Please enter the password to authenticate user francis with server
http://127.0.0.1:8080 or hit enter for none.
Password:
WARNING: gnome-keyring:: couldn't connect to: /home/leszek/.cache/keyring-llwNT9/pkcs11: Brak dostępu
/sbin/mount.davfs: connection timed out two times;
trying one last time
/sbin/mount.davfs: server temporarily unreachable;
mounting anyway
root@debian:/home/leszek#

W katalogu /Android po w/w operacji pokazał się katalog /lost+found o wadze 64 b a po wejściu do niego okazuje się, że pusty.

W czym rzecz?
Pozdrawiam … Leszek

  #34 10.11.2014 22:20

po zamontowaniu j.w. nie masz uprawnień do zapisu na zamontowanym zasobie.
Kod:
sudo mount -t davfs http://192.168.1.101:8080 ~/Android -o uid=1000

załatwia sprawę.
Dzięki - korzystam w pełni.

  #35 10.11.2014 22:25

@ldawid: spróbuj zmienić w apce na tablecie Settings/Home directory