Получение устройств с поддержкой MTP для работы с Ubuntu?

67
  

Так как Ubuntu 13.04 доступ к внешним устройствам через MTP должен работать из коробки через модуль GVFS-MTP.      

Хотя этот вопрос касается Galaxy Nexus, также поддерживаются другие устройства Android, а также Телефоны Windows и медиа-плееры с поддержкой MTP .

     

Для устранения неполадок см. this anwser .

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

  1. Добавлено правило для устройства в /etc/udev/rules.d/51-android.rules . Правило следующее и работает для adb :

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
    
  2. Перезагружено 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!

Если я запустил mtp-folders после неудачной 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. Опять же, чтение отлично работает, но я ничего не могу записать на устройство.

    
задан Leo 14.12.2011 в 10:01
источник

6 ответов

36

Так как Ubuntu 13.04, доступ к внешним устройствам через MTP работает из коробки через модуль GVFS-MTP.

Связанный вопрос: Есть ли любые планы по улучшению поддержки mtp для будущих выпусков Ubuntu?

Для устранения неполадок см. этот ответ .

Для меня это была проблема отсутствия последних файлов libmtp в моей системе. Поэтому я исправил проблему и сделал эту запись для помогите другим .

Резюме ссылки: В libmtp произошла ошибка в комплекте со старыми версиями Ubuntu. Эта ошибка уже была исправлена ​​в последнем источнике libmtp .

    
ответ дан Shannon_VanWagner 18.12.2011 в 11:22
источник
21

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

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

  1. Настройка

    Сначала установите необходимые инструменты с помощью 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
    
  2. Использование

    Подключите телефон, убедитесь, что ваш телефон использует MTP и запускает android-connect .

    Voila! Теперь вы можете просматривать содержимое своего телефона Android с помощью Nautilus. Просто запустите диспетчер файлов, а затем в боковой панели нажмите GalaxyNexus, чтобы просмотреть содержимое вашего телефона так же, как и с USB-накопителем. Вы также можете добавлять, удалять и изменять файлы, как в обычной файловой системе.

    Чтобы безопасно удалить телефон, просто запустите android-disconnect .

  3. Заключение

    С этого момента вам просто нужно запустить android-connect , чтобы смонтировать телефон, а затем android-disconnect , чтобы безопасно удалить ваш телефон. Все остальное должно обрабатываться автоматически. Я попробовал много способов получить монтировку и размонтировать автоматически при подключении кабеля, но это было лучшее решение, которое я мог придумать.

    Эти две команды не требуют запуска разрешений root . Все пользователи, являющиеся членами группы пользователей предохранителей, должны иметь возможность запускать эти команды без доступа root.

    Вот и все! Вы успешно подключили свой сэндвич-телефон с мороженым к компьютеру Ubuntu. Процесс может быть длинным для новичков, но я уверен, что кто-то придет и сделает GUI для всего этого, чтобы все происходило гладко. :)

ответ дан desgua 17.12.2011 в 19:13
18

Подключение устройств через MTP с помощью GVFS

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

Это решение должно работать на всех устройствах Android , обеспечивая функциональность MTP и, возможно, все устройства, отличные от Android, с функциями MTP, такими как Телефоны Windows и Портативные медиаплееры strong>.

Не путайте

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

  • Вам не нужно делать что-либо, что может аннулировать вашу гарантию!

    • Вам не нужно запускать свое устройство.
    • Вам не нужно разблокировать загрузчик. (Вы можете найти инструкции для Android ее e .)

    В этом ответе разблокировка относится только к экрану блокировки операционных систем.

  • Вам не нужно настраивать доступ разработчика к вашему устройству, например, ADB, fastboot или что-то подобное с помощью определенных правил udev. (Инструкции для Android можно найти в главе Настройка USB-доступа ее e или ее e .)

  • Насколько я знаю, вы также не нуждаетесь в FUSE или настраиваете параметры, связанные с FUSE.

