・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というのを見つけたのであった(続く)