¿Conseguir que los dispositivos con MTP funcionen con Ubuntu?

69

Dado que Ubuntu 13.04 , el acceso de almacenamiento a dispositivos externos a través de MTP se supone que funciona de inmediato a través de un módulo GVFS-MTP.

Si bien esta pregunta es sobre el Galaxy Nexus, también se admiten otros dispositivos Android, así como teléfonos con Windows y reproductores multimedia habilitados para MTP .

Para la resolución de problemas, consulte esta respuesta .


Tengo muchos problemas para que las transferencias de archivos funcionen a través de MTP con el Galaxy Nexus. Estoy usando Kubuntu 11.10 de 64 bits, y esto es lo que he hecho y los resultados que obtengo:

  1. Se agregó una regla para el dispositivo /etc/udev/rules.d/51-android.rules. La regla es la siguiente y funciona para adb:

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
    
  2. Reiniciado udev(y computadora solo para asegurarse).

Adb funciona, y todos los métodos para leer desde el dispositivo a través de MTP parecen funcionar (he intentado montar con mtpfs, gmtp y usar el paquete mtp-tools directamente). Sin embargo, cuando intento escribir en el dispositivo, nada de lo que he probado funciona.

Como ejemplo, ejecutar mtp-newfolder test_dir 0 0da el siguiente resultado:

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!

Si ejecuto mtp-foldersdespués de un mtp-newfolder fallido sin volver a enchufar el dispositivo, obtengo el siguiente resultado:

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.

Acompañado de lo siguiente en 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

¿Alguien tiene alguna idea sobre qué hacer?

EDITAR:

También probé el modo PTP. Nuevamente, la lectura funciona bien, pero no puedo escribir nada en el dispositivo.

León
fuente
No creo que sea Samsung ... y creo que es Android. Mi dispositivo alimentado con Honeycomb es exactamente la misma forma en la que tiene que usar solo MTP. Creo que así serán todos los dispositivos Android posteriores a la 2.3.

Respuestas:

37

Desde Ubuntu 13.04, el acceso de almacenamiento a dispositivos externos a través de MTP funciona de forma inmediata a través de un módulo GVFS-MTP.

Pregunta relacionada: ¿Hay planes para mejorar el soporte de mtp en futuras versiones de Ubuntu?

Para la solución de problemas, vea esta respuesta .


Para mí, era un problema no tener los últimos libmtparchivos en mi sistema. Así que arreglé el problema e hice esta reseña para ayudar a otros .

Resumen del enlace: Hubo un error en el libmtppaquete con versiones anteriores de Ubuntu. Este error ya fue corregido en la última fuente de libmtp.

Shannon_VanWagner
fuente
1
El problema parece estar solucionado en los paquetes para Ubuntu 12.04, por lo que pueden usarse si eres lo suficientemente valiente como para hacerlo. Los tomé de launchpad.net/ubuntu/+source/libmtp/1.1.1-1 y creé los paquetes para el sistema (y lo mismo para gmtp)
Tatu Lahtela
@Shannon. Gracias. Esta es la mejor solución. Ojalá lo hubiera encontrado primero.
MountainX
2
rhythmbox todavía se congela y da errores (LIBMTP_Send_Representative_Sample (): no se pudo obtener información del objeto) al intentar acceder al nexo, y nautilus da: No se puede montar Galaxy Nexus; Error al inicializar la cámara: -60: No se pudo bloquear el dispositivo. Poo
waspinator
Sería bueno actualizar las instrucciones para obtener el último mtp, no 1.1.1
Kostiantyn Rybnikov
21

¿Has probado la sugerencia de Bilal Akhtar en omgubuntu ?

