news 2026/10/21 9:27:54

mangopi(芒果派)MQ-R T113 Buildroot开启USB虚拟网卡(RNDIS)并使用SSH调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mangopi(芒果派)MQ-R T113 Buildroot开启USB虚拟网卡(RNDIS)并使用SSH调试

前言

在之前的文章中,介绍了用 Buildroot 构建芒果派 MQ-R T113 的固件,以及开启 ADB 调试。
本文继续介绍 SSH 调试所需的开发板配置。

SSH 服务可以实现远程登录、端口转发和文件传输。相比 ADB,它的使用体验更接近默认的 UART 调试方式。不过,SSH 通常面向局域网开放,一般需要先让开发板连接到指定 Wi-Fi,再由电脑访问。

这里采用另一种方式:开启 USB OTG 的 USB 虚拟网卡功能。使用USB 数据线连接开发板和电脑后,两者就可以组成一个局域网,进而使用 SSH 登录并调试开发板。

本文以芒果派 MQ-R 开发板为例,但 Buildroot 的配置方法具有通用性,其他开发板也可以采用类似配置。

构建过程

开发板软件配置

首先安装 OpenSSH,打开menuconfig配置界面:

makemenuconfig

在Target packages → Networking applications中选中openssh:

保存配置并编译后,相关配置文件会自动生成。


为了让开发板通过 USB 连接电脑后组成局域网,还需要打开 USB 虚拟网卡驱动。
打开 Linux 配置界面:

进入Device Drivers → USB support → USB Gadget Support,配置 USB 驱动:

这里有两种配置方式:

  1. configfs用于手动配置 USB Gadget,适合需要更细致自定义的场景。
  2. 本文选择precomposed,它提供了预先配置好的 Gadget,可以直接使用,配置更简单。

继续进入Device Drivers → USB support → USB Gadget Support → USB Gadget precomposed configurations,
开启Ethernet Gadget(USB 虚拟网卡)选项。

默认值为M(编译为内核模块),后续还需要手动加载这个功能。这里直接选择*,让它随内核默认启用。

保存并编译。

SSH配置文件修改

为了简化后续开发,需要修改两个配置文件。在 Buildroot 中修改系统文件有两种方式:

  1. 编译好系统并烧录到开发板后,在开发板上更改
  2. 在buildroot/board/开发板/rootfs_overlay中放置文件,rootfs_overlay中的文件在编译后覆盖系统默认文件

这里选择第二种方式,直接在电脑上修改芒果派 MQ-R 开发板对应的buildroot/board/mangopi/mq1rdw2/rootfs_overlay中的内容。


首先修改 SSH 配置文件sshd_config

启用openssh并执行make -jN编译后,Buildroot 会在buildroot/output/target/etc/ssh/sshd_config生成默认配置文件。将它复制到buildroot/board/mangopi/mq1rdw2/rootfs_overlay/etc/ssh/sshd_config,然后编辑该文件,启用以下选项:

PermitRootLogin yes PermitEmptyPasswords yes

PermitRootLogin yes表示允许使用 root 账户登录 SSH。
PermitEmptyPasswords yes表示允许使用空密码登录(如果没有单独设置 root 密码,Buildroot 默认的 root 账户通常为空密码)。

再配置interfaces

为了方便后续通过 SSH 连接,需要让 USB 虚拟网卡使用固定 IP,这样每次访问同一个 IP 地址即可。

编辑文件(在 MQ-R 开发板中,该文件默认存在)buildroot/board/mangopi/mq1rdw2/rootfs_overlay/etc/network/interfaces,加入以下配置:

auto usb0 iface usb0 inet static address 192.168.7.2 netmask 255.255.255.0


至此,配置完成,直接执行make -jN编译固件。

上机测试

Windows 额外配置

此时,使用 USB 线连接电脑后,理论上就可以通过 SSH 登录开发板了。但在 Windows 下,系统可能会将 USB 虚拟网卡识别为串口,导致无法连接:

因此需要手动安装 USB 虚拟网卡驱动,安装过程可以参考 Sipeed 安装 RNDIS 驱动。正确安装驱动后,就可以看到 USB 虚拟网卡:

安装好驱动后,检查 USB 虚拟网卡的信息和 IP 地址:

Get-NetAdapter
Get-NetIPAddress-AddressFamily IPv4|Format-TableInterfaceAlias,IPAddress,PrefixLength

由于开发板端 USB 虚拟网卡的 IP 地址设置为192.168.7.2,需要将电脑端的 IP 地址设置在同一子网中,这里设置为192.168.7.1:

New-NetIPAddress`-InterfaceAlias"网卡名称"`-IPAddress 192.168.7.1 `-PrefixLength 24

至此,Windows 端配置完成。通常只需要配置一次,之后无需重复设置。

测试

运行ssh root@192.168.7.2即可登录开发板。
首次启动 SSH 服务时,系统可能会自动生成主机密钥,这个过程会花费一些时间。
也可以提前生成主机密钥并放入rootfs_overlay,避免首次启动时生成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 12:39:36

研究生开题答辩前必看:研究局限预判清单,答问环节不慌

开题答辩的提问环节,研究局限几乎躲不开。临场翻遍脑中材料,常常来不及把话说圆,不如提前把边界、成因与补救路径整理成能复述的答案。下面按三类追问场景给出准备动作,并附一张速查表;工具侧可先用知学术AIPaperGPT&a…

作者头像 李华
网站建设 2026/10/20 13:27:18

DDIC Structure 不只是字段集合,从语义属性看 ABAP Dictionary 的建模能力

在 SE11 里创建一个 Structure,看上去很像是在做一件非常机械的事情。建立一个结构名,填 Short Description,在 Components 页签里一行一行加入字段,再给字段绑定 Data Element 或直接指定 Data Type。很多 ABAP 开发人员长期使用 DDIC Structure,也很容易形成一种印象,S…

作者头像 李华
网站建设 2026/10/20 22:26:10

Android 计算器开发实战:从界面设计到核心逻辑

摘要:本文手把手带你从零构建一个基于 Android 的计算器应用。内容涵盖项目环境搭建与分层架构规划、界面布局与组件设计、核心状态变量管理、按钮事件监听、屏幕显示更新、输入合法性校验、用户提示机制,以及独立计算类的封装与联调测试。通过完整流程,你将掌握 Android 开…

作者头像 李华
网站建设 2026/10/19 13:06:46

Spring AOP 底层动态代理 + 实战:事务、日志切面、权限拦截、接口限流

AOP(面向切面编程)是 Spring 两大核心之一,和 IOC 容器相辅相成。很多后端开发日常使用 AOP 做日志、鉴权、限流,但对 AOP 底层动态代理机制、通知执行顺序、代理失效场景理解模糊。Spring 声明式事务底层就是 AOP。本文从设计思想…

作者头像 李华