Как использовать устройства с поддержкой MTP для работы с Ubuntu?

Поскольку доступ к хранилищу Ubuntu 13.04 для внешних устройств через MTP должен работать из коробки через модуль GVFS-MTP. Хотя этот вопрос касается Galaxy Nexus, поддерживаются также другие устройства Android, а также телефоны Windows и медиаплееры с поддержкой MTP. Для устранения неполадок см. Этот anwser.

У меня довольно много проблем с получением файлов-передач, работающих над MTP с Galaxy Nexus. Я использую Kubuntu 11.10 64-bit, и это то, что я сделал, и результаты, которые я получаю:

Добавлено правило для устройства в /etc/udev/rules.d/51-android.rules. Правило следующее и работает для adb:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
Перезагружено udev (и компьютер, чтобы убедиться).

Adb работает, и все методы чтения с устройства через MTP, похоже, работают (я пробовал монтировать с mtpfs, gmtp и напрямую с помощью пакета mtp-tools). Однако, когда я пытаюсь выполнить запись на устройство, я ничего не пробовал.

В качестве примера, запуск mtp-newfolder test_dir 0 0 дает следующий вывод:

libmtp version: 1.1.0
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7510/Galaxy Tab 10.1.
Folder creation failed.
ERROR: Could not close session!

Если я запустил [ f9] после неудачной mtp-newfolder без повторного подключения устройства, я получаю следующий вывод:

Attempting to connect device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7510/Galaxy Tab 10.1.
PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
mtp-folders: Successfully connected
Friendly name: (NULL)
Error 1: Get Storage information failed.
Error 2: PTP Layer error 02fe: get_all_metadata_fast(): could not get proplist of all    objects.
Error 2: (Look this up in ptp.h for an explanation.)
Error 2: PTP Layer error 02fe: get_handles_recursively(): could not get object handles.
Error 2: (Look this up in ptp.h for an explanation.)
LIBMTP_Get_Storage()
: Resource temporarily unavailable
OK.

В сопровождении следующего в dmesg:

[ 1000.912082] usb 2-4: reset high speed USB device number 7 using ehci_hcd
[ 1001.045877] usb 2-4: usbfs: process 3166 (mtp-folders) did not claim interface 0 before use

Кто-нибудь

EDIT:

Я также пробовал режим PTP. Опять же, чтение отлично работает, но я ничего не могу записать на устройство.

1
задан 13 April 2017 в 15:25

5 ответов

Вы попробовали предложение Билала Ахтара на omgubuntu?

Подключение вашего Android-телефона или планшета к Ubuntu с помощью MTPFS