Conectar su teléfono o tableta Android a Ubuntu con MTPFS

  1. Preparar

    Primero, instale las herramientas necesarias con sudo apt-get install mtp-tools mtpfs

    Conecte su Galaxy Nexus a su computadora. En su teléfono, abra el cajón de notificaciones y haga clic en "Tipo de conexión USB". Asegúrese de que MTP esté seleccionado.

    imagen que muestra la configuración de conexión USB de Android

    Luego, ejecute estos comandos:

    mtp-detect | grep idVendor
    mtp-detect | grep idProduct
    

    Obtendrá una salida como esta: ingrese la descripción de la imagen aquí

    Ahora, ejecuta estos comandos:

    gksu gedit /etc/udev/rules.d/51-android.rules
    

    Se abrirá una ventana de Gedit. Escriba este texto en él, todo en una sola línea :

    SUBSYSTEM=="usb", ATTR{idVendor}=="VENDORID", ATTR{idProduct}=="PRODUCTID", MODE="0666"
    

    Reemplace VENDORIDcon el idVendorque había anotado anteriormente. Del mismo modo, reemplace PRODUCTIDcon el idProductque había anotado. En mi caso, lo fueron 04e8y 685crespectivamente, pero podrían haber sido diferentes para ti.

    Guarde y cierre el archivo. Luego, desconecte su teléfono y ejecute estos comandos:

    sudo service udev restart
    sudo mkdir /media/GalaxyNexus
    sudo chmod a+rwx /media/GalaxyNexus
    sudo adduser $USER fuse
    

    $USERes una variable de shell predeterminada y debe ser el usuario que desea agregar (generalmente usted mismo). Ahora, ejecuta este comando:

    gksu gedit /etc/fuse.conf
    

    En la ventana de Gedit, elimine el #principio de la última línea (la que comienza con #user_allow_other) de esta manera:

    ingrese la descripción de la imagen aquí

    ¡Ya casi terminas! Ahora, reinicie su computadora y luego ejecute estos tres comandos:

    echo "alias android-connect=\"mtpfs -o allow_other /media/GalaxyNexus\"" >> ~/.bashrc
    echo "alias android-disconnect=\"fusermount -u /media/GalaxyNexus\"" >> ~/.bashrc
    source ~/.bashrc
    
  2. Uso

    Conecte su teléfono, asegúrese de que su teléfono esté usando MTP y ejecútelo android-connect.

    Voila! Ahora puede navegar por los contenidos de su teléfono Android usando Nautilus. Simplemente inicie el administrador de archivos y luego, en la barra lateral, haga clic en GalaxyNexus para explorar el contenido de su teléfono como lo haría con una memoria USB. También puede agregar, eliminar y modificar archivos como un sistema de archivos normal.

    captura de pantalla de nautilus que muestra el contenido del teléfono

    Para quitar el teléfono de forma segura, solo corre android-disconnect.

  3. Conclusión

    De ahora en adelante, solo necesita correr android-connectpara montar su teléfono y luego android-disconnectquitarlo de manera segura. Todo lo demás debe manejarse automáticamente. Intenté muchas formas de hacer que el montaje y el desmontaje sucedan automáticamente en la conexión por cable, pero esta fue la mejor solución que se me ocurrió.

    Estos dos comandos no requerirán permisos de root para ejecutarse. Todos los usuarios que son miembros del grupo de usuarios de fusibles deberían poder ejecutar estos comandos sin acceso de root.

    ¡Eso es! Has conectado con éxito tu teléfono Ice Cream Sandwich a tu computadora Ubuntu. El proceso puede ser largo para un novato, pero estoy seguro de que alguien vendrá y hará una GUI para todo esto para que todo suceda sin problemas. :)

desgua
fuente
Sí, ya probé la mayoría de las formas de usar las herramientas mtpfs. Como Shannon descubrió, aparentemente era un error en libmtp.
Leo
Funciona, pero tengo algunas preguntas. 1. ¿Qué hace esa configuración de udev? ¿Por qué no funciona sin ella? 2. ¿Por qué magia sabe qué dispositivo montar cuando lo hace mtpfs, o simplemente admite solo 1 dispositivo conectado a la vez?
Bart van Heukelom el
Además, al copiar un archivo grande (con Nautilus) parecerá que se copia muy rápido (50 MB / s) pero durante ese tiempo no copia nada. Solo cuando la barra de progreso llegue al 100% comenzará la copia real (y la interfaz se bloqueará). ¿Quizás se puede deshabilitar algún tipo de opción de buffer?
Bart van Heukelom el
Lamentablemente no sé las respuestas que quieres. Lo siento.
desgua
Hice todo esto, pero recibí este mensaje al intentar conectar Android: fusermount: no se pudo abrir /etc/fuse.conf: Permiso denegado fusermount: la opción allow_other solo está permitida si 'user_allow_other' está configurado en /etc/fuse.conf incluso aunque edité /etc/fuse.conf según las instrucciones.
Dmitry Shvedov
21

