Android 台设备上的 USB 以太网

USB Ethernet on Android devices

我有一个嵌入式 Linux 系统,它使用 USB Gadget 框架显示为以太网 class 设备(ACM 以太网,使用 g_ether 内核驱动程序。)一切都很好将其与 Ubuntu 系统一起使用以连接到设备。我可以让设备向 Ubuntu 系统发出 DHCP 租约,或者在 Ubuntu 和嵌入式系统中设置静态 IP 配置,网络流量通过得很好。在 Ubuntu 系统上,这显示为 usb0 网络接口(常规以太网端口显示为 eth0,等等)

现在,我希望它能与 Android 设备一起使用。具体来说,三星 Galaxy S20 和 Galaxy Tab A,但对其他设备的广泛支持也很好。

我们已经有一个使用此 phone 和 tablet 的应用程序,它使用 USB 串行小工具与嵌入式系统通信。

我注意到,当我将 USB 以太网加密狗连接到 Android tablet 时,我实际上可以通过此设备访问互联网,一旦在“更多连接设置”中启用该设置" 页面。

但是,如果我们将小工具 USB 设备连接到 Android tablet,启用以太网的选项将保持禁用状态。

我怀疑这是因为 Android 要么通过 VID/PID(设备白名单?)过滤,要么仅在检测到 eth0 设备时才启用此选项.

所以我的问题有两个:

我有一些数据:我们知道的另一种产品实际上需要一个使用 root 设备的应用程序和 su 配置 Linux 路由 table 手动实现USB以太网。我们正在努力避免这样做的必要性,但看起来确实不可能。令人担忧的是,这个产品有一个安全的使用配置文件,所以它似乎与需要 root phone.

有点不一致

顺便说一句,我已经尝试过使用 RNDIS 小工具驱动程序(Linux 两者都支持)并且行为是相同的。

问题已解决。这完全取决于 USB Gadget 公布的 MAC 地址。您需要为 Linux(在 Android 端)中的 udev 规则通告通用地址(U/L 位已清除)以关联 eth0 设备而不是 usb0。完成此操作后,Android 将从设置页面正常连接到设备,即使它是复合 USB 设备。