Vraag MTP-apparaten laten werken met Ubuntu?


Sinds Ubuntu 13.04 opslag toegang tot externe apparaten via MTP hoort te werk uit de doos via een GVFS-MTP-module.

Terwijl deze vraag gaat over de Galaxy Nexus, andere Android-apparaten, evenals Windows-telefoons en MTP-geactiveerde mediaspelers worden ook ondersteund.

Voor probleemoplossen zien deze anwser.


Ik heb nogal wat problemen om bestandsoverdrachten via MTP met de Galaxy Nexus te laten werken. Ik gebruik Kubuntu 11.10 64-bit, en dit is wat ik heb gedaan en de resultaten die ik krijg:

  1. Regel toegevoegd voor apparaat in /etc/udev/rules.d/51-android.rules. De regel is de volgende en werkt voor adb:

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
    
  2. hernieuwd udev (en computer om er zeker van te zijn).

Adb werkt, en alle methoden om via MTP vanaf het apparaat te lezen, lijken te werken (ik heb geprobeerd met mtpfs, gmtp te mounten en het pakket met mtp-tools rechtstreeks te gebruiken). Wanneer ik echter naar het apparaat probeer te schrijven, werkt niets dat ik heb geprobeerd.

Als een voorbeeld, hardlopen mtp-newfolder test_dir 0 0 geeft de volgende uitvoer:

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!

Als ik ren mtp-folders na een mislukte mtp-nieuwe map zonder het apparaat opnieuw aan te sluiten, krijg ik de volgende uitvoer:

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.

Vergezeld door het volgende 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

Heeft iemand enig idee over wat te doen?

BEWERK:

Ik heb ook de PTP-modus geprobeerd. Nogmaals, lezen werkt goed, maar ik kan niets schrijven op het apparaat.


67
2017-12-14 09:01


oorsprong


Ik denk niet dat het Samsung is ... en ik denk dat het Android is. Mijn Honeycomb-apparaat is exact dezelfde manier waarop je alleen MTP moet gebruiken. Ik denk dat dit is hoe alle 2.3 Android-apparaten zullen zijn.


antwoorden:


Sinds Ubuntu 13.04 werkt de geheugentoegang tot externe apparaten via MTP uit de doos via een GVFS-MTP-module.

Gerelateerde vraag: Zijn er plannen om de mtp-ondersteuning voor toekomstige Ubuntu-releases te verbeteren?

Zie voor het oplossen van problemen dit antwoord.


Voor mij was het een probleem om niet het laatste te hebben libmtp bestanden op mijn systeem. Dus ik heb het probleem opgelost en gemaakt dit artikel om anderen te helpen.

Samenvatting van de link: Er was een fout in de libmtp gebundeld met oudere Ubuntu-releases. Deze bug was al opgelost in de nieuwste bron van libmtp.


37
2017-12-18 10:22



Het probleem lijkt te zijn opgelost in pakketten voor Ubuntu 12.04, dus die kunnen worden gebruikt als je dapper genoeg bent om het te doen. Ik heb ze gepakt launchpad.net/ubuntu/+source/libmtp/1.1.1-1 en creëerde de pakketten voor systeem (en hetzelfde voor gmtp) - Tatu Lahtela
@Shannon. Bedankt. Dit is de beste oplossing. Ik wou dat ik het eerst had gevonden. - MountainX
ritmebox bevriest nog steeds en geeft fouten (LIBMTP_Send_Representative_Sample (): kon objectinformatie niet krijgen.) bij het proberen toegang te krijgen tot de nexus, en nautilus geeft: Kon Galaxy Nexus niet aankoppelen; Fout bij het initialiseren van de camera: -60: Kon het apparaat niet vergrendelen. Poo. - waspinator
Het zou leuk zijn om de instructies bij te werken om de laatste mtp te krijgen, niet 1.1.1 - Kostiantyn Rybnikov


Heb je geprobeerd Bilal Akhtar's suggestie op omgubuntu?

Je Android-telefoon of -tablet verbinden met Ubuntu met MTPFS

  1. Opstelling

    Installeer eerst de benodigde hulpmiddelen met sudo apt-get install mtp-tools mtpfs

    Sluit uw Galaxy Nexus aan op uw computer. Open de meldingenlade op uw telefoon en klik op "USB-verbindingstype". Zorg ervoor dat MTP is geselecteerd.

    image showing Android USB connection settings

    Voer vervolgens deze opdrachten uit:

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

    Je krijgt een uitvoer zoals deze: enter image description here

    Voer nu deze opdrachten uit:

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

    Een Gedit-venster zou zich moeten openen. Typ deze tekst erin, alles in een enkele lijn:

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

    Vervangen VENDORID met de idVendor je had eerder genoteerd. Vervang op dezelfde manier PRODUCTID met de idProduct je had genoteerd. In mijn geval waren ze dat wel 04e8 en 685c respectievelijk, maar ze kunnen voor jou anders zijn geweest.

    Sla het bestand op en sluit het. Dan, Loskoppelen uw telefoon en voer deze opdrachten uit:

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

    $USERis een standaard shell-variabele en moet de gebruiker zijn die u wilt toevoegen (meestal uzelf). Voer nu deze opdracht uit:

    gksu gedit /etc/fuse.conf
    

    Verwijder in het venster Gedit de # aan het begin van de laatste regel (degene die begint met #user_allow_other) soortgelijk:

    enter image description here

    Je bent bijna klaar! Start nu uw computer opnieuw op en voer dan de volgende drie opdrachten uit:

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

    Verbind je telefoon, zorg dat je telefoon MTP gebruikt en start android-connect.

    Voila! Je kunt nu met je Nautilus door de inhoud van je Android-telefoon bladeren. Vouw gewoon de bestandsmanager aan en klik vervolgens in de zijbalk op GalaxyNexus om door de inhoud van uw telefoon te bladeren, net zoals u zou doen met een USB-stick. U kunt ook bestanden toevoegen, verwijderen en wijzigen, net als bij een normaal bestandssysteem.

    screenshot of nautilus displaying phone contents

    Om veilig te verwijderen van de telefoon, gewoon uitvoeren android-disconnect.

  3. Conclusie

    Vanaf nu moet je gewoon rennen android-connect om je telefoon te bevestigen en dan android-disconnect om uw telefoon veilig te verwijderen. Al het andere moet automatisch worden afgehandeld. Ik heb op veel manieren geprobeerd om de mount en unmount automatisch te laten plaatsvinden via kabelverbinding, maar dit was de beste oplossing die ik kon bedenken.

    Deze twee bevelen vereist geen root-rechten rennen. Alle gebruikers die lid zijn van de gebruikersgroep van de zekering, moeten deze opdrachten zonder roottoegang kunnen uitvoeren.

    Dat is het! U hebt uw Ice Cream Sandwich-telefoon met succes verbonden met uw Ubuntu-computer. Het proces kan lang zijn voor een nieuweling, maar ik weet zeker dat er iemand langs zal komen om een ​​GUI te maken voor dit alles, zodat alles soepel verloopt. :)


21
2017-12-17 18:13



Ja, heb al de meeste manieren geprobeerd om de mtpfs-tools te gebruiken. Zoals Shannon ontdekte, was het blijkbaar een fout in libmtp. - Leo
Het werkt, maar ik heb een paar vragen. 1. Wat doet die udev-configuratie, waarom werkt het niet zonder dit? 2. Door welke magie weet het welk apparaat moet worden gemount wanneer je dat doet mtpfs, of ondersteunt het slechts één aangesloten apparaat tegelijkertijd? - Bart van Heukelom
Ook bij het kopiëren van een groot bestand (met Nautilus) lijkt het erop dat het erg snel (50MB / s) kopieert, maar gedurende die tijd wordt er niets gekopieerd. Alleen wanneer de voortgangsbalk 100% bereikt, start de echte kopie (en de interface blijft hangen). Misschien kan een soort bufferoptie worden uitgeschakeld? - Bart van Heukelom
Helaas weet ik niet welke antwoorden je wilt. Het spijt me. - desgua
Heeft dit allemaal gedaan, maar dit bericht gekregen bij het proberen om android-connect te maken: fusermount: niet geopend /etc/fuse.conf: Toestemming geweigerd fusermount: optie allow_other alleen toegestaan ​​als 'user_allow_other' is ingesteld in /etc/fuse.conf zelfs hoewel ik /etc/fuse.conf heb bewerkt zoals is aangegeven. - Dmitry Shvedov


