[[diary/Kojima]]
・Nexus 7とMTP
Nexus 7に限らず,最近の高機能なメディアプレイヤーやタブレットPCは,
USB経由でPCとデータ交換する際にMTP(Media Transfer Protocol)と呼ばれるプロトコルを
使っているらしい.
一昔前の単機能のメディアプレイヤーでは,
USBで接続するとMass Storage ClassとしてHDDが接続されたように見え,
LinuxからでもVFATあたりでマウントしてやれば,
cpやmvでデータのやりとりができたのだけど,
最近の高機能なプレイヤーではやりとりするデータをより厳密にコントロールしたいような意図もあって,
MTPと呼ばれるプロトコルを使って,どこ(のディレクトリ)に,
どういう種類のデータを転送するか,を明示できるようになっているらしい.
# もともとはPTP(Picture Transfer Protocol)というデジカメ用のデータ転送プロトコルがあって,それを拡張する形でMTPになったそうな.
もともとMTPはWindows Media Playerで提案されたプロトコルだそうで,
Linuxではそれほど広く使われていないようだけど,
最近ではlibmtpというライブラリが開発されていて,
このライブラリにはmtp-detectや mtp-files,
mtp-folders というコマンドが用意されており,
これらを使えばMTP経由でデータ交換できるらしい.
$ mtp-detect
Error: Unable to open ~/.mtpz-data for reading.
libmtp version: 1.1.5
Listing raw device(s)
libusb couldn't open USB device /dev/bus/usb/010/003: Permission denied.
libusb requires write access to USB device nodes.
Device 0 (VID=18d1 and PID=4e41) is a Google Inc (for Asus) Nexus 7 (MTP).
Found 1 device(s):
Google Inc (for Asus): Nexus 7 (MTP) (18d1:4e41) @ bus 10, dev 15
Attempting to connect device(s)
ignoring libusb_claim_interface() = -6PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
Android device detected, assigning default bug flags
USB low-level info:
Interface has a kernel driver attached.
bcdUSB: 512
...
libmtp supported (playable) filetypes:
Folder
Text file
HTML file
RIFF WAVE file
ISO MPEG-1 Audio Layer 3
MPEG video stream
JPEG file
BMP bitmap file
GIF bitmap file
JFIF file
Portable Network Graphics
TIFF bitmap file
Microsoft Windows Media Audio
Ogg container format
Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
MPEG-4 Part 14 Container Format (Audio+Video Emphasis)
ISO MPEG-1 Audio Layer 2
Abstract Playlist file
XML file
Free Lossless Audio Codec (FLAC)
OK.
libmtpが提供するこれらのコマンドを使えば,
Nexus 7とデータ交換はできそうなものの,
一々コマンドラインでファイル名を指定するのも面倒なので,
なにか便利なソフトウェアがないかしらん,,
と探したら,gMTPというのを見つけたのであった(続く)
#comment