• 一根数据线玩转树莓派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

  • 相关阅读:
    Git最强总结!
    强烈IDEA这些插件,让你的开发速度飞起来!
    MySQL执行计划【explain】详解
    设置php在apache下加载ini配置文件路径,~和curl扩展无法加载的问题
    远程连接mysql数据慢的问题
    在windows下,git webhook使用php拉取代码的学习总结
    centos 添加epel、remi仓库和ELRepo仓库
    windows下mysql数据库表名大小写不敏感
    .gitignore无效,不能过滤某些文件
    编译php时,出错bad interpreter
  • 原文地址:https://www.cnblogs.com/sjqlwy/p/zero_otg.html
Copyright © 2020-2023  润新知