Это старая версия документа.
Содержание
В данной статье собираем любые способы взаимодействия настольной Ubuntu 12.04 c любыми мобильными устройствами.
Синхронизация содержимого телефона через Bluetooth
Для мобильных устройств на базе Android, iOS или Windows 8 существует приложение dropbox для синхронизации, например отснятых фотографий с облаком, тем не менее, синхронизировать отдельные папки в нем нельзя, к тому же данный способ работает только если есть доступ в интернет. Данное руководство описывает способ синхронизации содержимого вашего мобильного устройства с большим братом, посредством Bluetooth. Создание этого скрипта меня сподвигла единственная полезная функция в приложении NokiaPCSuite1)- автоматическое сохранение отснятых фотографий при появлении устройства со включенным bluetooth в зоне видимости компьютера. Другими словами достаточно включить Bluetooth на телефоне и запускается сохранение фотографий. Данный скрипт позволяет сохранять не только фотографии, но и любые другие папки с внутренней или внешней памяти телефона.
Установка дополнительных пакетов
Для работы скрипта необходим дополнительный пакет obexfs
обеспечивающий подключение файловой системы мобильного устройства к файловой системе Ubuntu и bluez-compat
, обеспечивающий управление bluetooth устройством компьютера через командную строку. Устанавливаем:
sudo apt-get install obexfs bluez-compat
Настройка
Определение параметров мобильного устройства
Для того, что бы монтировать мобильное устройство к файловой системе Ubuntu нужно знать два параметра- Bluetooth адрес устройства, и канал, по которому данное устройство предоставляет FTP доступ. И то и другое можно узнать введя в терминале команду (не забудьте включить bluetooth на телефоне и компьютере)
sdptool search FTP
В ответ вы получите подобный вывод:
::~::->> sdptool search FTP Inquiring ... Searching for FTP on 00:25:CF:C2:B6:D5 ... Service Name: OBEX File Transfer Service RecHandle: 0x10070 Service Class ID List: "OBEX File Transfer" (0x1106) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 9 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "OBEX File Transfer" (0x1106) Version: 0x0100
Если вывода на эту команду нет, то, вероятнее всего, ваш телефон не предоставляет доступ к своему содержимому по Bluetooth, можете закрывать эту страничку. Если вывод есть, то нас интересуют две строчки (запомним их):
- Searching for FTP on 00:25:CF:C2:B6:D5 -последняя последовательность- это Bluetooth адрес устройства(далее в тексте он будет заменен на XX:XX:XX:XX:XX:XX)
- Channel: 9 - номер канала, по которому предоставляется доступ(далее в тексте он будет заменен на YY)
Настройка доступа к монтированию
Вообще, как я понял, obexfs жутко проблемный пакет- очень сложно заставить его монтировать устройства от имени пользователя (от root монтирует нормально, но при этом пользователю даже нельзя просматривать содержимое). Пытаясь добиться работоспособности я проделывал некоторые действия, которые могут оказаться избыточными, но, тем не менее, я их приведу здесь, что бы у вас гарантированно все заработало.
Добавляем пользователя в группу fuse
sudo usermod -aG fuse <имя_пользователя>
Разрешаем пользователям использовать опцию allow_other
sudo gedit /etc/fuse.conf
Нужно раскомментировать строчку user_allow_other
Меняем права на файл fusermount
sudo chmod 4755 /bin/fusermount
Настройка монтирования
Создание точки монтирования
- Если вы планируете исследовать содержимое вашего телефона через nautilus (подобный сервис вообще предоставляет стандартный bluetooth-applet после сопряжения устройства с компьютером), то целесообразно создать точку монтирования в /media/, после этого она будет отображаться в Nautilus в разделе «Устройства» и при щелчке на нем мышкой будет монтироваться\отмонтироваться, как обычная флешка. Если вам это нужно, то создаем папку
sudo mkdir /media/Nokia
- Если же вам нужна только автоматическая синхронизация и не нужно удобство доступа к смонтированному устройству, то точку монтирования лучше создать в /mnt
sudo mkdir /mnt/Nokia
В любом из этих случаев нужно присвоить созданную папку вашему пользователю (тоже косяки fuse и obexfs)
sudo chown <имя_пользователя> /mnt/Nokia
Проверка монтирования
В принципе этого достаточно, что бы проверить схему и примонтировать мобильное устройство от root.
sudo obexfs -bXX:XX:XX:XX:XX:XX -BYY /mnt/Nokia
Проверка результата
sudo ls /mnt/Nokia
Должно отобразиться содержимое мобильного устройства, часто это два диска- его внутренняя и внешняя память. Если содержимого нет и вы не знаете что делать, попробуйте написать в этой теме(ссылка на обсуждение статьи).
Для отмонтирования используйте следующую команду:
sudo fusermount -u /mnt/Nokia
Создание скрипта монтирования
Так как команда монтирования довольно странная, то её в таком виде запихнуть в /etc/fstab у меня не получилось, если хотите попробовать, то строчка должна выглядеть так:
obexfs#-bXX:XX:XX:XX:XX:XX\040-BYY /mnt/Nokia fuse allow_other 0 0
Даже если после этого командой
mount /mnt/Nokia
мобильное устройство и примонтируется, то, почти наверняка, его нельзя будет отмонтировать командой
umount /mnt/Nokia
тоже из за кривости obexfs. Поэтому делаем легко и просто: создаем скрипт с командой монтирования:
sudo gedit /usr/local/bin/obexfs_mount
со следующим содержимым:
- obexfs_mount
#!/bin/sh /usr/bin/obexfs -bXX:XX:XX:XX:XX:XX -BYY $*
делаем исполняемым:
sudo chmod +x /usr/local/bin/obexfs_mount
Редактируем fstab
Наконец то можно редактировать fstab.
sudo gedit /etc/fstab
Добавляем в конец файла строчку
obexfs-mount /mnt/Nokia fuse users,noauto,allow_other,fsname=obexfs-mount 0 0
После этого можно монтировать мобильное устройство от пользователя, например командой
mount /mnt/Nokia
отмонтировать командой
umount /mnt/Nokia
Cоздание скрипта-демона
Для автоматизации сохранения файлов с мобильного устройства, естественно, понадобится процесс, запускающийся в фоне и следящий за появлением вашего устройства в зоне видимости bluetooth-адаптера компьютера. Для синхронизации будем использовать rsync
. После успешной синхронизации демон «засыпает» на 12 часов, это сделано, чтобы он не начинал повторную синхронизацию каждый раз, пока вы не выключите где нибудь bluetooth.
gedit ~/bin/mobile_sync.sh
Содержимое файла:
- mobile_sync.sh
#!/bin/bash address="00:25:CF:C2:B6:D5" while (sleep 60) do str=$(hidd --connect 00:25:CF:C2:B6:D5 2>&1) if [[ $str =~ .*Success.* ]] ; then mount /mnt/Nokia notify-send "Синхронизация запущена" -i bluetooth rsync -tr /mnt/Nokia/E:/Images/Камера/ /home/<имя_пользователя>/Изображения/Фото/ umount /mnt/Nokia notify-send "Синхронизация закончена" -i bluetooth sleep 43200 fi done
man rsync
, в крайнем случае спросите в теме на форуме(ссылка не тему с обсуждением).
Делаем исполняемым
chmod +x ~bin/mobile_sync.sh
Добавляем скрипт в автозагрузку пользователя.