轶哥

📚 Having fun with AI Agent. Always learning.

    树莓派4使用OTG功能变身有线网卡
    •   更新:2020-05-11 00:12:45
    •   首发:2020-05-11 00:11:48
    •   教程
    •   14825

    本文介绍如何开启Raspberry Pi 4 USB OTG模式,让树莓派变身有线网卡

    Raspberry4

    树莓派4相比之前的版本具备三倍的计算性能提升和高达4G的LPDDR4内存,自带双屏无线+蓝牙,千兆网扣,支持双屏4k,新增俩USB3.0,可玩性非常强。无风扇禁音,非常适合作为一个边缘计算节点旁路由来使用。如果再开启NAT转发,即可实现的变身有线网卡的同时作为无线网络接收器路由器来使用。

    Raspberry 4 和 Raspberry Zero 一样,具备一个带OTG功能的USB接口(很遗憾Raspberry pi model B、Raspberry pi model B+、Raspberry pi 2 model B、Raspberry pi 3 model B、Raspberry pi 3 model B+均无USB OTG功能)。

    启用USB OTG模式,让树莓派变身有线网卡

    1. 刷入官方Raspbian系统。经过测试,树莓派爱好者基地发行的Debian-Pi-Aarch64系统、Ubuntu Server系统,暂时都不支持USB OTG模式。

    2. 刷入后,先不急移除TF卡。进入已挂载的boot分区,touch SSH文件(新建一个名称为SSH的空白文件,开启SSH连接功能)。

    3. 插入TF卡、有线网络并启动设备,使用电脑在同一个网络下连接SSH。

    ssh pi@raspberrypi
    
    1. 执行passwd设置当前用户pi的密码。执行sudo su切换为root用户,执行passwd设置root用户的密码。

    2. 修改/etc/ssh/sshd_config文件,在第33行添加

    PermitRootLogin yes
    

    允许root用户以SSH方式登录系统。执行systemctl restart sshd重启sshd。*此步骤是可选的

    1. 执行rpi-update进行系统升级。

    2. 将内核切换为64位内核,打开树莓派USB OTG模式。修改/boot/config.txt文件,在最后一行加入:

    # enbale 64 bit kernel
    arm_64bit=1
    
    # enable USB OTG
    dtoverlay=dwc2
    
    1. 载入内核模块,启动USB网卡功能。修改/boot/cmdline.txt文件,在rootwait后,添加空格并加入:
    modules-load=dwc2,g_ether
    

    修改后Raspberry 4的/boot/cmdline.txt文件内容可能像这样:

    console=serial0,115200 console=tty1 root=PARTUUID=738a4d67-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether
    
    1. 执行telinit 6,重启设备。将USB-C接口与电脑相连,从现在起可以拔除有线网卡了。

    USB3.00-TypeC数据线

    请注意,由于电脑主板供电的原因,您有可能需要一根类似这样的USB3.0 TypeC 带辅助供电的数据线。您需要15w(5V 3A)的电源以确保树莓派获得足够的动力。

    1. MacOS系统下是不需要安装驱动的,设备会检测到RNDIS/Ethernet Gadget的网卡,并且自动分配类似169.254.192.68的IP地址。Windows系统需要安装驱动程序。如果没有执行第五步,则需要将用户改为pi,即ssh pi@raspberrypi.local
    ssh root@raspberrypi.local
    

    Root身份进入系统。这时ifconfig -a下出现usb0网卡。

    usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 169.254.147.254  netmask 255.255.0.0  broadcast 169.254.255.255
            inet6 fe80::25c3:8e3b:1f05:eb2f  prefixlen 64  scopeid 0x20<link>
            ether 82:9a:4c:72:4a:60  txqueuelen 1000  (Ethernet)
            RX packets 985  bytes 180096 (175.8 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2481  bytes 168355 (164.4 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    小提示,如果没有出现wlan0网卡,可能是因为还没有设置Wifi使用的国家标准,执行raspi-config根据提示设置无线网络即可。

    关于网速

    使用USB OTG网卡,网速上限为300M。开启TypeC接口USB OTG功能不会影响其它USB接口的正常使用。

    树莓派4中的无线网卡大约能达到114M的网速。如果使用外置USB3.0网卡,则可以跑满千兆。

    小技巧

    安装Remote - SSH插件后,树莓派也可以作为Visual Studio Code的远程计算节点来使用,降低电脑的计算压力。

    您的代码直接保存在树莓派、程序也直接在树莓派中运行,使用树莓派作为USB网卡几乎零延迟,开发体验与本机无异。

    (受疫情影响,我们仍在一个临时办公地点办公。我所使用的Mac设备配置很低,但是使用树莓派作为计算节点之后,我调试代码的效率提高了很多。)

    如何使树莓派变身无线网卡路由器?请关注我后续的文章😄。

    打赏
    交流区(8)
    InfoQ

    请问:「Raspberry 4 和 Raspberry Zero 一样,具备一个带OTG功能的USB接口」这个是说 4 个USB 接口都有 OTG,还是某一个 USB3 的接口有 OTG 的功能?

    2022年2月10日 12:19回复
    轶哥

    只是供电的TypeC口有OTG功能哈。

    2022年3月16日 09:17回复
    InfoQ

    「请注意,由于电脑主板供电的原因,您有可能需要一根类似这样的USB3.0 TypeC 带辅助供电的数据线。」如果我是连接手机,是不是就不需要辅助供电线了?

    2022年2月10日 12:38回复
    轶哥

    是的,相当于传输数据的同时供电了。但是手机的电流是否能支撑树莓派4还不好说。

    2022年3月16日 09:18回复
    LilZhang

    大佬您好,树莓派4是否支持使用OTG化身U盘(usb mass storage)呀?

    2024年7月11日 08:29回复
    轶哥

    这个需求很特殊。是可以的,但是比较困难,需要修改驱动配置。

    2024年7月14日 12:27回复
    Papyrus.

    我在这个过程中遇到了各种问题- -,现在在UDC core: g_serial: couldn't find an available UDC卡住了,请问大佬有什么解决方案吗,还是说我前置的设置就错了呢,> 这个需求很特殊。是可以的,但是比较困难,需要修改驱动配置。

    2024年9月29日 08:45回复
    轶哥

    抱歉,这块我也不太清楚,尝试寻求AI的帮助吧。

    2024年9月29日 09:40回复
    尚未登陆
    发布
      上一篇 (树莓派4变身旁路由)
    下一篇 (小米路由器4免拆机刷OpenWrt教程)  

    评论回复提醒