Soporte MTP para Kubuntu 12.04 LTS (Precise Pangolin)

Enviado por strange1712 el 4 Junio, 2013 - 02:37.

Hola, Pablinet, veo que has escrito el wiki de MTP, deja comentarte que es muy ad-hoc a un problema al que me he enfrentado con mi celular (Samsung-i9300 a.k.a. S3). Básicamente, no funciona "out of the box" después de este procedimiento. Veo que te has centrado en dispositivos tipo Tablet, pero realmente los smartphone con Android 4.0 en adelante tienen el mismo "problema" (que desde algunos puntos de vista es una ventaja). Ahora, los motivos de Android para favorecer MTP parecen estar relacionados con las dificultades que surgían al manejar las tarjetas SD como dispositivos de almacenamiento extraíbles, ya que para dar acceso a una pc a dicho medio de almacenamiento necesita desmontarlo primero, de modo que si había archivos del sistema, caché y otras cosas ahí, se complicaba el manejo del sistema, mientras que mediante MTP el disco no se desmonta y ambos (Android y la PC) pueden acceder al sistema de archivos. A primera vista parece que la idea de abandonar el soporte "UMTS" por "MTP" era buena... aunque no todas las implementaciones de MTP son tan "estándar", por ejemplo la de mi S3.
De acuerdo con xda-developers, http://forum.xda-developers.com/showthread.php?t=2223401 , en Ubuntu 12.04 y 12.10 hay un problema de permisos que complica el montar un dispositivo mtp que puede solucionarse cambiando los permisos del archivo /etc/fuse.conf

# sudo chmod a+r /etc/fuse.conf

y se cambia el permiso para permitir a usuarios "no root" acceder y desmontar el sistema de archivos,

/etc/fuse.conf

...
# Allow non-root users to specify the 'allow_other' or 'allow_root' mount options.
user_allow_other

Luego, el soporte puede ser agregado mediante kio-mtp o bien go-mtpfs de Webupd8, en cuyo caso hay que agregar el repositorio de WebUpd8 e instalar go-mtpfs, es decir,

sudo add-apt-repository ppa:webupd8team/unstable
sudo apt-get update
sudo apt-get install go-mtpfs

Ahora, para que se "monte" "automáticamente", (que técnicamente, no monta nada, es un protocolo de envío de información), se agregan unas reglas udev,

# kdesudo kate /etc/udev/rules.d/51-android.rules

escribiendo ahí, para una Asus TF700,
# Asus TF700
SUBSYSTEM=="usb", SYSFS{idVendor}=="0b05", ATTR{idProduct}=="4c91", MODE="0666" #MTP media, USB debug on

# Asus TF700 MTP mode under JB 4.2+ : automatic mount & umount when plugged (USB debug on & off)
ENV{ID_MODEL}=="ASUS_Transformer_Pad_TF700T", ENV{ID_MODEL_ID}=="4c91", ACTION=="add", RUN+="/usr/bin/sudo -b -u YOUR_LOGIN /usr/bin/go-mtpfs -allow-other=true /media/TF700"
ENV{ID_MODEL}=="ASUS_Transformer_Pad_TF700T", ENV{ID_MODEL_ID}=="4c91", ACTION=="remove", RUN+="/bin/umount /media/TF700"
(donde para otros dispositivos hay que cambiar el idVendor e idProduct por lo que aparezca en lsusb en la línea correspondiente al dispositivo en modo mtp, y "YOUR_LOGIN" por tu nombre de usuario)...

Esto de go-mtpfs es alternativo al uso de kio-mtp, pero en algunos casos, como en el caso del S3, simple y llanamente kio-mtp no funciona (al parecer por la versión de libmtp y/o por problemas de permisos), así que hay que instalar mediante go-mtpfs y crear/editar el archivo de reglas de udev,

kdesudo kate /etc/udev/rules.d/90-android.rules

escribiendo lo siguiente en él:

# Samsung Galaxy Note 10.1 MTP mode
ATTR{idVendor}=="04e8", ACTION=="add", ENV{ID_MODEL}="GalaxyNote10"
# Samsung Galaxy Note 10.1 : automount when plugged in
ENV{ID_MODEL}=="GalaxyNote10", ACTION=="add", RUN+="/usr/bin/sudo -u root /bin/bash -c 'mkdir /media/android-mtp ; /usr/bin/go-mtpfs -allow-other=true /media/android-mtp &'"
# Samsung Galaxy SIII : umount when unplugged
ENV{ID_MODEL}=="GalaxyNote10", ACTION=="remove", RUN+="/usr/bin/sudo -u root /bin/bash -c '/bin/fusermount -u /media/android-mtp; rmdir /media/android-mtp'"

En teoría este segundo procedimiento (sacado de http://www.devslashzero.com/node/231 )es útil también para cualquier celular, pero en mi caso es básicamente el único que me ha permitido utilizar MTP con el S3. Y aún así, falla frecuentemente.

¿Como ves que se agregue este tipo de procedimientos a esta wiki? ¿O estaría mejor en otra página?