novi's page

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のファイル転送には使われいるようです。)

 

実際に公式のテザリング時のパケットをモニタリングしてみると、データそのものは流れていないようなので、データの送受信には別のソケットか何かが使われているんでしょう。

 

 

 

この記事のトラックバックURL


トラックバック / ピングバック 0

コメントをお書きください

0 コメント

  • loading