Это старая версия документа.


В данной статье собираем любые способы взаимодействия настольной 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
Я создал точку монтирования в /mnt, поэтому все команды приведены для этого случая, не забудьте поправить пути, если что.

В любом из этих случаев нужно присвоить созданную папку вашему пользователю (тоже косяки 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
В данном примере выполняется сохранение всех новых фотографий с устройства Nokia в папку пользователя. Для редактирования путей, просмотрите их в Nautilus, если вам необходимо добавить пути или ввести какие либо исключения, ознакомьтесь с man rsync, в крайнем случае спросите в теме на форуме(ссылка не тему с обсуждением).

Делаем исполняемым

chmod +x ~bin/mobile_sync.sh

Добавляем скрипт в автозагрузку пользователя.

Ссылки

1)
которая на наших Ubuntu не работает