Настройка Сначала установите необходимые инструменты с помощью sudo apt-get install mtp-tools mtpfs. Подключите свой Galaxy Nexus к компьютеру. На телефоне откройте ящик уведомлений и нажмите «Тип подключения USB». Убедитесь, что выбран MTP. Затем выполните следующие команды:
mtp-detect | grep idVendor
mtp-detect | grep idProduct
Вы получите такой вывод: Теперь запустите следующие команды:
gksu gedit /etc/udev/rules.d/51-android.rules
Должно открыться окно Gedit. Введите этот текст в нем, все в одной строке:
SUBSYSTEM=="usb", ATTR{idVendor}=="VENDORID", ATTR{idProduct}=="PRODUCTID", MODE="0666"
Замените VENDORID на idVendor, который вы отметили ранее. Аналогичным образом замените PRODUCTID на idProduct, который вы отметили. В моем случае они были 04e8 и 685c соответственно, но они могли быть разными для вас. Сохраните и закройте файл. Затем отключите телефон и выполните следующие команды:
sudo service udev restart
sudo mkdir /media/GalaxyNexus
sudo chmod a+rwx /media/GalaxyNexus
sudo adduser $USER fuse
$USER является переменной оболочки по умолчанию и должен быть пользователем, которого вы хотите добавить (обычно сами). Теперь запустите эту команду:
gksu gedit /etc/fuse.conf
В окне Gedit удалите # в начале последней строки (тот, который начинается с #user_allow_other) следующим образом: вы почти закончили! Теперь перезагрузите компьютер и выполните следующие три команды:
echo "alias android-connect=\"mtpfs -o allow_other /media/GalaxyNexus\"" >> ~/.bashrc
echo "alias android-disconnect=\"fusermount -u /media/GalaxyNexus\"" >> ~/.bashrc
source ~/.bashrc
Использование Подключите телефон, убедитесь, что ваш телефон использует MTP и запускает android-connect. Вуаля! Теперь вы можете просматривать содержимое своего телефона Android с помощью Nautilus. Просто запустите диспетчер файлов, а затем в боковой панели нажмите GalaxyNexus, чтобы просмотреть содержимое вашего телефона так же, как и с USB-накопителем. Вы также можете добавлять, удалять и изменять файлы, как обычную файловую систему. Чтобы безопасно удалить телефон, просто запустите android-disconnect. Заключение С этого момента вам просто нужно запустить android-connect, чтобы смонтировать свой телефон, а затем android-disconnect, чтобы безопасно удалить телефон. Все остальное должно обрабатываться автоматически. Я пробовал много способов получить монтировку и размонтировать автоматически при подключении кабеля, но это было лучшее решение, которое я мог бы придумать. Для этих двух команд не требуются права root. Все пользователи, входящие в группу пользователей предохранителей, должны иметь возможность запускать эти команды без доступа root. Это оно! Вы успешно подключили свой сэндвич-телефон с мороженым к компьютеру Ubuntu. Процесс может быть длинным для новичков, но я уверен, что кто-то придет и сделает GUI для всего этого, чтобы все происходило гладко. :)
21
ответ дан 25 May 2018 в 15:57
  • 1
    Да, уже пробовал большинство способов использования инструментов mtpfs. Как выяснил Шеннон, в libmtp была обнаружена ошибка. – Leo 19 December 2011 в 14:35
  • 2
    Это работает, но у меня есть некоторые вопросы. 1. Что делает эта конфигурация udev, почему она не работает без нее? 2. Какую магию он знает, какое устройство монтировать, когда вы делаете mtpfs, или просто поддерживает только одно подключенное устройство за раз? – Bart van Heukelom 24 March 2012 в 03:53
  • 3
    Также при копировании большого файла (с помощью Nautilus) он будет копироваться очень быстро (50 Мбайт / с), но за это время он ничего не копирует. Только когда индикатор выполнения достигнет 100%, он запустит реальную копию (и интерфейс зависает). Может быть, какой-то вариант буфера можно отключить? – Bart van Heukelom 24 March 2012 в 04:06
  • 4
    К сожалению, я не знаю ответов, которые вы хотите. Прости. – desgua 24 March 2012 в 08:10
  • 5
    Все это, но получение этого сообщения при попытке андроида-подключения: fusermount: не удалось открыть /etc/fuse.conf: Permission denied fusermount: опция allow_other разрешена только в том случае, если 'user_allow_other' установлен в /etc/fuse.conf даже хотя я отредактировал /etc/fuse.conf в соответствии с инструкциями. – Dmitry Shvedov 29 May 2012 в 07:41

подключение через MTP С В

начиная с Ubuntu 13.04 доступ к хранилищу для устройств, способных ССП работает из коробки через в серверной. Пожалуйста, посмотрите есть ли планы по улучшению поддержки MTP на будущих версий Ubuntu? инструкции по установке до 13.04.

это решение должно работать на всех Android устройств, обеспечивающих функциональность MTP и, наверное, все не-Android устройств с функцией ССП, как Windows телефонов и портативных Медиа-плееров.

не путать

там была какая-то путаница, давайте попробуем внести ясность:

Вы не должны делать ничего, что может привести к аннулированию гарантии! Вам не нужно искоренить устройства. Вам не нужно разблокировать загрузчик. (Вы можете найти инструкции для Android здесь.) Разблокирование раз относится к операционным системам lockscreen в этот ответ. Вам не нужно настроить доступ к разработчику устройства, как АБР, быстрой загрузки или что-то подобное с помощью определенных правил udev. (Вы можете найти инструкции для Android в разделе Настройка доступа по USB здесь или здесь.) Насколько я знаю, не должно быть предохранителей или настроить взрыватель параметры.

устранение неполадок

