Archive for the AOA Category

Note: Android Open Accessory protocol

Posted in android, AOA, USB with tags , , on 2014 年 06 月 14 日 by Kun-Yi

沒有深入瞭解AOA以前, 一直以為是 Android Device(Phone ot Tablet)當成 USB host 端, 然後 Accessory 當 client 畢竟 Accessories 就是給我 client 的聯想, 但是事情不是我這笨人想的那麼簡單, Google 反過來設計 由 Accessories 當作 Host 當 Android device attached 上Accessories 時, 他會透過 AOA 的 protocol 中的 GetProtocol 去確認是否是一個Android powered device. 最早的 AOA 只有 Accessory + adb 模式, 到了 AOA 2.0 (Google I/O 發表 ADK2012) 則多了 Audio, 然後除了透過USB 也可以透過特定的Bluetooth profile 支援

不過已經過去 將近2年, 市場上好像還是沒有受到消費者青睞, 我猜想有幾個原因,

  • 因為各個Device 外型都不同, 不容易設計特定的Dock 吻合多數Android device.
  • 沒有真的開發出Killer app 需要配合的device.
  • Accessory 開發有一定困難, 開發Accessory 的公司很多都很小型, 要他們弄個 USB Host/Bluetooh 方案, 個人覺得還蠻困難的!

不過因為目前工作原因, 覺得有其需要了解, 也利用了 libusb 寫了一個 AOA init 的程式, 可以用來騙 Android device 進入Accessory mode 而且是騙Device 這是一個ADK2012, 所以如果Device 有裝ADK2012 app會被launch, 但是會停在畫面很久. 因為只做到 init stage 還沒完成後續protocol communication 處理!

source code 在 https://github.com/KunYi/pcaoa

PS: Code default 是針對 Samsung Note2 GT-N7100 可以簡單修改 程式碼內的定義針對其他不同的Device

目前改成支援偵測 GT-N7100, HongMi, Blaze (因為我手上就只有這幾台機器, 是可以改成不管VID:PID直接用getProtocol 輪詢, 但是不是很想這樣搞), 優先權依排序順序, 下一步將補齊 protocol process 再來實作 linux audio play, 這樣就完整了

廣告