Скрещиваем Samsung Galaxy S3/Galaxy Note2 с Ubuntu 12.10: боремся с дубовым mtp.

Скрещиваем Samsung Galaxy S3/Galaxy Note2 с Ubuntu 12.10: боремся с дубовым mtp.

Все актуально для последних на данный момент библиотек.

  • Понадобится libmtp 1.1.5 ( http://sourceforge.net/projects/libmtp/files/libmtp/ )
  • Понадобится jmtpfs 0.3 (версия 0.4 не захотела компилиться)
  • Включенный режим отладки USB.
  • Для удобства я создал папку ~/mtp-dev/ в которой буду работать с исходниками
  • Для проверки позже создадим папку ~/Samsung_Galaxy_Note2
  • Вариант ручного монтирования девайса (для проверки работы, или при редком использовании)
  • Вариант для автоматического монтирования девайса (мой вариант, каждодневное использование)

1) Ставим допы:

sudo apt-get install gcc-c++ fuse-devel libmtp-devel glib-devel glib2-devel file-devel

2) Качаем в ~/mtp-dev/ , распаковываем , компилим и инсталлим libmtp

$ tar xfvz libmtp-1.1.5.tar.gz libmtp-1.1.5
$ cd ~/mtp-dev/libmtp-1.1.5
$ ./configure
$ make
$ sudo make install

3) Качаем, распаковываем, компилим и инсталлим jmtpfs 0.3 (повторюсь, версия 0.4 у меня НЕ компилилась, лень было разбираться)

$ cd
$ wget http://research.jacquette.com/wp-content/uploads/2012/05/jmtpfs-0.3.tar.gz
$ tar xfvz jmtpfs-0.3.tar.gz jmtpfs-0.3
$ cd jmtpfs-0.3
$ ./configure
$ cd src
$ make
$ sudo make install

4) Даем права OTHER для fuse: откройте редактором от рута файл и раскомментируйте строку

#user_allow_other

5) Подключаем телефон, создаем папку, я создавал такую:

$ mkdir ~/Samsung_Galaxy_Note2

6) Запускаем:

$ sudo jmtpfs -o allow_other ~/Samsung_Galaxy_Note2

Могут вылезти сообщения, типа:

Error: Unable to open ~/.mtpz-data for reading.
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).

В первоисточнике указываются еще такие:

PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device

просто игнорим их

7) Проверяем работу:

$cd ~/Samsung_Galaxy_Note2/
$ls
Card Phone
$cd Phone/
$ls
Alarms cloudagent Download Evernote INDI Movies PhotoEditor pmw Purrrr.3ga ShareShot SpeedSoftware Widgetsoid
Android data dslv_state.txt GOTaskManager EX Jasmine Music Pictures Podcasts Ringtones ShareViaWiFi VK yandexmaps
clockworkmod DCIM efs_Backup gReader media Notifications Playlists Purrr-2.3ga Samsung S Note vpnroot.db

8) Перед отключением телефона обязательно размонтируем:

$ sudo fusermount -u ~/Samsung_Galaxy_Note2

9) Вариант для продвинутых, автоматическое монтирование/размонтирование:

Создаем файл /etc/udev/rules.d/99-jmtpfs.rules

# Automount an MTP device with jmtpfs
ACTION=="add", ENV{ID_MTP_DEVICE}=="1", RUN="/usr/local/sbin/mountmtp mtp%k"
ACTION=="remove", ENV{ID_MTP_DEVICE}=="1", RUN="/usr/local/sbin/umountmtp mtp%k"

Создаем скрипт монтирования /usr/local/sbin/mountmtp

#!/bin/bash
mkdir -p /media/$1
jmtpfs -o allow_other /media/$1 |& logger -t jmtpfs

Создаем скрипт размонтирования /usr/local/sbin/umountmtp

#!/bin/bash
umount -v /media/$1 |& logger -t jmtpfs
rmdir /media/$1

Я, на всякий случай, назначил этим двум файлам права 755, но, вероятно, будет работать и без этого.
После отключаем и смотрим содержимое папки /media

10) Проверяем автоматическое монтирование:

# dir
apt mtp1-3 shade
# ls
Card Phone
# cd Phone/
# ls
Alarms cloudagent Download Evernote INDI Movies PhotoEditor pmw Purrrr.3ga ShareShot SpeedSoftware Widgetsoid
Android data dslv_state.txt GOTaskManager EX Jasmine Music Pictures Podcasts Ringtones ShareViaWiFi VK yandexmaps
clockworkmod DCIM efs_Backup gReader media Notifications Playlists Purrr-2.3ga Samsung S Note vpnroot.db

11) Подчищаем хвосты. Папку ~/mtp-dev можно удалять смело, а папку ~/Samsung_Galaxy_Note2 можно удалить, если вы используете автоматическое монтирование устройства.

Источники:
http://forum.ubuntu.ru/index.php?PHPSESSID=sfgtfev87ksr38su6i28obv0e1&topic=202965.15
http://www.humans-enabled.com/2011/12/how-to-fix-samsung-galaxy-nexus-mtp.html
http://research.jacquette.com/jmtpfs-exchanging-files-between-android-devices-and-linux/
http://linuxundich.de/de/ubuntu/mit-jmtpfs-mtp-gerate-wie-das-galaxy-nexus-oder-das-samsung-galaxy-siii-in-ubuntu-mounten/
http://forums.fedoraforum.org/showthread.php?t=284741

PS Уверен, что подобный метод заработает на Samsung Galaxy S2 , Galaxy S3, Galaxy Note, Galaxy Note2. Но мне было не на чем проверять :)

PPS У кого не работает – я не виноват, гугл в помощь ;)