2015年3月25日 星期三

透過Android phone的 micro USB cable, ssh 登入Raspberry Pi

今天介紹如何透過Android phone的 micro USB cable, ssh 登入Raspberry Pi.

一般我們登入Raspberry Pi都是使用 ssh, 透過Ethernet 或是 WiFi.
如果沒有網路線, 或是現場也沒有WiFi AP該怎麼辦呢??

您應該會隨身攜帶Android phone的充電線吧? 通常這是一條micro USB 轉 type A cable.
本文要展示的方法就是透過這條充電線, Android 手機的可以直接 ssh 登入Raspberry Pi.


連接圖如下:


1. 原理說明
其實就是透過 USB CDC (Communications Device Class), 簡單地說就是把USB cable兩端的裝置都作用成網路卡.

Raspberry Pi kernel 都有內建 USB CDC driver, 只要您的手機不是太舊, 應該也都有CDC功能.

有了網路實體連線, 還需要有IP地址配發,
這裡我們示範的是將手機設定成 DHCP server, Raspberry Pi當成DHCP client.

如此, 只要手機端知道 Raspberry Pi的 IP address, 就可以利用ssh 連線囉.
其實不只是ssh, 基本上所有的TCP/IP 應用都可以使用喔.

要怎麼知道Raspberry Pi的 IP address呢??
有一個辦法, 就是安裝 avahi-daemon, 它利用mDNS的技術, 將Raspberry Pi的IP address 透過 multicast的方式發送給手機.
手機端只要用 DNS 去詢問即可得到 IP address.
比方說, raspberry pi 的hostname 是 "raspberrypi", DNS FQDN 就是 "raspberrypi.local"



2. 步驟如下

a. 事先, 在Raspberry Pi端, 先配置USB產生出來的網路介面卡. 這動作只要做一次.

# vi /etc/network/interfaces


新增以下兩行
auto usb0
iface usb0 inet dhcp

b. Raspberry Pi 端, 要安裝 avahi-daemon,

# sudo apt-get install avahi-daemon

這樣安裝完畢, Raspberry Pi下次開機就會自動啟動 avahi-daemon

將Raspberry Pi重新開機

# sync;sync;reboot 

c. 如同連接圖所示, 使用那條充電線將手機與Raspberry Pi連接.

d. 手機端做以下操作
(由於不同手機的設定提示不同, 看官們可能要自行嘗試. 筆者這裡是用 HTC butterfly S 舉例說明)

進入設定(Settings)  >> More >> 行動網路分享 >> USB網路設定 >>

這裡有兩個可能, 分別是:

透過電腦傳送 (手機變成USB CDC client, as a DHCP client)
USB數據連線 (手機變成USB CDC server, as a DHCP&NAT server)

由於我們要讓手機變成 DHCP server, 所以選擇 "USB數據連線".

e. 測試

從手機端, 找一個ping 的app, 嘗試 ping raspberrypi.local   如何?? 成功了嗎??
或是找一個 ssh app, 直接 ssh raspberry.local  即可.


參考文獻

  • http://www.raspberrypi.org/forums/viewtopic.php?f=36&t=18916
  • http://www.howtogeek.com/167190/how-and-why-to-assign-the-.local-domain-to-your-raspberry-pi/
  • http://en.wikipedia.org/wiki/USB_communications_device_class

沒有留言:

張貼留言