Udev, go-mtpfs et Nexus 7

Bonjour à tous,

J’essaie en vain de faire en sorte que ma Nexus 7 se monte au branchement et se démonte au débranchement.
J’ai suivi ce tuto, pour Ubuntu à la base :
bernaerts.dyndns.org/linux/247-u … nexus7-mtp

Là où ça coince c’est sur les règles udev, qui ne fonctionne pas du tout.
J’arrive bien à monter le stockage grâce à la commande :

Mais lors du branchement, les règles udev suivantes ne se déclenche pas :

# Google Nexus 7 16 Gb Bootloader & recovery mode
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0666" # Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0666" # Recovery

# Google Nexus 7 16 Gb PTP mode (camera)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e43", MODE="0666" # PTP media
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e44", MODE="0666" # PTP media with USB debug on

# Google Nexus 7 16 Gb MTP mode (multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e41", MODE="0666" # MTP media
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0666" # MTP media with USB debug on

# Google Nexus 7 MTP mode : automatic mount when plugged (all android versions)
ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e41", ACTION=="add", RUN+="/usr/bin/sudo -b -u yourlogin /usr/local/sbin/go-mtpfs -allow-other=true /media/Nexus7"
ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e42", ACTION=="add", RUN+="/usr/bin/sudo -b -u yourlogin /usr/local/sbin/go-mtpfs -allow-other=true /media/Nexus7"
ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e41", ACTION=="add", RUN+="/usr/bin/sudo -b -u yourlogin /usr/local/sbin/go-mtpfs -allow-other=true /media/Nexus7"
ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e42", ACTION=="add", RUN+="/usr/bin/sudo -b -u yourlogin /usr/local/sbin/go-mtpfs -allow-other=true /media/Nexus7"

# Google Nexus 7 MTP mode : automatic unmount when unplugged (all android versions)
ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e41", ACTION=="remove", RUN+="/bin/umount /media/Nexus7"
ENV{ID_MODEL}=="Nexus", ENV{ID_MODEL_ID}=="4e42", ACTION=="remove", RUN+="/bin/umount /media/Nexus7"
ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e41", ACTION=="remove", RUN+="/bin/umount /media/Nexus7"
ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e42", ACTION=="remove", RUN+="/bin/umount /media/Nexus7"

Bien entendu “yourlogin” a été remplacé par mon login correct.

J’ai bien entendu vérifier que ID_MODEL_ID et ID_MODEL soient juste, grâce à :

Sortie au branchement :

UDEV  [35370.735703] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1 (usb)
ACTION=add
BUSNUM=002
DEVICE=/proc/bus/usb/002/007
DEVLINKS=/dev/libmtp-2-1
DEVNAME=/dev/bus/usb/002/007
DEVNUM=007
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-1
DEVTYPE=usb_device
ID_BUS=usb
ID_FOR_SEAT=usb-pci-0000_00_1d_7-usb-0_1
ID_MEDIA_PLAYER=1
ID_MODEL=Nexus_7
ID_MODEL_ENC=Nexus\x207
ID_MODEL_ID=4e41
ID_MTP_DEVICE=1
ID_PATH=pci-0000:00:1d.7-usb-0:1
ID_PATH_TAG=pci-0000_00_1d_7-usb-0_1
ID_REVISION=9999
ID_SERIAL=asus_Nexus_7_015d2856b8080814
ID_SERIAL_SHORT=015d2856b8080814
ID_USB_INTERFACES=:ffff00:
ID_VENDOR=asus
ID_VENDOR_ENC=asus
ID_VENDOR_FROM_DATABASE=Google Inc.
ID_VENDOR_ID=18d1
MAJOR=189
MINOR=134
PRODUCT=18d1/4e41/9999
SEQNUM=4235
SUBSYSTEM=usb
TAGS=:seat:uaccess:
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=35370713052

UDEV  [35370.756223] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0 (usb)
ACTION=add
DEVICE=/proc/bus/usb/002/007
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0
DEVTYPE=usb_interface
ID_VENDOR_FROM_DATABASE=Google Inc.
INTERFACE=255/255/0
MODALIAS=usb:v18D1p4E41d9999dc00dsc00dp00icFFiscFFip00
PRODUCT=18d1/4e41/9999
SEQNUM=4236
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=35370751127

Sortie au débranchement :

UDEV  [35425.902489] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0 (usb)
ACTION=remove
DEVICE=/proc/bus/usb/002/008
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0
DEVTYPE=usb_interface
ID_VENDOR_FROM_DATABASE=Google Inc.
INTERFACE=255/255/0
MODALIAS=usb:v18D1p4E41d9999dc00dsc00dp00icFFiscFFip00
PRODUCT=18d1/4e41/9999
SEQNUM=4245
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=35424610497