Apparaten verbinden via MTP met GVFS

Sinds Ubuntu 13.04 werkt de opslagtoegang tot MTP-geschikte apparaten uit de doos via a GVFS backend. Neem eens een kijkje Zijn er plannen om de mtp-ondersteuning voor toekomstige Ubuntu-releases te verbeteren? voor installatie-instructies vóór 13.04.

Deze oplossing zou moeten werken voor alle Android-apparaten het bieden van MTP-functionaliteit en waarschijnlijk alle niet-Android-apparaten met MTP-functionaliteit zoals Windows-telefoons en Draagbare mediaspelers.

Wees niet in de war

Er is wat verwarring geweest, laten we proberen dingen op te lossen:

  • U niet doen moet alles doen dat uw garantie ongeldig kan maken!

    • U hoeft uw apparaat niet te rooten.
    • U hoeft de bootloader niet te ontgrendelen. (Je kunt instructies voor Android haar vindene.)

    Ontgrendelen verwijst in dit antwoord alleen naar het vergrendelde scherm van het besturingssysteem.

  • U hoeft ontwikkelaarstoegang tot uw apparaat zoals ADB, fastboot of iets dergelijks niet te configureren via bepaalde udev-regels. (In hoofdstuk vindt u instructies voor Android USB-toegang configureren haare of haare.)

  • Voor zover ik weet, hebt u ook geen ZEKERHEID of opties voor ZEKERING nodig.

