通过 USB 连接树莓派 Zero

树莓派 Zero w,没有网卡接口,可以通过 Wi-Fi 联网。

树莓派 Zero w 提供了 Micro USB,可以:

  • 设置为 OTG,通过电脑(Windows/macOs/Linux)ssh 到 Zero
  • 电脑可以共享网络,让通过 USB/OTG 连接的 Zero 访问互联网

在 Zero 的系统设置 USB/OTG#

本文使用的是:

  • 树莓派 Zero WH
  • Micro SD card 复制了 Raspbian Buster Lite 镜像

这部分的操作主要参考了:

基本步骤为:

  • 在 macOS 修改 SD card 文件
    • touch ssh
      • 在 SD card 根目录下创建空文件
      • 目的是在 Raspbian 启动后,识别这个文件,打开 ssh server
      • Raspbian 会在操作后,删除该空文件
      • 这种操作的目的是方便用户,否则,你必须给 Zero 插上显示器和键盘,登录后操作修改
    • 编辑 config.txt,增加一行:dtoverlay=dwc2
    • 编辑 cmdline.txt, 在rootwait后面加入modules-load=dwc2,g_ether
  • SD card 插入 Zero
    • 通过 USB 线,连接 macOS 和 Zero
    • 注意,要连接 Zero 的数据 Micro USB 接口,不是 Micro USB 电源接口

通过 ssh 访问 Zero#

稍等一会儿 Zero 启动,然后可通过 macOS ssh 访问:

1
ssh pi@raspberrypi.local

密码是 Raspbian 默认的密码raspberry

之所以能通过raspberrypi.local访问,源于 Bonjour/zeroconf/Avahi 类似的技术。

Zero 默认安装后的主机名为raspberrypi,建议第一次登录后修改主机名

  • 比如修改为zero,那么下次登录就是:ssh pi@zero.local,可以参考:How to change hostname on Debian 9 Linux
  • 因为,一个网络中存在多个名为raspberrypi的主机,可能会导致 ssh 登录到其他主机上

这个操作应该可以适用于 Windows/macOS/Linux。

我尝试通过另外一台树莓派,可以 ssh 登录到 Zero。

这个连接过程可注意到:

  • ip 地址是169.254.x.x,说明未能 DHCP 分配到 ip 地址
  • 通过 macOS/Windows/Linux 能看到多了个 USB 网卡,这就是通过 OTG 连接的 Zero
  • 从 macOS/Windows/Linux 看到的网卡 ip 地址,和登录 Zero 看到的 ip 地址是不同的,都是169.254.x.x

设置共享网络给 Zero#

macOS 的设置步骤#

在 macOS 下,基本步骤是,在系统偏好设置共享里,设置互联网共享

  • 共享以下来源的连接,选择你当前上网用的网卡
  • 用以下端口共享给电脑,勾选 Zero 的 OTG 网卡,名字类似RNDIS/Ethernet Gadget

Wi-Fi 可能用不了#

如果是公司使用的 Wi-Fi,有可能用不了,因为受 802.1x 保护。

想通过树莓派共享网络的尝试失败了#

如果能让树莓派和 Zero 通过 USB 连接,并共享网络,那么可以堆叠多个树莓派单板机实现复杂功能

  • 每个单板机只完成单一的和传感器相关的业务逻辑
  • 有一个网关单板机,集成多个单板机的功能
  • 每个单板机因为逻辑单一,好调试,好组装

不过这个愿望目前没有实现。

在尝试过程中一些文章给了我帮助,记下来可能以后用得着:

直接插上 Zero 设备就能上网是不可能的#

如果 Zero 做好系统和服务功能后,交付给用户:

  • 直接插到电脑上,Windows 或者 macOS
  • Zero 在不需要用户配置的情况下,直接分享用户的网络
  • 用户在浏览器输入raspberrypi.local就能访问服务网页
  • Zero 可以通过互联网提供服务

按照上述的交互过程看,这是不可能的,需要用户手动共享网络,而且有时候还不行(802.1x 保护)。

可能的正确使用方式#

Zero 安装好系统和应用服务,用户当做 U 盘插入到主机。

打开浏览器访问,raspberrypi.local,显示设置 Wi-Fi 的网页。

Wi-Fi 设置成功后,用户依然通过raspberrypi.local访问 Zero,Zero 通过 Wi-Fi 访问互联网提供服务。

这个可能性后续再补充。TODO