Media Transfer Protocol
Media Transfer Protocol ( MTP ) är ett tillägg till kommunikationsprotokollet Picture Transfer Protocol (PTP) som gör att mediafiler kan överföras automatiskt till och från bärbara enheter . Medan PTP utformades för att ladda ner fotografier från digitalkameror , tillåter Media Transfer Protocol överföring av musikfiler på digitala ljudspelare och mediafiler på bärbara mediaspelare , såväl som personlig information om personliga digitala assistenter . MTP är en viktig del av WMDRM 10-PD, en DRM-tjänst ( Digital Rights Management) för Windows Media- plattformen. 2011 blev det standardmetoden för att överföra filer till och från Android.
MTP är en del av ramverket "Windows Media" och är därmed nära relaterat till Windows Media Player . Versioner av operativsystemet Microsoft Windows från Windows XP SP2 stöder MTP. Windows XP kräver Windows Media Player 10 eller högre; senare Windows-versioner har inbyggt stöd. Microsoft har gjort ett MTP Porting Kit tillgängligt för äldre versioner av Windows tillbaka till Windows 98 .
USB Implementers Forums enhetsarbetsgrupp standardiserade MTP som en fullfjädrad Universal Serial Bus (USB) enhetsklass i maj 2008. Sedan dess är MTP ett officiellt tillägg till PTP och delar samma klasskod.
Översikt
Huvudsyftet med detta protokoll är att endast tillåta överföring av mediefiler och tillhörande metadata till och från bärbara enheter, en överföringsfunktion, in eller ut, åt gången. Det stöder inte operationer som öppna, redigera och ändra. En lösning är att kopiera till värdsystemet för dessa operationer och sedan kopiera tillbaka. En batteridriven mobil enhet kan rapportera sin batteriladdningsnivå via MTP.
Protokollet implementerades ursprungligen för användning över USB men utökades för användning över TCP/IP och Bluetooth . Windows Vista stöder MTP över TCP/IP. Windows 7 och Windows Vista med plattformsuppdateringen för Windows Vista stöder även MTP över Bluetooth. Värden som ansluter till en MTP-enhet kallas en MTP-initiator medan själva enheten är en MTP-svarare .
En huvudskäl till att använda MTP snarare än till exempel USB-masslagringsenhetsklassen (MSC) är att den senare fungerar på nivån för masslagringsenhetsblock, snarare än på nivån av filer, eller block i filer, i ett filsystem. Med andra ord är USB-masslagringsklassen utformad för att ge en värddator odifferentierad åtkomst till masslagring, såsom compact flash , snarare än till ett filsystem, som säkert kan delas med målenheten (förutom specifika filer som värden kanske ändrar/kommer åt). I praktiken, därför, när en USB-värddator har monterat en MSC-partition, tar den absolut kontroll över lagringen, som sedan inte säkert kan modifieras av enheten utan risk för datakorruption förrän värddatorn har brutit anslutningen. Dessutom, eftersom värddatorn har full kontroll över den anslutna lagringsenheten, finns det en risk att värddatorn kan korrumpera filsystemet, formatera om det till ett filsystem som inte stöds av USB-enheten, eller på annat sätt modifiera det på ett sådant sätt att USB-enheten inte kan förstå det helt.
MTP och PTP löser specifikt detta problem genom att göra enheten för hanterad lagring till en lokal fil snarare än en hel (möjligen mycket stor) enhet för masslagring på blocknivå. På så sätt fungerar MTP som ett transaktionsfilsystem - antingen skrivs/läs hela filen eller ingenting. Lagringsmediet påverkas inte av misslyckade överföringar.
Där enheten upprätthåller en databas/index över innehållet på disken, sparar MTP kostnaden för att skanna hela disken igen varje gång innehållet ändras.
Dessutom tillåter MTP MTP- initiatorer att identifiera de specifika kapaciteterna hos enhet(er) med avseende på filformat och funktionalitet. I synnerhet kan MTP-initiatorer behöva tillhandahålla lösenord och annan information för att låsa upp filer eller på annat sätt möjliggöra hantering av digitala rättigheter . Inget specifikt av detta slag finns i kärnstandarden men funktionerna är tillgängliga via leverantörstillägg. MTPZ, Zune-tillägget till MTP nekar specifikt åtkomst till filer tills autentiseringen har bearbetats, vilket endast är möjligt med Windows Media Player 10 eller högre.
Jämförelse med USB-masslagring
MTP:s fördelar är markerade med " (+) " medan nackdelar är markerade med " (-) ".
Filorienterat istället för blockorienterat protokoll
Genom att inte exponera filsystemet och metadataindexet har integriteten för dessa full kontroll över enheten .
- (+) Ingen risk för korruption av filsystemet om du kopplar ur enheten medan du skriver. Filöverföringar är atomära, vilket betyder att de slutförs i en enda operation, och ingen explicit avmontering av filsystemet ("säker borttagning") krävs av användaren, eftersom filsystemet fortfarande hanteras av den mobila enhetens operativsystem och en mobil enhet är batteri- powered, vilket innebär att strömmen till flashminnet inte bryts oväntat.
- Enheten kan komma åt sitt eget filsystem när den är ansluten:
- (+) Omindexering efter urkoppling kan undvikas. Även hjälpt av inkluderingen av metadata i överföringen.
- (+) Ett separat filsystem för värdexponering är onödigt. Detta undviker inflexibiliteten att avsätta en partition med fast storlek för detta filsystem.
- (+) Stöd för filsystem: Värden behöver inte stödja enhetens filsystem. Omvänt är enhetstillverkaren fri att välja ett filsystem (vanligtvis ett Linux- filsystem som inte stöds av Windows ) annat än den allmänt stödda FAT -familjen av filsystem.
- (-) Återställning: Verktyg för återställning och återställning av filsystem på datorn kan inte användas, eftersom MTP är ett abstraktionslager som inte erbjuder åtkomst på blocknivå .
- (-) Saknade tidsstämplar: Många MTP-anslutna enheter, särskilt äldre, rapporterar inte filtidsstämplar via protokollet, vilket gör att de går förlorade när filer kopieras/flyttas till eller från en dator. Vissa filformat lagrar fortfarande tidsstämplar internt, till exempel JPEG-foton med inbäddade Exif- metadata, men datum- och tidsinformationen för filer utan sådana interna metadata skulle gå förlorade.
- (-) Felplacering: Användare har rapporterat att filer ibland dyker upp på felaktiga platser som ett resultat av dålig kommunikation mellan MTP-värden (t.ex. smartphone) och klienten (t.ex. datorns filhanterare). Skulle en katalog flyttas bort från MTP-värden utan att klienten upptäcker alla filer, kan oupptäckta filer sluta raderas utan att alla filer har överförts.
- (-) Trunkering: Om en fil nyligen har skapats på smarttelefonen medan den var ansluten till datorn via MTP, kan datorns filhanterare potentiellt felrapportera filstorleken som för liten på grund av att den har laddat kataloglistan i ett ögonblick där filen var inte komplett. Att flytta filen bort från telefonen kan göra att den trunkeras (ofullständig) på målsökvägen medan den raderas från källan, eftersom filhanteraren felaktigt kan anta att filen har överförts helt medan den inte har gjort det.
Prestanda
- (-) MTP-operationer kan inte multiplexeras – alla pågående operationer måste antingen slutföras eller avbrytas innan en annan operation kan påbörjas. Till skillnad från USB-masslagring , där värdoperativsystemet är fritt att multiplexa blocköverföringar, och logiska operationer är ett framväxande fenomen, är de operationer som stöds av MTP mer grovkorniga, som att överföra hela filer. Inget protokoll är parallellt eller asynkront i sig självt (bortsett från UAS -utvidgningen av USB-masslagring, som lägger till flera kommandoköer).
- (-) Begränsat stöd för överföring av delar av filer, såsom block eller byteintervall (se § Direkt ändring och partiella överföringsfunktioner) .
- (-) Begränsat stöd för direkt ändring av filer (se § Direkt ändring och partiella överföringsfunktioner) . För att ändra en fil eller dess metadata kan hela filen behöva kopieras ut från enheten och laddas upp igen, vilket tar lång tid för en stor fil eller katalog och blockerar enheten för andra operationer under tiden. Googles MTP-implementering i Android inkluderar tillägg för att hantera denna begränsning; dessa tillägg måste dock stödjas av värdoperativsystemet.
- (-) Det går långsamt att ladda långa fillistor över kataloger med tusentals objekt. Detta kan göra att "förberedelserna" för överföring av filer från högt befolkade kataloger tar längre tid än själva filöverföringen, eftersom filhanteraren behöver generera en lista med sökvägar till filer som den är på väg att överföra, vilket kräver åtkomst till de långsamma kataloglistorna.
Transparens för MTP-omedveten programvara
(-) Windows tilldelar inte enhetsbeteckningar eller UNC -sökvägar till MTP-enheter eftersom det inte exponerar dem som virtuella filsystem . Utan enhetsbokstäver eller UNC-sökvägar kan MTP-omedveten programvara inte komma åt kataloger eller filer på dessa enheter. Användaren måste byta till en MTP-medveten applikation, eller omgås genom att använda en MTP-medveten applikation som Windows Explorer för att kopiera eller flytta filen till ett filsystem som applikationen kan komma åt.
En specifik oro är att antivirusprogram på värddatorn kanske inte känner till MTP-enheter, vilket gör dem potentiellt mindre säkra än masslagringsenheter (även om filer på MTP-enheter kopieras eller flyttas till värden före användning, MTP-omedveten antivirusprogramvara kommer att ha en chans att skanna dem). [ citat behövs ] Antivirusskanning kan också vara opraktisk på grund av att regelbunden användning av enheten blockeras.
Drivrutiner känner till en fast uppsättning enheter som stöds
(-) Trots identifierbarhet av PTP/MTP USB-enhetsklassen indikerar libmtp-dokumentation att kombinationen av leverantör och produkt-ID spelar en funktionell roll för att identifiera en MTP-enhet, även av Windows-drivrutiner. Libmtp innehåller omfattande listor över leverantörs- och produkt-ID-nummer för enheter som det stöder, tillsammans med lösningar för buggar. Denna icke-generiska metod hindrar MTP-förares framåtkompatibilitet med nya enheter.
Specifikationen känner till en fast uppsättning definierade filformat
MTP-specifikationen inkluderar en uppräkning av filformat, kallat objektformat . Användningen av denna uppräkning är för att kommunicera filformat som stöds och format för överförda filer. Förutom några okategoriserade format i början, är listan över format grupperad i kategorier av bild-, ljud-, video- och dokumentformat, där varje kategori har ett "Odefinierat" format följt av specifika format. Det finns också ett supergeneriskt "Odefinierat objekt"-format.
Jolla nämnde bristen på WebM- stöd i MTP som en anledning till att inte stödja videoformatet i deras mobila operativsystem Sailfish OS . Det är oklart om begränsningen finns i verktygen eller specen, annat än att WebM inte definieras av MTP 1.1-specifikationen. [ opålitlig källa? ]
Funktioner för direkt modifiering och partiell överföring
Dessa funktioner kan användas som mer effektiva alternativ till hela filöverföringar och återuppladdningar:
Från MTP 1.1-specifikationen:
Opcode | Operationsnamn | Förklaring |
---|---|---|
0x9805 | GetObjectPropList | Metadataöverföring |
0x9806 | SetObjectPropList | |
0x1019 | MoveObject | Byt namn på en fil eller katalog |
0x101B | GetPartialObject | Begär ett byteintervall för en fil |
Android-tillägg
Enligt go-mtpfs:
Opcode | Operationsnamn | Förklaring |
---|---|---|
0x95C1 | GetPartialObject64 | Samma som GetPartialObject , men med 64-bitars offset |
0x95C2 | SendPartialObject | Samma som GetPartialObject64 , men kopierar värd till enhet |
0x95C3 | TruncateObject | Trunkerar filen till 64 bitars längd |
0x95C4 | StartEditObject | Måste anropas innan SendPartialObject och TruncateObject används |
0x95C5 | EndEditObject | Kallas för att utföra ändringar gjorda av SendPartialObject och TruncateObject |
MTP-stöd
Windows
Anpassning i Windows
MTP stöds i Windows XP om Windows Media Player 10 eller senare versioner är installerade. Windows Vista och senare har MTP-stöd inbyggt. För äldre versioner av Windows, specifikt Windows 2000, Windows 98 och Windows Me, har Microsoft släppt MTP Porting Kit. som innehåller en MTP-enhetsdrivrutin. Vissa tillverkare, som Creative Technology , tillhandahåller även äldre MTP-drivrutiner för vissa av sina spelare; dessa består vanligtvis av MTP Porting Kit-filer med en anpassad INF-fil som beskriver deras specifika spelare. [ citat behövs ]
Support med mjukvara
Windows tilldelar inte enhetsbokstäver eller UNC -sökvägar till enheter anslutna via MTP; istället visas de bara som namngivna enheter i MTP-medvetna program som Windows Explorer . Jämfört med enheter som implementerar USB-masslagring kan sådana enheter inte nås programmatiskt med skript eller vanliga Windows-program som är beroende av enhetsbokstäver eller UNC-sökvägar. Istället måste filer manipuleras med Windows Explorer eller program med specialskrivet MTP-stöd.
Under Windows stöder MTP-kompatibla enheter en funktion som kallas Auto Sync, som låter användare konfigurera Windows Media Player för att automatiskt överföra allt kopierat eller nyinhämtat innehåll till enheter när de är anslutna – förutsatt att innehållet är kompatibelt med Windows Media Player. Automatisk synkronisering är anpassningsbar så att spelaren endast överför innehåll som uppfyller vissa kriterier (låtar med fyra stjärnor eller högre, till exempel). Ändringar som gjorts i filegenskaper (som användarbetyg och antal filuppspelningar) på en enhet kan föras tillbaka till datorn när enheten återansluts.
Kopior av filer som nås över MTP kan finnas kvar på värddatorn även efter omstart, [ citat behövs ] där de kommer att vara tillgängliga för det användarkonto som fick åtkomst till dem, såväl som alla andra användarkonton som kan läsa det användarkontots filer, inklusive eventuella administrativa användare. Windows 7:s sensorplattform stöder sensorer inbyggda i MTP-kompatibla enheter.
Filflyttningsbeteende
I implementeringen av MTP som används av Windows Explorer raderas inte filer från ett urval som flyttats från en mobil enhets lagring, kanske i syfte att frigöra utrymme, individuellt från källan efter varje fil, utan istället raderas hela urvalet kl. en gång från källan först efter att överföringen har slutförts.
Som ett resultat kommer filflyttningar som avbröts i förtid, antingen manuellt eller oväntat, inte att ha frigjort något utrymme på källenheten.
Unix-liknande system
En gratis implementering med öppen källkod av Media Transfer Protocol är tillgänglig som libmtp. Det här biblioteket innehåller produkt- och enhets-ID från många källor och används ofta i annan programvara för MTP-stöd.
Grafiskt
GNOME -program som GNOME Files (tidigare kallade Nautilus) och Archive Manager (tidigare kallade File-Roller) använder GIO -baserade GVfs för att komma åt filer på MTP-enheter. Korrekt MTP-stöd lades till GVfs i version 1.15.2 (2013-01-15) av Philip Langdale. Tidiga patchar för GVfs för att aktivera Googles direkta I/O-tillägg finns tillgängliga.
KDE-projektet utvecklar MTP KIO- slaven med en liknande integrationsnivå som GVfs.
Inte relaterat till GNOME eller KDE är den *NIX grafiska MTP-kompatibla mediaspelaren, gMTP .
Virtuella filsystem
Flera verktyg tillhandahåller ett FUSE- baserat filsystem för att montera MTP-enheter inom Unix-filsystemhierarkin, vilket gör det tillgängligt för alla program som fungerar på filer och kataloger. Exempel inkluderar mtpfs , jMTPFS , go-mtpfs och simple-mtpfs .
Mac OS
macOS har inbyggt stöd för MTP (genom applikationen "Digitala bilder" [ citat behövs ] ) men inga (tredje parts) drivrutiner för att montera MTP-enheter som enheter. Det finns även flera filöverföringsprogram från tredje part för Mac OS X v10.5 och senare:
- Android File Transfer är en enkel MTP-klient.
- Android filöverföring för Linux (och Mac OS X), öppen källkod, licens GPL version 3, grafiskt användargränssnitt, kommandoradsverktyg, FUSE-omslag - montera din enhet,
- XNJB erbjuder också synkronisering av iTunes-spellistor.
- SyncMate Expert påstår sig även stödja MTP förutom andra synkroniseringsuppgifter. Supporten kan inte testas i gratisversionen.
- Commander One PRO Pack - filhanterare som gör det möjligt att montera MTP-enheter på Mac och hantera deras innehåll.
Andra operativsystem
Senare versioner av flera operativsystem, inklusive AmigaOS , Android , AROS , MorphOS och Symbian OS stöder MTP, ibland med ytterligare drivrutiner eller programvara.
En nackdel med MTP-enheter på Android jämfört med USB-masslagring är att även om filtidsstämplar bevaras när du kopierar filer från Android-enheten till ens dator, när du kopierar åt andra hållet, ersätts filändringens tidsstämplar med den tidpunkt då kopian var Gjort.
Andra tillverkare
Företag, inklusive Creative Technology, Intel , iriver och Samsung Electronics , som tillverkar enheter baserade på Microsofts " Portable Media Center- specifikation", har antagit MTP i stor utsträckning. Stödutrustning introducerades vid 2004 Consumer Electronics Show .
Efter en inledande period av osäkra reaktioner antog flera stora mediaspelareproducenter som Creative Technology och iriver MTP-protokollet istället för sina egna protokoll.
Många enheter och ljudprogram stöder MTP.
Alternativ
Se även
- Windows Media
- IEEE 1394 (firewire)
externa länkar
- MTP 1.1-specifikation
- Artikel om Canons adoption på Wayback Machine (arkiverad 20 november 2008)
- MTP Vad, varför, hur. (Android-funktion)
- ArchLinux Wiki: Media Transfer Protocol