Ottenere dispositivi abilitati per MTP per lavorare con Ubuntu?

67
  

Poiché Ubuntu 13.04 l'accesso allo storage a dispositivi esterni tramite MTP si suppone che funzioni immediatamente tramite un modulo GVFS-MTP.

     

Sebbene questa domanda riguardi il Galaxy Nexus, sono supportati anche altri dispositivi Android, Telefoni Windows e lettori multimediali abilitati MTP .

     

Per risoluzione dei problemi vedi this anwser .

Sto riscontrando un certo numero di problemi nel trasferire i file su MTP con Galaxy Nexus. Sto usando Kubuntu 11.10 a 64 bit, e questo è quello che ho fatto e il risultato che ottengo:

  1. Aggiunta regola per dispositivo in /etc/udev/rules.d/51-android.rules . La regola è la seguente e funziona per adb :

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
    
  2. % riavviato% co_de (e computer solo per esserne sicuri).

Adb funziona, e tutti i metodi per leggere dal dispositivo tramite MTP sembrano funzionare (ho provato a montare con mtpfs, gmtp e usando direttamente il pacchetto mtp-tools). Tuttavia, quando provo a scrivere sul dispositivo, nulla di ciò che ho provato funziona.

Ad esempio, l'esecuzione di udev fornisce il seguente output:

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!

Se eseguo mtp-newfolder test_dir 0 0 dopo una nuova cartella mtp fallita senza ricollegare il dispositivo, ottengo il seguente output:

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.

Accompagnato da quanto segue in 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

Qualcuno ha qualche idea su cosa fare?

Modifica

Ho anche provato la modalità PTP. Ancora una volta, la lettura funziona bene, ma non riesco a scrivere nulla sul dispositivo.

    
posta Leo 14.12.2011 - 10:01

7 risposte

37

Da Ubuntu 13.04, l'accesso alla memoria di dispositivi esterni tramite MTP funziona immediatamente tramite un modulo GVFS-MTP.

Domanda correlata: Ci sono qualche piano per migliorare il supporto di mtp sulle versioni future di Ubuntu?

Per la risoluzione dei problemi, vedi questa risposta .

Per me, è stato un problema non avere gli ultimi% file% di file% sul mio sistema. Quindi ho risolto il problema e reso questo articolo su aiutare gli altri .

Riepilogo del link: c'era un bug nella libmtp in bundle con le versioni precedenti di Ubuntu. Questo bug era già stato risolto nella ultima fonte di libmtp .

    
risposta data Shannon_VanWagner 18.12.2011 - 11:22
21

Hai provato suggerimento di Bilal Akhtar a omgubuntu ?

Connessione del tuo telefono o tablet Android a Ubuntu con MTPFS

  1. Impostazioni

    Per prima cosa, installa gli strumenti necessari con sudo apt-get install mtp-tools mtpfs

    Collega il tuo Galaxy Nexus al tuo computer. Sul telefono, apri il cassetto delle notifiche e fai clic su "Tipo di connessione USB". Assicurati che sia selezionato MTP.

    Quindi, esegui questi comandi:

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

    Dovresti ottenere un risultato come questo:

    Ora esegui questi comandi:

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

    Una finestra di Gedit dovrebbe aprirsi. Digita questo testo, tutto in una singola riga :

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

    Sostituisci VENDORID con idVendor che avevi annotato prima. Allo stesso modo, sostituisci PRODUCTID con idProduct che hai annotato. Nel mio caso, erano 04e8 e 685c rispettivamente, ma potrebbero essere stati diversi per te.

    Salva e chiudi il file. Quindi, disconnetti il telefono ed esegui questi comandi:

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

    $USER è una variabile di shell predefinita e dovrebbe essere l'utente che desideri aggiungere (di solito te stesso). Ora esegui questo comando:

    gksu gedit /etc/fuse.conf
    

    Nella finestra di Gedit, rimuovi il # all'inizio dell'ultima riga (quella che inizia con #user_allow_other ) in questo modo:

    Hai quasi finito! Ora riavvia il computer, quindi esegui questi tre comandi:

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

    Collega il telefono, assicurati che il telefono stia utilizzando MTP ed esegui android-connect .

    Voila! Ora puoi navigare tra i contenuti del tuo telefono Android usando Nautilus. È sufficiente attivare il file manager, quindi nella barra laterale fare clic su GalaxyNexus per sfogliare i contenuti del telefono proprio come si farebbe con una penna USB. Puoi anche aggiungere, rimuovere e modificare i file proprio come un normale file system.

    Per rimuovere in sicurezza il telefono, esegui solo android-disconnect .

  3. Conclusione

    Da ora in poi, devi solo eseguire android-connect per montare il tuo telefono e poi android-disconnect per rimuovere in sicurezza il tuo telefono. Tutto il resto dovrebbe essere gestito automaticamente. Ho provato molti modi per far sì che il montaggio e lo smontaggio avvengano automaticamente sulla connessione via cavo, ma questa era la soluzione migliore che avrei potuto trovare.

    Questi due comandi non richiedono autorizzazioni root per l'esecuzione. Tutti gli utenti che sono membri del gruppo di utenti del fusibile dovrebbero essere in grado di eseguire questi comandi senza accesso root.

    Questo è tutto! Hai collegato correttamente il tuo telefono Ice Cream Sandwich al tuo computer Ubuntu. Il processo potrebbe essere lungo per un principiante, ma sono sicuro che qualcuno arriverà e creerà una GUI per tutto ciò in modo che tutto avvenga senza intoppi. :)

