日
20
9月
2009
usbmuxd
このプロセスどっかで見たことある方もいるかも知れませんが、MobileDevice(iPhoneとか)とコンピュータをやりとりしているところです。
詳細はdevチームのWikiにあります。
- USB protocol
- usbmuxd protocol
- lockdownd protocol
- iTunesHelper?
- AFC?
上から、低レベル→高レベルAPIです。
USBプロトコルがUSBエンドポイント同士のバルク転送、usbmuxdがこれ。
lockdownとiTunesHelperは謎。でも、多分大事。
AFCがデバイスのファイルアクセス。
(iPhoneから音楽を取り出すアプリなんかはこれを使用)
usbmuxdはlaunchdで立ち上がるので、ころしてから、(これをしないとlaunchdがkillを検知してusbmuxdを再起動してしまいます。)
$ usbmuxd -debug 10
などという引数を付けて自分で実行すると、ログが見れるようです。
起動すると、
/var/run/usbmuxd
というUNIXドメインのソケットが作成されるので、ユーザのアプリから読み書きできます。
しかしながら、3.0で大幅に変わってしまったので、もはやこの情報は古いと思います。
iPhoneTunnelが使えなくなったのもそのためです。
今までは/var/run/usbmuxdにデータが流れており、そのデータをフックして、
デバイス同士のTCP通信をしていましたが、なぜか3.0からはハンドシェイクのみになっています。
(追加:iTunesとXCodeのファイル転送には使われいるようです。)
実際に公式のテザリング時のパケットをモニタリングしてみると、データそのものは流れていないようなので、データの送受信には別のソケットか何かが使われているんでしょう。
novi's page