Problemen oplossen

  1. Ik kan geen bestanden op het apparaat zetten.

    Je apparaat moet dat zijn ontgrendeld voor toegang tot de opslag van het apparaat met Ubuntu via MTP.

    showing device in nautilus in locked and unlocked state

  2. Ik krijg een foutmelding dat het apparaat niet kan worden gekoppeld.

    Als u de onderstaande foutmelding krijgt, probeert u het apparaat opnieuw te pluggen een keer.

    error message that might pop up when connecting

    Als het foutbericht opnieuw verschijnt, opent u een nieuw nautilusvenster vanuit het opstartprogramma (bij voorkeur door op het pictogram van het apparaat te klikken) en sluit u waarschijnlijk het huidige nautilusvenster. Mogelijk gerelateerd: Hoe een udev-regels maken om een ​​Android-apparaat uit te schakelen?

  3. Controleer of er udev-regels voor uw apparaat zijn

    Open een terminal en typ lsusb. Zoek uw apparaat in de uitvoer en noteer de ID (bijv. 0fce:01b1). Het eerste deel is de leveranciers-ID het laatste deel de product-ID.

    Open het bijbehorende mtp udev-regelsbestand met nano /lib/udev/rules.d/69-libmtp.rules en zoek naar uw product-ID (gebruik Ctrl+w). Als u het niet kunt vinden, moet u een aangepast item maken /etc/udev/rules.d/69-libmtp.rules volgens het patroon hieronder en reboot.

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

    Je zou moeten overwegen een bug indienen tegen de libmtp-pakket (preciezer libmtp-common) om uw apparaat in toekomstige versies te laten opnemen, als dit voor u werkte.

  4. Ik kan nog steeds geen verbinding maken

    Uw apparaat wordt niet ondersteund door het onderliggende apparaat libmtp of je zou hetzelfde probleem kunnen ervaren als ik met mijn Lumia 620, volg de oplossing (stappen om te reproduceren) die ik heb gepost in LP # 1247572: Nokia Lumia 620 (WP8) kan niet betrouwbaar worden gemount via gvfs-mtp in nautilus. (Het apparaat werkt hier nog steeds niet foutloos, maar gebruikt mtp-detect helpt.)

    Je moet de libmtp bug tracker voor uw apparaat en volg de instructies voor nieuwe apparaten de projectpagina om een ​​foutenrapport te openen.

  5. De bug-tracker vermeldt mijn apparaat als ondersteund, maar het werkt nog steeds niet

    In sommige gevallen is een bugrapport over uw apparaat mogelijk al opgeslagen en opgelost in een recentere libmtp-release dan wat uw distributie levert (bijv .: Motorola Moto G). Als dat het geval is, moet u ofwel wachten totdat de officiële repositories zijn bijgewerkt of op zoek gaan naar een bijgewerkte PPA.

    Een bijgewerkte lijst van alle libmtp-versies beschikbaar via de officiële Ubuntu-softwarekanalen en privé-PPA's kan worden gevonden hier (zorg ervoor dat u uitbreidt Andere versies van 'libmtp' in niet-vertrouwde archieven). Vanaf 2014/02/13 deze PPA door Matthieu Baerts biedt het nieuwste libmtp-pakket beschikbaar voor Ubuntu.

    Waarschuwing: deze PPA bevat een aantal verschillende en mogelijk onstabiele pakketten. Ik zou adviseren om het aan uw systeem toe te voegen. In plaats daarvan kunt u de libmtp-pakketten afzonderlijk downloaden en handmatig op uw systeem installeren.

    Maak uzelf vertrouwd met PPA's en hun risico's voordat je verder gaat. Lees ook de onderstaande paragraaf over het herstellen van uw originele pakketten voordat u doorgaat met de volgende stappen:

    1. Ga naar de pakket detailpagina van de PPA en breid de libmtp-invoer uit
    2. Download de volgende pakketten: libmtp-common, libmtp-runtime, libmtp9, mtp-tools. Zorg ervoor dat u de juiste architectuur voor uw systeem kiest (dit zal over het algemeen zo zijn amd64).

      Hier zijn de pakketlinks vanaf 2014/02/13: libmtp-common, libmtp-runtime, libmtp9, MTP-gereedschappen

    3. Ga door met handmatig de bijgewerkte pakketten met dpkg te installeren (wijzigen $HOME/Downloads naar uw downloadmap en zorg ervoor dat er geen andere deb-bestanden aanwezig zijn:

      cd "$HOME/Downloads"
      sudo dpkg -i *.deb
      
    4. Nadat alles is geïnstalleerd, start u uw computer opnieuw op, ontgrendelt u uw Android-apparaat, sluit u het aan via USB en moet het worden weergegeven in uw bestandsbeheer.

    Dit werkte prima voor mij (@Glutanimate) met mijn Motorola Moto G. Omdat ik Ubuntu 12.04 LTS draaide moest ik eerst een bijgewerkte versie van gnome-gvfs. Alsjeblieft zie installatie-instructies vóór 13.04 bovenaan voor meer informatie.

    Om de wijzigingen ongedaan te maken als er iets misgaat of als het apparaat nog steeds niet wordt herkend, moet u de originele pakketten handmatig installeren. Ga naar de libmtp bronoverzicht en vind je Ubuntu-release. Vouw het betreffende item uit en ga verder met het downloaden van de pakketten, net zoals eerder in stap 2. Ga door met de installatie zoals beschreven in stap 3 en start uw systeem opnieuw op. Alles zou nu weer normaal moeten zijn.


19
2018-06-14 23:04



Werkte perfect voor mij ... Bedankt! - Emmanuel Okeke
+1 voor 'Do not be confused' Werkt echter niet voor mijn Galaxy S3 mini :( - hugo der hungrige
Werkte voor mijn Samsung Galaxy-tablet met Android 4.1.2, maar ik kan de bestanden onderweg niet bewerken. Heb jij daar ook een oplossing voor? - Vesnog
"Sommige handleidingen stellen voor om udev-regels toe te voegen aan een bestand met de naam 51-android.rules. Deze zijn niet voor MTP, ..."  Je bent alle geloofwaardigheid kwijtgeraakt toen je dat zei. De regels in udev / rules.d / zijn volledig flexibel. 51-android-regels zijn voor hen een perfect geschikte plaats. Je kunt net zo goed de regel in 52-telefoonregels zetten - Auspex
@Auspex Ik begrijp niet wat u hier probeert te bereiken. Ik herhaal: hoe u uw bestanden beheert /etc is aan jou. /lib/udev/rules.d/69-libmtp.rules is wat de pakketbeheerders koos en ik stel voor om een ​​fout in te dienen tegen dat pakket (ik heb mijn antwoord bijgewerkt) voor de gebruikers die dit probleem tegenkomen. Als je daar nog steeds een probleem mee hebt, praat dan met de beheerders of plaats je eigen antwoord. Ik ben nu buigen over dit gesprek met jou over dit onderwerp. - LiveWireBT


Alle programma's gebaseerd op libmtp lijken nog steeds problemen te hebben met de Galaxy Nexus (vanaf libmtp 1.1.3). Programma's gebaseerd op gphoto2 werk voor mij.

Persoonlijk gebruik ik gphotofs, beschikbaar in een pakket met dezelfde naam.

Gebruik gphotofs ~/mymountpoint om te monteren, dan fusermount -u ~/mymountpoint ontkoppelen als je klaar bent.


5
2017-07-07 13:28



Zojuist een upgrade naar 12.04 uitgevoerd en het lijkt erop dat libmtp 1.1.3 niet correct werkt zoals u zei. Zal dit een beetje meer moeten onderzoeken. gphotofs werkt perfect, dus bedankt voor de suggestie! - Leo
Gebruik makend van gphotofs laat me met een enkele map die leeg is. - Nathan Osman


Installeer het volgende en start het opnieuw op:

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

3
2017-10-11 11:10



En ja, dit antwoord is ook van toepassing op "Ubuntu 13.04 [en hoger; waarbij] opslagtoegang tot externe apparaten via MTP via een GVFS-MTP-module uit de doos moet werken". Omdat het misschien niet uit de doos wordt geïnstalleerd. Zelfs als je MTP-apparaat op de een of andere manier al is geautomatiseerd! (Maar u alleen-lezen toegang of andere problemen geeft.) - tanius
@tanius Ik moet zeggen dat MTP zo pijnlijk langzaam is dat ik het niet eens meer gebruik. esfile explorer heeft een ftp-server en ik gebruik gewoon curl om bestanden te uploaden naar het apparaat op mijn lokale netwerk. - mchid


Als eerste stap zou ik installeren jmtpfs (sudo apt-get install jmtpfs in terminal - Ctrl+alt+T ), maak vervolgens een map met mkdir foldername en vervolgens het apparaat koppelen met jmtpfs foldername, ga dan naar nautilus (bestanden).

Als uw apparaat niet compatibel is met de libmtp versie in ubuntu. Je moet een recente downloaden en bouwen libmtp (> 1.1.12), zoals in: Hoe kan ik de nieuwste versie van libmtp installeren?

Je zou in staat moeten zijn om de mappen ook te zien gebruiken mtp-folders in een terminal of met de grafische interface gmtp.

Eerdere stappen kunnen een fout weergeven als u ze zonder uitvoert sudo:

libusb_open() failed!: Permission denied

Om het gebruik van sudo te vermijden, moet u uw apparaat toevoegen aan de /etc/udev/rules.d/51-android.rules bestand zoals hierboven en herlaadregels of herstart.


0
2017-07-05 20:01





Gewoon een kleine tijdelijke oplossing, sluit uw op ICS gebaseerde telefoon aan met goede oude MASS STORAGE http://forum.xda-developers.com/showthread.php?t=1556367

adb install UMS1.0.apk

-1
2018-03-23 19:57



Hoewel dit voor sommige telefoons een goede oplossing is, werkt dit alleen als een telefoon een afzonderlijke sd-kaart heeft. In relatie tot de oorspronkelijke vraag zou dit niet werken met de Galaxy Nexus. - coversnail
Zelfs met een afzonderlijke sd-kaart denk ik niet dat montage als een apparaat voor massaopslag een optie is voor nieuwere versies van Android. Hoewel, "er is altijd een achterdeur ergens", dus ik zal niet zo ver gaan om te zeggen dat het niet mogelijk is. - mchid
Dat was 4 jaar geleden;) - jflaflamme