risposta data desgua 17.12.2011 - 19:13
19

Collegamento di dispositivi tramite MTP con GVFS

Dal momento che l'accesso all'archiviazione di Ubuntu 13.04 ai dispositivi MTP funziona fuori dalla scatola attraverso un backend GVFS . Si prega di dare un'occhiata a Esistono piani per migliorare il supporto di mtp sulle future versioni di Ubuntu? per istruzioni di installazione precedenti alla 13.04.

Questa soluzione dovrebbe funzionare per tutti i dispositivi Android che forniscono funzionalità MTP e probabilmente tutti i dispositivi non Android dotati di funzionalità MTP come Telefoni Windows e Lettori multimediali portatili .

Non essere confuso

C'è stata una certa confusione, proviamo a chiarire le cose:

  • Tu non devi fare nulla che possa invalidare la garanzia!

    • Non è necessario eseguire il root del dispositivo.
    • Non è necessario sbloccare il bootloader. (Puoi trovare le istruzioni per Android lei e .)

    Lo sblocco si riferisce semplicemente alla schermata di blocco del sistema operativo in questa risposta.

  • Non è necessario configurare l'accesso degli sviluppatori al tuo dispositivo come ADB, fast boot o qualcosa di simile attraverso alcune regole di udev. (Puoi trovare le istruzioni per Android nel capitolo Configurazione dell'accesso USB il suo e o lei e ).

  • Per quanto ne sappia, anche tu non hai bisogno di FUSE o configurare le opzioni relative a FUSE.

