Это старая версия документа.
Содержание
В данной статье собираем любые способы взаимодействия настольной 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
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.
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
Добавляем скрипт в автозагрузку пользователя.