Проблемы с устранением неполадок

  1. Я не могу поместить файлы на устройство.

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

  2. Я получаю сообщение об ошибке, что устройство не может быть смонтировано.

    Если вы получите следующее сообщение об ошибке, попробуйте выполнить повторное использование устройства один раз .

    Если появляется сообщение об ошибке, снова откройте новое окно nautilus из панели запуска (желательно, щелкнув значок устройства) и, возможно, закрыв текущее окно nautilus. Возможно, связаны: Как создать правила udev для отключения одного из устройств Android?

  3. Проверьте, существуют ли правила udev для вашего устройства

    Откройте терминал и введите lsusb . Найдите устройство на выходе и запишите идентификатор (например, 0fce:01b1 ). Первая часть - идентификатор поставщика последней части идентификатора продукта.

    Откройте соответствующий файл правил mtp udev с nano /lib/udev/rules.d/69-libmtp.rules и закрепите для своего идентификатора продукта (используйте Ctrl + W ). Если вы не можете найти его, вам нужно создать пользовательскую запись в /etc/udev/rules.d/69-libmtp.rules по шаблону ниже и перезагрузить .

    # SONY Xperia Z2 MTP
    ATTR{idVendor}=="01b1", ATTR{idProduct}=="01b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
    

    Вам следует рассмотреть подачу ошибки по сравнению с пакетом libmtp (точнее libmtp-common ), чтобы ваше устройство было включено в будущие версии, если это сработало для вас.

  4. Я все еще не могу подключиться

    Ваше устройство либо не поддерживается базовым libmtp , либо вы можете столкнуться с тем же вопросом, который у меня есть с моей Lumia 620, пожалуйста, следуйте обходному пути (шаги для воспроизведения). Я разместил в LP#1247572: Nokia Lumia 620 (WP8) надежно монтируется через gvfs-mtp в nautilus . (Устройство по-прежнему не работает безупречно, но использование mtp-detect помогает.)

    Вам следует искать файл-загрузчик libmtp для своего устройства и следовать инструкциям для новых устройств на странице проекта , чтобы открыть отчет об ошибке.

  5. Отслеживание ошибок отображает мое устройство как поддерживаемое, но оно все еще не работает

    В некоторых случаях отчет об ошибке, касающийся вашего устройства, может быть уже зарегистрирован и разрешен в более поздней версии libmtp, чем то, что поставляется вашим дистрибутивом (например: Motorola Moto G ). Если это так, вам придется либо ждать, когда официальные репозитории будут обновлены, либо будут искать обновленный PPA.

    Обновленный список всех версий libmtp, доступных через официальные каналы программного обеспечения Ubuntu и частные PPA, можно найти здесь (обязательно развернуть Другие версии 'libmtp' в ненадежных архивах ). По состоянию на 2014/02/13 thisPAA от Matthieu Baerts предлагает самый последний пакет libmtp, доступный для Ubuntu.

    Предупреждение : этот PPA содержит множество различных и, возможно, нестабильных пакетов. Я бы посоветовал добавить его в вашу систему. Вместо этого вы можете загружать пакеты libmtp отдельно и вручную устанавливать их в своей системе.

    Пожалуйста, ознакомьтесь с PPA и их рисками , прежде чем двигаться дальше. Пожалуйста, также прочитайте приведенный ниже параграф о восстановлении исходных пакетов, прежде чем приступать к выполнению следующих действий:

    1. Перейдите на страницу страницы с деталями PPA и разверните запись libmtp
    2. Загрузите следующие пакеты: libmtp-common , libmtp-runtime , libmtp9 , mtp-tools . Убедитесь, что вы выбрали правильную архитектуру для вашей системы (обычно это будет amd64 ).

      Вот ссылки на пакеты с 2014/02/13: libmtp-common , libmtp-runtime , libmtp9 , MTP-инструменты

    3. Выполните ручную установку обновленных пакетов с помощью dpkg (измените $HOME/Downloads на свою папку загрузки и убедитесь, что нет других файлов deb:

      cd "$HOME/Downloads"
      sudo dpkg -i *.deb
      
    4. Как только все будет установлено успешно, перезагрузите компьютер, откройте Android-устройство, подключите его через USB и он появится в вашем файловом менеджере.

    Это отлично работает для меня (@Glutanimate) с моей Motorola Moto G. Поскольку я запускал Ubuntu 12.04 LTS, мне сначала пришлось установить обновленную версию gnome-gvfs . Более подробную информацию см. В инструкциях по установке до 13.04 вверху.

    Чтобы отменить изменения, если что-то пойдет не так, или если устройство все еще не распознано, вам придется вручную установить исходные пакеты. Перейдите в обзор источника libmtp и найдите свою версию Ubuntu. Разверните эту запись и приступите к загрузке пакетов, как и в предыдущем шаге 2. Продолжайте установку, как описано в шаге 3, и перезагрузите систему. Теперь все должно быть нормальным.

ответ дан LiveWireBT 15.06.2013 в 01:04
5

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

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

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

    
ответ дан bseibold 07.07.2012 в 15:28
3

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

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
    
ответ дан mchid 11.10.2015 в 13:10
-1

Просто обходное решение, подключите свой телефон на основе ICS с хорошим старым МАССОВОГО ХРАНЕНИЯ Ссылка

adb install UMS1.0.apk
    
ответ дан jflaflamme 23.03.2012 в 20:57