0. 前言
原創文章,轉載引用務必注明鏈接。水平有限,如有疏漏,歡迎指正。
本文使用Markdown寫成,為獲得更好的閱讀體驗和正常的鏈接、圖片顯示,請訪問我的博客原文:
http://www.cnblogs.com/sjqlwy/p/zero_otg.html
想要上電啟動Zero,所需要的最少配件包括一根MicroUSB數據線和MicroSD卡。是的,不需要額外的miniHDMI線+顯示器、MicroUSB電源線。那么究竟如何操作的呢,請緊張地往下看。
運行環境:Raspbian Jessie Lite 2017-02-16;Windows 7 Home Pentium x64
1. 基礎知識
1.1 USB接口工作模式
Device和Host模式 (待補充...)
1.2 Zero的USB接口
標有PWR IN的是供電接口,沒有數據功能;標記USB的是OTG接口,可以使用USB-OTG線接USB-Hub,繼而連接鼠標鍵盤、有線無線網卡、U盤等其他設備。另外該接口竟然可以供電,沒有看到電路圖,不知道有木有保護電路,不過因為使用筆記本接口供電,另外有人這樣供電搞過docker swarm 集群,所以比較放心。
1.3 USB Gadget 驅動
可以實現的功能包括:
2. 實戰數據線訪問Zero
2.1 燒錄鏡像
根據我們的需要,選用不帶圖形界面的Raspbian Jessie Lite(下載鏈接 、發行日志) 和 dietpi (下載鏈接 、發行日志)這兩個操作系統,先以RJL為例,Windows使用Win32 disk imager, Linux使用dd燒錄到存儲卡,不再贅述。
2.2 初始設置
其實就是使用USB Gadget驅動將USB-OTG模擬為有線網卡,之前需要的設置比較繁瑣,好在新版的Raspbian內核不需要額外安裝補丁,可以直接啟用,另外虛擬出來的和有線網卡基本一樣,不像串口那樣只能打開一個終端。方法如下:
# 修改boot分區里的config.txt文件,在新一行增加如下內容
dtoverlay=dwc2
# 修改boot分區里的cmdline.txt文件,在rootwait后面增加如下內容,注意每個參數之間空格分開,且都是在同一行
modules-load=dwc2,g_ether
注意:關於dtoverlay的更多內容可以查看boot分區overlay文件夾的
README
介紹,dt=Device Tree。
在boot分區根目錄創建一個文本文件,然后重命名為ssh,注意去掉.txt后綴,此時即可以 開啟ssh登錄(新版Raspbian的改動)。
2.3 開機上電
將MicroUSB數據線一頭接在Zero USB
接口,一頭連接電腦,稍等片刻即可聽到“咯噔”一聲,此時電腦會安裝相關驅動並顯示一個新網卡。我們使用遠程管理軟件如Xshell或Putty,服務器(host)填raspberrypi.local
,端口22
,用戶名pi
,密碼raspberry
即使用SSH登錄控制Zero了。
參考:
- http://blog.gbaman.info/?p=791 源貼,作者挺活躍的,也是樹莓派基金會成員?
- http://blog.yfgeek.com/2016/12/17/raspizero/ 中文版的
2.4 教練我還想上網
我們通過ifconfig
命令可以看到獲取的ip地址其實是169.254.x.x
這種用於本地自動配置的保留地址,而且並不能共享主機的網絡訪問互聯網。上面yfgeek的解決方法是使用squid代理軟件,但是聯想到之前寫的《網線直連控制Guitar (增強版)》,使用Windows系統自帶網絡共享功能即可。
2.4.1 zero網絡設置
# 修改/etc/network/interfaces文件,增加如下內容:
## USB
allow-hotplug usb0 # 允許熱插拔
auto usb0 # 開機自動連接usb0,也就是虛擬有線網卡
iface usb0 inet static # 設置usb0使用靜態ip
address 192.168.137.2 # 設置靜態ip地址,和windows的在同一網段組成LAN
netmask 255.255.255.0
gateway 192.168.137.1 # 設置網關
dns-nameservers 114.114.114.114 # DietPi 需要設置dns服務器
2.4.2 Windows網絡共享設置
在主機聯網的網卡上右擊選擇屬性
——共享
標簽——選擇虛擬有線網卡(一般帶有RNDIS字樣)保存即可。重啟Zero,登陸后即可發現Zero可以訪問互聯網了。
使用ping命令查看網絡連接情況:
大功告成。
3. 借鑒Beaglebone進一步完善
https://github.com/RobertCNelson/tools/blob/master/scripts/beaglebone-black-g-ether-load.sh#L28
http://www.elinux.org/BeagleBoardBeginners
https://github.com/beagleboard
4. raspberrypi.local 背后的故事
https://wiki.archlinux.org/index.php/Avahi
DietPi的設置,自動腳本安裝dnsmasq|udhcpd
Pi shank