Conexión de dispositivos a través de MTP con GVFS

Desde el acceso de almacenamiento Ubuntu 13.04 a dispositivos con capacidad MTP funciona de forma inmediata a través de un backend GVFS . Por favor, eche un vistazo a ¿Hay algún plan para mejorar el soporte de mtp en futuras versiones de Ubuntu? para instrucciones de instalación anteriores a 13.04.

Esta solución debería funcionar para todos los dispositivos Android que proporcionan la funcionalidad MTP y, probablemente, todos los dispositivos que no sean Android con funcionalidad MTP, como teléfonos con Windows y reproductores multimedia portátiles .

No te confundas

Ha habido cierta confusión, intentemos aclarar las cosas:

  • ¡ No necesita hacer nada que pueda anular su garantía!

    • No necesita rootear su dispositivo.
    • No necesita desbloquear el gestor de arranque. (Puede encontrar instrucciones para Android e ).

    El desbloqueo solo se refiere a la pantalla de bloqueo del sistema operativo en esta respuesta.

  • No necesita configurar el acceso de desarrollador a su dispositivo como ADB, fastboot o algo similar a través de ciertas reglas de udev. (Puede encontrar instrucciones para Android en el capítulo Configuración del acceso USB a su correo o su correo .)

  • Que yo sepa, tampoco necesita FUSE ni configura las opciones relacionadas con FUSE.

