余っているAndroidスマホをオシロにしよう!
スマホでこんなUSB接続をしたい.ただ情報が少ない.
Linux(host) ----> スマホ(device)
世間の主流は、OTG接続USBを利用してスマホをhostにするようで、こちらの情報は多い.
AndroidではUSB機器をhostであろうがdeviceであろうがAccessoryと呼ぶらしい.
Accessoryを開発するライブラリとして、AOA(Android open Accessory)が提供されているが、AOAの情報は少ない.AOAの情報が少ない理由は古いから.2011年ごろにgoogleがプロモートしていた.ADKという開発kitも販売されていて、なんと今でも秋月で売られている.八潮店に在庫が1つ残っているそうだ.
オリジナル情報はAOA kitのページなのだろう.まだあまり読んでない.
AOAはUSB hostにもUSB deviceにもどちらにも対応しているのかどうかは不明.2011年だとスマホにOTGが搭載され普及するよりも微妙に前なので、AOAはUSB hostにはなれない可能性がありそうに思ってる.
sample codeの情報で判り易いのはこちら.
2011年の記事なのでとても古い.
同ページによるとAOAの接続はなかなか厄介らしい.
USB deviceのプラグインプレイは基本的にVID/PIDで行われる.(例外もある)
ところがAndroid Accessoryの場合は2段階を要するみたいなんだ.
第1段階
スマホの最初の顔はデバッグモードである.例えばVID/PID=18D1/4EE7
ホストPCは、VID/PIDでスマホを検出し、処理を始める.
ホストPCは、スマホに対してAOA対応機かどうかを問い合わせる.
AOA対応機だったなら、ホストはスマホへAccessoryの顔で再起動せよと命じる.
第2段階
スマホは別のVID/PID=18D1/2D00または18D1/2D01に化けて再起動し、改めてUSBに接続する.
ホストPCは、スマホにmanufacture="xxxx"、product="yyyy"ですか?と問いかける.
スマホは"xxxx""yyyy"で待ち受けているので門戸を開く.
以上でhost PCとAccessoryスマホが接続開通する.以降はUSB通信ができる.細かいところに誤解はあるだろうが、ざっとこのような経緯を辿るみたい.かったるい.
#PID=2D00のところを補足.
スマホが最初から18D1/2D00ならいいじゃないかと一瞬思うのだが、素の状態のスマホは2D00には成れないのだろう.
PIDは全部でこれだけある.(Android8以降はオーディオ機能が無くなったらしい)
2D00 一般用途、バルクEPを2本持つ
2D01 一般用途+debug用
2D02 オーディオ
2D03 オーディオ+debug
2D04 一般用途+オーディオ
2D05 一般用途+オーディオ+debug
かしこ
0 件のコメント:
コメントを投稿