Problemi di risoluzione dei problemi

  1. Non riesco a caricare i file sul dispositivo.

    Il tuo dispositivo deve essere sbloccato per accedere alla memoria del dispositivo con Ubuntu via MTP.

  2. Ricevo un messaggio di errore che indica che il dispositivo non può essere montato.

    Se visualizzi il seguente messaggio di errore, prova a sostituire il dispositivo una volta .

    Se il messaggio di errore appare di nuovo, apri una nuova finestra di nautilus dal launcher (preferibile facendo clic sull'icona del dispositivo) e probabilmente chiudendo la finestra corrente di nautilus. Forse correlato: Come creare una regola udev per disabilitare uno dei dispositivi Android?

  3. Controlla se ci sono regole udev per il tuo dispositivo

    Apri un terminale e digita lsusb . Trova il tuo dispositivo nell'output e annota l'ID (ad esempio 0fce:01b1 ). La prima parte è l'ID del fornitore l'ultima parte dell'ID prodotto.

    Apri il file di regole mtp udev corrispondente con nano /lib/udev/rules.d/69-libmtp.rules e seach per il tuo ID prodotto (usa Ctrl + W ). Se non riesci a trovarlo, devi creare una voce personalizzata in /etc/udev/rules.d/69-libmtp.rules seguendo lo schema sottostante e riavvio .

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

    Dovresti considerare presentare un errore rispetto al pacchetto libmtp (più precisamente libmtp-common ) per includere il tuo dispositivo nelle versioni future, se questo ha funzionato per te.

  4. Non riesco ancora a connettermi

    Il tuo dispositivo non è supportato dal libmtp sottostante o potresti riscontrare lo stesso problema che ho con il mio Lumia 620, per favore segui la soluzione (passi da riprodurre) che ho postato in LP#1247572: Nokia Lumia 620 (WP8) non riesce a essere montato in modo affidabile tramite gvfs-mtp in nautilus . (Il dispositivo continua a non funzionare in modo impeccabile qui, ma l'utilizzo di mtp-detect aiuta.)

    Dovresti cercare il bug tracker libmtp per il tuo dispositivo e seguire le istruzioni per i nuovi dispositivi su la pagina del progetto per aprire una segnalazione di bug.

  5. Il bug tracker elenca il mio dispositivo come supportato ma non funzionerà ancora

    In alcuni casi, un bug report riguardante il tuo dispositivo potrebbe essere già stato archiviato e risolto in una versione libmtp più recente di quella fornita con la tua distribuzione (ad esempio: Motorola Moto G ). In tal caso, dovrai attendere che i repository ufficiali si aggiornino o cerchi un PPA aggiornato.

    Un elenco aggiornato di tutte le versioni libmtp disponibili tramite i canali software ufficiali di Ubuntu e i PPA privati ​​può essere trovato qui (assicurati di espandere Altre versioni di" libmtp "negli archivi non fidati ). A partire dal 2014/02/13 questo PPA di Matthieu Baerts offre l'ultimo pacchetto libmtp disponibile per Ubuntu.

    Avviso : questo PPA contiene una varietà di pacchetti diversi e probabilmente instabili. Vi consiglio di non aggiungerlo al vostro sistema. Invece è possibile scaricare i pacchetti libmtp separatamente e installarli manualmente sul proprio sistema.

    Per favore familiarizza con PPA e i loro rischi prima di spostarsi ulteriormente. Leggi anche il paragrafo seguente sul ripristino dei pacchetti originali prima di procedere con i seguenti passaggi:

    1. Vai alla pagina dei dettagli del pacchetto del PPA ed espandi la voce libmtp
    2. Scarica i seguenti pacchetti: libmtp-common , libmtp-runtime , libmtp9 , mtp-tools . Assicurati di scegliere l'architettura giusta per il tuo sistema (generalmente sarà amd64 ).

      Ecco i collegamenti del pacchetto dal 2014/02/13: libmtp-common , libmtp-runtime , libmtp9 , MTP-tools

    3. Procedi con l'installazione manuale dei pacchetti aggiornati con dpkg (modifica $HOME/Downloads nella tua cartella di download e assicurati che non siano presenti altri file deb:

      cd "$HOME/Downloads"
      sudo dpkg -i *.deb
      
    4. Una volta che tutto è stato installato con successo, riavvia il computer, sblocca il tuo dispositivo Android, collegalo via USB e dovrebbe apparire nel tuo file manager.

    Questo ha funzionato bene per me (@Glutanimate) con il mio Motorola Moto G. Dato che stavo usando Ubuntu 12.04 LTS, ho dovuto prima installare una versione aggiornata di gnome-gvfs . Per ulteriori informazioni, vedi istruzioni per l'installazione precedenti alla 13.04 .

    Per annullare le modifiche se qualcosa va storto o se il dispositivo non viene ancora riconosciuto, dovrai installare manualmente i pacchetti originali. Vai alla panoramica del sorgente libmtp e trova la tua versione di Ubuntu. Espandi la voce in questione e procedi con il download dei pacchetti, proprio come facevi prima nel passaggio 2. Continuare con l'installazione come descritto nel passaggio 3 e riavviare il sistema. Adesso tutto dovrebbe tornare alla normalità.

risposta data LiveWireBT 15.06.2013 - 01:04
5

Tutti i programmi basati su libmtp sembrano avere ancora problemi con il Galaxy Nexus (a partire da libmtp 1.1.3). I programmi basati su gphoto2 funzionano per me.

Personalmente sto usando gphotofs , disponibile in un pacchetto con lo stesso nome.

Usa gphotofs ~/mymountpoint per montare, poi fusermount -u ~/mymountpoint per smontare quando hai finito.

    
risposta data bseibold 07.07.2012 - 15:28
3

Installa quanto segue e riavvia:

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
    
risposta data mchid 11.10.2015 - 13:10
0

Come primo passo, installerei jmtpfs ( sudo apt-get install jmtpfs nel terminale - Ctrl + Alt + T ), quindi crea una cartella con mkdir foldername e poi monta il dispositivo con jmtpfs foldername , poi vai su nautilus (Files).

Se il tuo dispositivo non è compatibile con la versione libmtp in ubuntu. Devi scaricare e creare un recente libmtp (& gt; 1.1.12), come in: Come posso installare l'ultima versione di libmtp?

Dovresti poter vedere le cartelle anche usando mtp-folders in un terminale o con l'interfaccia grafica gmtp .

I passaggi precedenti potrebbero mostrare un errore se li esegui senza sudo :

libusb_open() failed!: Permission denied

Per evitare di utilizzare sudo, devi aggiungere il tuo dispositivo al file /etc/udev/rules.d/51-android.rules come sopra e ricaricare le regole o riavviare.

    
risposta data Ferroao 05.07.2018 - 22:01
-1

Solo un piccolo workaround, collega il tuo telefono basato su ICS con il buon vecchio MASS STORAGE link

adb install UMS1.0.apk
    
risposta data jflaflamme 23.03.2012 - 20:57

Leggi altre domande sui tag