Problemas de solución de problemas

  1. No puedo poner archivos en el dispositivo.

    Su dispositivo debe estar desbloqueado para acceder al almacenamiento del dispositivo con Ubuntu a través de MTP.

    mostrando el dispositivo en nautilus en estado bloqueado y desbloqueado

  2. Recibo un mensaje de error de que el dispositivo no se puede montar.

    Si recibe el siguiente mensaje de error, intente volver a conectar el dispositivo una vez .

    mensaje de error que puede aparecer al conectarse

    Si el mensaje de error aparece nuevamente, abra una nueva ventana de nautilus desde el iniciador (preferiblemente haciendo clic en el icono del dispositivo) y probablemente cerrando la ventana de nautilus actual. Posiblemente relacionado: ¿Cómo crear reglas udev para deshabilitar uno de los dispositivos Android?

  3. Compruebe si hay reglas de udev para su dispositivo

    Abra una terminal y escriba lsusb. Encuentre su dispositivo en la salida y anote la ID (por ejemplo 0fce:01b1). La primera parte es la identificación del proveedor, la última parte es la identificación del producto.

    Abra el archivo de reglas de mtp udev correspondiente con nano /lib/udev/rules.d/69-libmtp.rulesy busque su ID de producto (use Ctrl+ W). Si no puede encontrarlo, debe crear una entrada personalizada /etc/udev/rules.d/69-libmtp.rulessiguiendo el patrón a continuación y reiniciar .

    # 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"
    

    Debería considerar presentar un error contra el paquete libmtp (más precisamente libmtp-common ) para que su dispositivo se incluya en futuras versiones, si esto funcionó para usted.

  4. Todavía no puedo conectarme

    Su dispositivo no es compatible con el subyacente libmtpo puede experimentar el mismo problema que tengo con mi Lumia 620, siga la solución (pasos para reproducir) que publiqué en LP # 1247572: Nokia Lumia 620 (WP8) no se puede montar de manera confiable a través de gvfs-mtp en nautilus . (El dispositivo todavía no funciona sin problemas aquí, pero el uso de mtp-detectayuda).

    Debe buscar el rastreador de errores libmtp para su dispositivo y seguir las instrucciones para nuevos dispositivos en la página del proyecto para abrir un informe de errores.

  5. El rastreador de errores enumera mi dispositivo como compatible pero aún no funciona

    En algunos casos, es posible que un informe de error relacionado con su dispositivo ya se haya archivado y resuelto en una versión de libmtp más reciente que la que incluye su distribución (por ejemplo: Motorola Moto G ). Si ese es el caso, tendrá que esperar a que se actualicen los repositorios oficiales o buscar un PPA actualizado.

    Aquí puede encontrar una lista actualizada de todas las versiones de libmtp disponibles a través de los canales oficiales de software de Ubuntu y PPA privadas (asegúrese de expandir Otras versiones de 'libmtp' en archivos no confiables ). A partir del 13/02/2014, este PPA de Matthieu Baerts ofrece el último paquete libmtp disponible para Ubuntu.

    Advertencia : este PPA contiene una variedad de paquetes diferentes y posiblemente inestables. Aconsejaría no agregarlo a su sistema. En su lugar, puede descargar los paquetes libmtp por separado e instalarlos manualmente en su sistema.

    Familiarícese con los PPA y sus riesgos antes de continuar. Lea también el siguiente párrafo sobre cómo restaurar sus paquetes originales antes de continuar con los siguientes pasos:

    1. Diríjase a la página de detalles del paquete del PPA y expanda la entrada libmtp
    2. Descarga los siguientes paquetes: libmtp-common, libmtp-runtime, libmtp9, mtp-tools. Asegúrese de elegir la arquitectura correcta para su sistema (generalmente será amd64).

      Aquí están los enlaces del paquete a partir del 13/02/2014: libmtp-common , libmtp-runtime , libmtp9 , mtp-tools

    3. Proceda a instalar manualmente los paquetes actualizados con dpkg (cambie $HOME/Downloadsa su carpeta de descarga y asegúrese de que no haya otros archivos deb:

      cd "$HOME/Downloads"
      sudo dpkg -i *.deb
      
    4. Una vez que todo se haya instalado correctamente, reinicie su computadora, desbloquee su dispositivo Android, conéctelo a través de USB y debería aparecer en su administrador de archivos.

    Esto funcionó bien para mí (@Glutanimate) con mi Motorola Moto G. Debido a que estaba ejecutando Ubuntu 12.04 LTS, primero tuve que instalar una versión actualizada de gnome-gvfs. Consulte las instrucciones de instalación anteriores a 13.04 en la parte superior para obtener más información.

    Para deshacer los cambios si algo sale mal o si el dispositivo aún no se reconoce, deberá instalar manualmente los paquetes originales. Dirígete a la descripción general de la fuente libmtp y encuentra tu versión de Ubuntu. Expanda la entrada en cuestión y proceda a descargar los paquetes, tal como lo hizo en el paso 2 anterior. Continúe con la instalación como se describe en el paso 3 y reinicie su sistema. Todo debería volver a la normalidad ahora.

LiveWireBT
fuente
1
+1 para 'No te confundas' no funciona para mi galaxy s3 mini :(
hugo der hungrige
Trabajé para mi tableta Samsung Galaxy con Android 4.1.2, pero no puedo editar los archivos sobre la marcha. ¿Tienes una solución para eso también?
Vesnog
"Algunas guías sugieren agregar reglas de udev a un archivo llamado 51-android.rules. No son para MTP, ..." Perdiste toda credibilidad cuando dijiste eso. Las reglas en udev / rules.d / son completamente flexibles. 51-android-rules es un lugar perfectamente apropiado para ellos. También podría poner razonablemente la regla en 52 reglas telefónicas
Auspex
@Auspex La línea podría haberse escrito mejor, pero en lugar de quejarse, podría haber hecho eso (eso requeriría leer y comprender toda la publicación) o proporcionar una mejor respuesta. Mirando tu perfil, supongo que sabes cómo se supone que funcionan los sitios SE. La forma en que administra (mal) sus archivos /etcdepende completamente de usted. Como se explicó anteriormente, idealmente todas las reglas de udev deben proporcionarse ootb. De lo contrario, se debe presentar un error para incluir la regla que falta /lib/.../69-libmtp.rules, para que todos estén contentos con la próxima versión.
LiveWireBT
1
@Auspex No entiendo lo que estás tratando de lograr aquí. Repito: cómo gestionas tus archivos /etcdepende de ti. /lib/udev/rules.d/69-libmtp.ruleses lo que eligieron los encargados del mantenimiento del paquete y sugiero que se presente un error en ese paquete (he actualizado mi respuesta) para los usuarios que enfrentan este problema. Si todavía tiene un problema con eso, hable amablemente con los encargados del mantenimiento o publique su propia respuesta. Ahora me estoy retirando de esta conversación contigo sobre este tema.
LiveWireBT
5

Todos los programas basados libmtptodavía parecen tener problemas con el Galaxy Nexus (a partir de libmtp 1.1.3). Programas basados ​​en el gphoto2trabajo para mí.

Personalmente estoy usando gphotofs, disponible en un paquete del mismo nombre.

Use gphotofs ~/mymountpointpara montar, luego fusermount -u ~/mymountpointdesmonte cuando haya terminado.

bseibold
fuente
Acabo de actualizar a 12.04 y parece que libmtp 1.1.3 no funciona correctamente como dijiste. Habrá que investigar esto un poco más. Sin embargo, gphotofs funciona perfectamente, así que gracias por la sugerencia.
Leo
1
Usar gphotofsme deja con un solo directorio que está vacío.
Nathan Osman
4

Instale lo siguiente y reinicie:

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
fuente
Y sí, esta respuesta se aplica también a "Ubuntu 13.04 [y superior; donde] se supone que el acceso de almacenamiento a dispositivos externos a través de MTP funciona de forma inmediata a través de un módulo GVFS-MTP" . Porque es posible que no se instale de fábrica. ¡Incluso cuando su dispositivo MTP ya está montado de alguna manera! (Pero le da acceso de solo lectura u otros problemas.)
tanius
1
@tanius Debo decir que MTP es tan dolorosamente lento que ni siquiera lo uso. esfile explorer tiene un servidor ftp y solo uso curl para cargar archivos al dispositivo en mi red local.
mchid
Este comando apunta a la fuente del problema:The following packages have unmet dependencies: gvfs-backends : Depends: gvfs (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed Depends: gvfs-daemons (= 1.28.2-1ubuntu1~16.04.2) Depends: gvfs-libs (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed Depends: gvfs-common (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed E: Unable to correct problems, you have held broken packages.
NoBugs
1
Debe tener en cuenta que cuando esto falla como en el comentario anterior, elimine y vuelva a instalar "ubuntu-desktop" y lo anterior con sudo apt-get install --reinstall. y luego reiniciar.
NoBugs
0

Como primer paso, instalaría jmtpfs( sudo apt-get install jmtpfsen la terminal - Ctrl+ Alt+ T), luego crearía una carpeta con mkdir foldernamey luego montaría el dispositivo jmtpfs foldername, luego iría a nautilus (Archivos).

Si su dispositivo no es compatible con la libmtpversión en ubuntu. libmtpDebe descargar y crear una versión reciente (> 1.1.12), como en: ¿Cómo puedo instalar la última versión de libmtp?

Debería poder ver las carpetas también mtp-foldersen un terminal o con la interfaz gráfica gmtp.

Los pasos anteriores podrían mostrar un error si los ejecuta sin sudo:

libusb_open() failed!: Permission denied

Para evitar usar sudo, debe agregar su dispositivo al /etc/udev/rules.d/51-android.rulesarchivo como se indica arriba (consulte desgua) y volver a cargar las reglas o reiniciar.

Ferroao
fuente
-1

Solo una pequeña solución, conecte su teléfono basado en ICS con un buen ALMACENAMIENTO EN MASA http://forum.xda-developers.com/showthread.php?t=1556367

adb install UMS1.0.apk
jflaflamme
fuente
1
Si bien esta es una buena solución para algunos teléfonos, esto solo funciona si un teléfono tiene una tarjeta SD separada. En relación con la pregunta original, esto no funcionaría con el Galaxy Nexus.
covernail
Incluso con una tarjeta SD separada, no creo que el montaje como dispositivo de almacenamiento masivo sea una opción en las versiones más recientes de Android. Sin embargo, "siempre hay una puerta trasera en alguna parte", así que no iré tan lejos como para decir que no es posible.
mchid
Eso fue hace 4 años;)
jflaflamme 05 de