Скрещиваем 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-devel2) Качаем в ~/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_other5) Подключаем телефон, создаем папку, я создавал такую:
$ mkdir ~/Samsung_Galaxy_Note26) Запускаем:
$ 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_Note29) Вариант для продвинутых, автоматическое монтирование/размонтирование:
Создаем файл /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 У кого не работает — я не виноват, гугл в помощь 😉