15 maj 2010

Uzyskiwanie dostępu do systemów plików urządzeń mobilnych Obex za pomocą menadżera plików KDE4

Kategorie:  Mobile  Gentoo  KDE  Linux

Jak zmusić menadżery plików KDE4 do uzyskiwania dostępu do urządzeń mobilnych przy wykorzystaniu Bluetootha i protokołu Obex.

KDE 3.5 udostępniało wspaniałą funkcję, która pozwala nam w prosty sposób uzyskać dostęp do systemu plików urządzenia mobilnego i skopiowania na niego lub z niego dowolnego pliku przy użyciu Bluetootha i protokołu Obex. Niestety ta funkcja nie jest dostępna w standardowym dla KDE4 narzędziu Bluetooth zwanym kblutooth. głównie jest to spowodowane brakiem kioslave dla protokołu obex w menadżerach plików KDE4. Jako że kblutooth jest intensywnie rozwijane jestem pewien, że wcześniej lub później ta funkcja zostanie dodana, na nieszczęście jak potrzebuje jej w tym momencie. Najprostszym rozwiązaniem tego problemu byłoby zainstalowanie części środowiska GNOME wraz z menadżerem plików nautilus, który posiada obsługę obex. Ja nie lubię środowiska GNOME i nie chce mieć połowy tego środowiska na moim komputerze tylko po to aby realizować tak proste zadanie. Znalazłem lepsze rozwiązanie i chciałbym się nim tutaj podzielić.

Moje rozwiązanie problemu będzie wymagało zainstalowanie systemu plików obex w przestrzeni użytkownika. Wszystkie poniższe instrukcje zostały przeze mnie wykonane na moim systemie Gentoo Linux, ale powinny dać się zastosować w dowolnej dystrybucji. Wszystko co musisz zmienić to używanie komendy instalacyjnej typowej dla twojej dystrybucji zamiast emerge z Gentoo Linuxa. Osobiście nie napotkałem żadnych problemów z uzyskiwaniem dostępu w ten sposób do moich urządzeń mobilnych, ale nie mogę zagwarantować, że twoje urządzenia będą działać tak samo dobrze, więc jeśli zamierzasz wykorzystać moje rady pamiętaj robisz to na własne ryzyko. Zakładam, że masz usługi i urządzenia bluetooth skonfigurowane poprawnie w swoim Linuxie, jeśli tak nie jest odwiedź stronę poświęconą konfiguracji bluetootha w twojej dystrybucji. Mam nadzieje, że poniższe informacje okażą się pomocne.

Pierwszą rzeczą jaką musimy zrobić jest instalacja wsparcia dla systemu plików obex w przestrzeni użytkownika. Jeśli nie masz narzędzi do obsługi systemów plików w przestrzeni użytkownika (doprawdy trudno w to uwierzyć, że ich nie posiadasz) zostaną one zainstalowane jako zależność. W Gentoo Linuxie zainstalowalibyśmy je w ten sposób:

emerge -av sys-fs/obexfs

Te narzędzia pozwolą nam zamontować system plików dowolnego urządzenia bluetooth za pomocą prostej komendy. Ale zamiast wywoływać tą komendę napiszemy prosty skrypt, który wykona całą robotę za nas. Nazwałem ten skrypt obex_mount.sh.

Wyświetl kod źródłowy skryptu
  1. #!/bin/sh
  2. MOUNTPOINT="/tmp/${USER}-${1}"
  3.  
  4. #Create mount directory
  5. mkdir ${MOUNTPOINT}
  6. #Mount the device
  7. obexfs -b ${1} ${MOUNTPOINT}
  8. sleep 5
  9. /usr/bin/krusader --left ${HOME} --right ${MOUNTPOINT}
  10. #/usr/bin/dolphin ${MOUNTPOINT}
  11. #Unmount the device
  12. fusermount -u ${MOUNTPOINT}
  13. sleep 5
  14. #Remove mount directory
  15. rmdir ${MOUNTPOINT}

Jak widzisz skrypt wcale nie jest skomplikowany. Powinieneś go zapisać w jakimś miejscu, z którego bez problemu będziesz mógł go wywołać. Ja skopiowałem skrypt do /usr/local/bin. Musisz się upewnić, że skrypt będzie miał atrybut wykonywalności, możesz tego dokonać w ten sposób:

chmod +x /usr/local/bin/obex_mount.sh