я не могу поместить файлы на устройство. Вашем устройстве должен быть разблокирован для доступа к памяти устройства с Ubuntu через MTP. Я получаю сообщение об ошибке, что устройство не может быть установлено. Если вы получите ниже сообщение об ошибке, попробуйте еще раз переподключить устройство. Если сообщение об ошибке появляется снова откройте новое окно Наутилуса с лаунчером (желательно, щелкнув значок устройства) и, возможно, закрытие текущих Наутилус окна. Возможно, по теме: Как создать правила udev, чтобы отключить одно из устройств Android? Проверьте, есть ли правила udev для вашего устройства Откройте терминал и введите [Ф3]. Найдите свое устройство в выходной и запишите идентификатор (например, [Ф4]). Первая часть-это ID производителя последняя часть идентификатора продукта. Открыть файл соответствующего правила udev ССП с [ф5] и пастельные код продукта (используйте Ctrl+ж). Если Вы не можете найти его, вы должны создать пользовательскую запись в [ф6] по схеме ниже и перезагрузка. [Ф1] Вы должны рассмотреть возможность подачи ошибка против пакета это основные типы файловых систем (точнее это основные типы файловых систем-всего), чтобы ваши устройства включенными в будущих версиях, если это работает для вас. Я до сих пор не можете подключить устройство либо не поддерживается базовой [ф7] или вы могли бы испытать тот же вопрос, у меня с моего смартфона Lumia 620, пожалуйста, решение (действия по воспроизведению) я разместил в LP#1247572: Nokia Lumia 620 (КР8) не крепление надежно с помощью в MTP в Наутилус. (Устройство по-прежнему не работает безупречно, но используя [ф8] помогает.) Вы должны искать это основные типы файловых систем баг-трекер для вашего устройства и следуйте инструкциям для новых устройств на странице проекта, чтобы открыть отчет об ошибке. Баг-трекер список мое устройство поддерживается, но все равно не работает в некоторых случаях сообщение об ошибке, касающееся вашего устройства, возможно уже подана и решена в более недавнее освобождение это основные типы файловых систем, чем то, что дистрибутивы с (например: Motorola Мото G). Если это так, то Вам либо придется ждать официальных репозиториях для получения обновленных или ищет обновленные ППА. Обновленный список всех версий это основные типы файловых систем доступны через официальные каналы программного обеспечения Ubuntu и частная ППД может быть найден здесь (убедитесь в том, чтобы расширить другие версии 'это основные типы файловых систем в ненадежных архивов). Как из 2014/02/13 этот ППА Матье Baerts предлагает последний пакет это основные типы файловых систем, доступных для Ubuntu. Предупреждение: этот НПА содержит множество различных и, возможно, нестабильные пакеты. Я бы посоветовал добавить его в вашей системе. Вместо этого вы могли бы скачать это основные типы файловых систем пакеты отдельно и вручную установить их на вашей системе. Пожалуйста, ознакомьтесь с ППД и свои риски, прежде чем двигаться дальше. Пожалуйста, также прочитайте абзац ниже на восстановление ваш оригинальный пакеты перед выполнением следующих шагов: голову в пакет детали страница НПА и расширить это основные типы файловых систем записи скачать следующие пакеты: [ф9], [ф10], на [F11], [ф12]. Убедитесь в том, чтобы выбрать правильную архитектуру для вашей системы (обычно это [от f13]). Вот пакет как одной из 2014/02/13 это основные типы файловых систем распространенные, это основные типы файловых систем во время выполнения, libmtp9, МТП-инструментов перейти к вручную установить обновленные пакеты с помощью dpkg (изменить [ф14] в папку загрузки и убедиться, что нет других деб файлы: [Ф2] после того как все было успешно установлены, перезагрузите ваш компьютер, разблокировать ваш Android-устройство, подключите его через USB и он появится в файловом менеджере. Этот работал штрафа для меня (@Glutanimate) с моей Motorola Мото G. в потому что я был под управлением Ubuntu 12.04 ЛТС я сначала должен установить обновленную версию [ф15]. Пожалуйста, см. инструкции по установке до 13.04 в верхней части для получения дополнительной информации. Чтобы отменить изменения, если что-то пойдет не так или если устройство все еще не распознается, вам придется вручную установить исходные пакеты. Голова это основные типы файловых систем обзор источник и найти свой выпуск Ubuntu. Развернуть статью в вопрос и перейти к загрузке пакеты, как вы делали в шаге 2 перед. Продолжить установку, как описано в шаге 3 и перезагрузите систему. Все должно быть теперь нормально.
19
ответ дан 25 May 2018 в 15:57
  • 1
    Отлично работает для меня ... Спасибо! – Emmanuel Okeke 6 November 2013 в 14:06
  • 2
    +1 для 'Не путайте' Не работает для моей галактики s3 mini, хотя :( – hugo der hungrige 2 February 2014 в 03:24
  • 3
    Работал на моем планшете Samsung Galaxy с Android 4.1.2, но я не могу редактировать файлы на ходу. У вас есть решение для этого? – Vesnog 21 April 2014 в 03:38
  • 4
    «Некоторые руководства предлагают добавить правила udev в файл с именем 51-android.rules. Это не для MTP, ... » Вы потеряли всякое доверие, когда сказали это. Правила в udev / rules.d / полностью гибкие. 51-android-правила - идеальное место для них. Вы можете так же разумно поставить правило в 52-телефонных правилах – Auspex 23 June 2014 в 04:23
  • 5
    @Auspex Я не понимаю, чего вы пытаетесь достичь здесь. Повторяю: как вы управляете своими файлами в /etc, зависит от вас. /lib/udev/rules.d/69-libmtp.rules - это то, что выбрали разработчики пакетов, и я предлагаю записать ошибку против этого пакета (я обновил свой ответ) для пользователей, которые столкнулись с этой проблемой. Если у вас все еще есть проблемы с этим, любезно поговорите с сопровождающими или опубликуйте свой собственный ответ. Я теперь склоняюсь от этого разговора с вами на эту тему. – LiveWireBT 24 June 2014 в 20:51

Все программы на основе libmtp по-прежнему имеют проблемы с Galaxy Nexus (с libmtp 1.1.3). Программы, основанные на gphoto2, работают для меня.

Лично я использую gphotofs, доступный в пакете с тем же именем.

Используйте gphotofs ~/mymountpoint для монтирования, затем fusermount -u ~/mymountpoint для размонтирования, когда вы закончите.

5
ответ дан 25 May 2018 в 15:57
  • 1
    Просто обновлен до 12.04, и кажется, что libmtp 1.1.3 работает некорректно, как вы сказали. Придется исследовать это немного больше. gphotofs работает отлично, хотя так спасибо за предложение! – Leo 20 September 2012 в 11:50
  • 2
    Использование gphotofs оставляет меня с единственным пустым каталогом. – Nathan Osman 21 February 2013 в 08:43

Установите следующее и перезагрузитесь:

sudo apt-get install gvfs-backends mtpfs jmtpfs libmtp-common mtp-tools libmtp-dev libmtp-runtime libmtp9 gmtp libdbus-cpp5 libgflags2v5 libgoogle-glog0v5 libmtp-dbg libmtp-doc libmtpserver-dev libmtpserver1 libprocess-cpp3 mtp-server
3
ответ дан 25 May 2018 в 15:57
  • 1
    И да, этот ответ применяется также к "Ubuntu 13.04 [и выше; где] доступ к хранилищу для внешних устройств через MTP должен работать из коробки через модуль GVFS-MTP ». Потому что его можно просто не устанавливать из коробки. Даже когда ваше устройство MTP как-то автомонтируется уже! (Но давая вам доступ только для чтения или другие проблемы.) – tanius 2 March 2016 в 06:13
  • 2
    @tanius Я должен сказать, что MTP настолько болезненно медленный, что я даже не использую его больше. esfile explorer имеет ftp-сервер, и я просто использую curl для загрузки файлов на устройство в локальной сети. – mchid 2 March 2016 в 09:15

Просто небольшое решение, подключите свой телефон на основе ICS с хорошим старым МАССОВЫМ ХРАНЕНИЕМ http://forum.xda-developers.com/showthread.php?t=1556367

adb install UMS1.0.apk
-1
ответ дан 25 May 2018 в 15:57
  • 1
    Хотя это хорошее решение для некоторых телефонов, это работает только в том случае, если у телефона есть отдельная SD-карта. По отношению к оригинальному вопросу это не сработает с Galaxy Nexus. – coversnail 1 April 2012 в 15:10
  • 2
    Даже с отдельной SD-картой я не думаю, что установка в качестве устройства массовой памяти является вариантом для более новых версий Android. Хотя «всегда есть задняя дверь», поэтому я не пойду так далеко, чтобы сказать, что это невозможно. – mchid 2 April 2016 в 19:29
  • 3
    Это было 4 года назад;) – jflaflamme 5 April 2016 в 08:43

Другие вопросы по тегам:

Похожие вопросы: