上篇文章是講如何打造具備 cellular 功能的embedded device.
這篇是分享如何讓 embedded device 透過手機上網. 主要是透過 USB tethering 的技術來達到此目的
USB tethering 的意思是 “一台機器 A 透過 USB cable 分享網路給對接的機器B, 機器 B 就能透過機器 A 來對外上網 "
原理基本上是 – 手機啟動 DHCP server,embedded device 透過dhcp 得到一組private IP. 拿到 IP後, embedded device 的封包可以透過 USB cable 傳輸並透過手機 routing 出去.
USB tethering 整體架構圖如下
- 手機從基地台拿到 10.10.10.10 的對外 IP
- 手機透過 USB 傳輸線和 Embedded device 連線
- 兩邊的 IP 分別是 192.168.31.120 以及 192.168.31.1
- Embedded device 可透過手機上網
首先要準備下列硬體設備
- 能上網的手機 (此篇以 Android 手機為例)
- USB 傳輸線
- Embedded device (需具有 USB type A connector)
接著準備軟體
- 在 embedded device 的 kernel source 啟動下列 configuration
- USB_NET_RNDIS_HOST
- USB_NET_CDCETHER
2. 編譯完放到 embedded device 裡並載入 module
軟硬體準備好後, 就開始進行設定
- 將手機和 embedded device 以 USB cable 對接
- 開啟手機 USB tethering 功能
- 開啟後,embedded device 就能偵測到裝置,如下圖
3. 此時embedded device 會出現一個 usb0 的網路介面
4. Embedded device 透過指令 “dhclient usb0″ 來跟手機要到 private IP
5. Embedded device 即可上網!
4~5 步驟如下圖
之後只要帶一條 USB 傳輸線就能讓 embedded device 上網囉!
note: 若使用 iphone, Kernel configuration 要選別的選項. 但 iOS 版本疑似有相容性議題. 我不是 APPLE 使用者, 所以就沒有特別去追嚕