Skrypt akceptuje jeden parametr, którym jest adres urządzenia bluetooth. Tutaj możesz zobaczyć przykład użycia:

./obex_mount.sh 1C:DC:EA:43:C1:41

Kiedy wywołasz skrypt, założy on katalog, w którym będzie można dokonać montowania składający się nazwy twojego użytkownika i adresu urządzenia. Następnie zamontuje urządzenie komendą obexfs. Jak widzisz dodałem komede sleep aby upewnić się, że proces montowania zostanie zakończony. Następnie skrypt wywołuje dwupanelowy menadżer plików Krusader, który powinien otworzyć twój katalog domowy w lewym panelu a zamontowane urządzenie w prawym panelu. Jeśli nie masz krusadera zainstalowanego i nie chcesz go używać zakomentuj tę linie i zamiast niej odkomentuj linię wywołującą Dolphina. Tak naprawdę to możesz wpisać swoją własną linię wywołującą menadżer plików jeśli tylko sobie tego życzysz. Kiedy zakończysz pracę z urządzeniem i zamkniesz menadżera plików, skrypt odmontuje urządzenie poczeka chwilkę aby upewnić się, ze proces ten się zakończył i na samym końcu usunie katalog montowania.

Możemy wywołać plik kiedy sobie tego życzymy z linii poleceń ale ja znalazłem lepszy sposób. Dlaczego, ponieważ sprawdzanie i przekazywanie do skryptu adresu sprzętowego urządzenia bluetooth jest kłopotliwe. Zamiast używać skryptu bezpośrednio wykorzystuję posty menadżer bluetooth nazwany Blueman. Jest to aplikacja GTK ale na szczęście nie jest ona mocno zależna od środowiska graficznego GNOME. W tej chwili ta aplikacja oferuje większą funkcjonalność niż program kbluetooth. Jeśli nie masz Bluemana w swoim systemie zainstaluj go. W Gentoo zrobilibyśmy to w ten sposób:

echo net-wireless/blueman >> /etc/portage/package.keywords
emerge -av  net-wireless/blueman

Kiedy uruchomisz bluemana w swoim systemie powinieneś zobaczyć jego ikonę w systemowym obszarze powiadomień, kliknij ją prawym klawiszem myszy i wybierz Local Services. Porównaj z poniższym zrzutem ekranu:

Blueman Local Services

Kiedy okno ustawień Usług Lokalnych się otworzy rozwiń Zaawanoswane w ustawieniach Transferu i wprowadź wywołanie naszego skryptu w polu tekstowym w następujący sposób:

/usr/local/bin/obex_mount.sh %d

Upewnij się, że zapiszesz ustawienia zanim opuścisz okno, jeśli nie jesteś pewien porównaj z poniższym zrzutem ekranu:

Blueman Usułgi Lokalne

Teraz powinieneś być w stanie przeglądać system plików twojego urządzenia mobilnego w twoim ulubionym menadżerze plików po prostu wybierając prawym klawiszem myszy jego ikonę w narzędziu przeglądania urządzeń Bluemana. Teraz dostęp jest naprawdę prosty nieprawdaż. Możesz rzucić okiem na poniższy zrzut ekranu aby zobaczyć dowód, że to naprawdę działa.

Menadżer Urządzeń Blueman

Jako ostania rzecz pozwolę sobie na małe ostrzeżenie, nie próbuj otwierać plików (zdjęć, filmów czy plików dźwiękowych) bezpośrednio z twojego urządzenia mobilnego. Doradzałbym skopiowanie ich na twój komputer przed próbą otwarcia. To powinno wykluczyć wystąpienie problemów. Pamiętaj nie wszystkie połączenia bluetooth są wystarczająco szybkie abyś mógł oglądać pliki bezpośrednio.

Skrypt, który wykorzystuje jest także dostępny na moim serwerze svn, możesz uzyskać do niego dostęp podążając za tym linkiem.




Komentarze

Jeśli znalazłeś jakieś błędy w powyższej informacji lub po prostu chcesz wypowiedzieć swoje zdanie na jej temat, będę wdzięczny za pozostawienie komentarza.
Wszystkie komentarze będą pokazywać się na stronie po tym jak zostaną zatwierdzone. Przepraszam za to ale chcę mieć pewność, że moja strona będzie wolna od obraźliwych lub wulgarnych treści. Nie mam nic przeciwko krytyce ale zrób to właściwie dobierając słowa.

Pozostaw komentarz