UDEV  [35425.913827] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1 (usb)
ACTION=remove
BUSNUM=002
DEVICE=/proc/bus/usb/002/008
DEVLINKS=/dev/libmtp-2-1
DEVNAME=/dev/bus/usb/002/008
DEVNUM=008
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-1
DEVTYPE=usb_device
ID_BUS=usb
ID_FOR_SEAT=usb-pci-0000_00_1d_7-usb-0_1
ID_MEDIA_PLAYER=1
ID_MODEL=Nexus_7
ID_MODEL_ENC=Nexus\x207
ID_MODEL_ID=4e41
ID_MTP_DEVICE=1
ID_PATH=pci-0000:00:1d.7-usb-0:1
ID_PATH_TAG=pci-0000_00_1d_7-usb-0_1
ID_REVISION=9999
ID_SERIAL=asus_Nexus_7_015d2856b8080814
ID_SERIAL_SHORT=015d2856b8080814
ID_USB_INTERFACES=:ffff00:
ID_VENDOR=asus
ID_VENDOR_ENC=asus
ID_VENDOR_FROM_DATABASE=Google Inc.
ID_VENDOR_ID=18d1
MAJOR=189
MINOR=135
PRODUCT=18d1/4e41/9999
SEQNUM=4246
SUBSYSTEM=usb
TAGS=:seat:uaccess:
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=35424576592

Où on vois que les variables correspondent à des règles présentent dans le fichier 99-android.rules que j’ai créé dans le dossier /etc/udev/rules.d/
(les autres sont là dans le cas où je retrograde la version d’android, ou si j’active le debug usb, ou encore si je la branche en recovery etc…)

J’ai bien entendu redémarrer le service par :

J’ai même rebooté le pc histoire d’être sûr.

Quelqu’un aurait-il une idée ?

Personne n’a joué avec les règles udev ?

Bon j’ai avancé, tout fonctionne parfaitement.

En gros :
modif du /lib/udev/rules.d/91-permissions.rules
remplacer :

usbfs-like devices

SUBSYSTEM==“usb”, ENV{DEVTYPE}==“usb_device”,
MODE=“0664”

par

usbfs-like devices

SUBSYSTEM==“usb”, ENV{DEVTYPE}==“usb_device”,
MODE=“0666”

et modif du fstab :
remplacer :

DeviceFs(Nexus\0407) /media/Nexus7 fuse.DeviceFs(Nexus\0407) allow_other,rw,user,noauto 0 0

par

DeviceFs(Nexus\0407) /media/Nexus7 fuse.DeviceFs(Nexus\0407) allow_other,rw,users,noauto 0 0

Pour que le bouton eject fonctionne

Je suis prêt à faire un tuto détaillé, mais vu que ça n’a pas l’air d’interesser grand monde (au vu du nombre de réponse), je ne détaille pas pour le moment.

Si le tuto interesse -> MP
Si quelqu’un veut de l’aide -> MP

Voilà pour ma nexus 7

Je vais maintenant faire la même chose pour les tel de la maison : Xperia S et Xperia P

Merci pour le retour

Moi qui songe justement ces jours-ci à me procurer cette tablette, ces infos pourront m’être très utiles le cas échéant. Sinon, je suis sûr que ce fil servira à d’autres vu la popularité de la Nexus 7.

quote=“eliohann”

Je suis prêt à faire un tuto détaillé, mais vu que ça n’a pas l’air d’interesser grand monde (au vu du nombre de réponse), je ne détaille pas pour le moment.

Si le tuto interesse -> MP
Si quelqu’un veut de l’aide -> MP
(…)[/quote]

Ehlo, c’est là où tu te trompes.

Tu pars, certainement (?!), du prédicat où parce que toi, tu as une tablette, de telle marque et tel modèle, et que tu as un problème de connexion avec telle distrib, que forcément on est :
-1- capable de te répondre
-2- disposé à te répondre immédiatement (?!)

Quoiqu’il en soit, même si ta démarche est vraiment intéressante, la manière dont tu t’y prends, est légèrement “agressive”, parce que culpabilisante ; et, l’est vraiment pour rien.

Ensuite, surtout et principalement, ta démarche est d’autant intéressante, que tu poses un problème, et que tu trouves une réponse ; les deux, tu les publie ici, c’est très bien. Mais au lieu de signifier ‘MP’, utilises ton énergie positive, pour continuer dans la lancée, à aider ici sur le forum, et même mieux à créer un article efficace sur notre wiki.

Voili, voilou. En espérant ne pas te blesser … et continue de progresser :wink:

Bon bon … pe que bcp sont interressé mais n’avait pas de solutions … je m’excuse si j’ai pu paraitre agressif, ce n’était nullement mon intention.

Je vais faire un tuto détaillé dès que je peux et vous le soumettrez … le tuto pourra fonctionner avec n’importe quel appareil utilisant le protocole mtp :wink:

So much!