問題
最近筆者在研究要怎麼使用Android消費型平板上的micro USB與Arduino或其他裝置透過UART進行溝通。但遇到一個非常麻煩的問題: 唯一的micro USB已經被UART轉板佔據住,沒辦法透過USB去抓debug訊息.........為了降低後續開發的痛苦,筆者試著找看看有沒有其他方式可以抓到debug訊息
Fig 1. Nexus 7 + USB OTG線 + USB to UART轉板
解決方案
參考Android Developers網頁可以發現Android的設計上有Wireless debug[1]的方案,只需透過adb工具即可開啟Wi-Fi debug功能,詳細說明如下
環境
- Android裝置: Nexus 7 2013 + Android 6.0.1
- 電腦: Macbook + OSX 10.11.4
- adb 1.0.32
步驟
- 使用USB線連結Android裝置與電腦
- 確認USB偵錯有開啟
- 將Android裝置連線到Wi-Fi的AP上,並找到Android裝置的IP
- 使用adb命令開啟Wi-Fi debug功能
- 拔掉USB連接線
- 在電腦端下連線指令
- 接著到Android Studio上看結果
- 最後要收工的時候記得要關閉Wi-Fi debug功能
Fig 2. 開啟USB偵錯
方法1: 由Android裝置的Wi-Fi設定找到目前IP位置,但並不是所有裝置都可以直接看到IP,例如筆者的Nexus 7就是不能透過此方法看到IP的機器之一.......
Fig 3. 透過Wi-Fi設定找尋IP位置,筆者的Nexus 7不適用QQ.....
方法2: 透過adb指令找到Android裝置的IP位置
# 對Android裝置下ifconfig命令
# adb shell: 透過adb對Android裝置下指令
# ifconfig: 列出所有網卡的資訊
shiun@test:~$ adb shell ifconfig
Fig 4. 透過adb指令找到IP位置為192.168.1.195
# 開啟Wi-Fi debug功能,並設定連線port 5555
shiun@test:~$ adb tcpip 5555
restarting in TCP mode port: 5555
# 連線至Android裝置
shiun@test:~$ adb connect 192.168.1.195
connected to 192.168.1.195:5555
# 關閉Wi-Fi debug功能
shiun@test:~$ adb usb
restarting in USB mode
補充
若讀者的Android裝置為已root裝置(adb shell進入後直接是root身份的開發板也行),則可考慮直接安裝WiFi ADB - Debug Over Air這套app即可
沒有留言:
張貼留言