一根數據線玩轉樹莓派Zero


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了。

參考:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM