【问题标题】:linux cdc_ecm driver vs rndis driverlinux cdc_ecm驱动vs rndis驱动
【发布时间】:2020-12-17 04:07:16
【问题描述】:

linux cdc_ecm驱动和rndis协议有什么关系? cdc_ecm 是否以任何方式基于微软的 rndis 规范?

来自这个维基页面https://en.wikipedia.org/wiki/RNDIS

USB 实施者论坛 (USB-IF) 定义了至少三个具有类似“虚拟以太网”功能的非专有 USB 通信设备类 (USB CDC) 协议;其中之一 (CDC-ECM) 早于 RNDIS,广泛用于与非 Microsoft 操作系统的互操作性,但不适用于 Windows。

似乎 cdc_ecm 是基于 microsoft rndis。

【问题讨论】:

    标签: linux-kernel cdc rndis


    【解决方案1】:

    CDC-ECM 是由 USB-IF 创建的标准。它根本与RNDIS无关。正如你的报价所说,它早于 RNDIS。这意味着它是在 RNDIS 存在之前创建的,因此它不能基于 RNDIS,除非时间机器进入画面。如果你看一下协议,它显然是不同的。

    CDC-ECM 在 Linux 主机、MacOS、ChromeOS 和某些(主要是三星)Android 手机上开箱即用。

    Microsoft 决定在 USB 协议上创建一个新的以太网,而不是使用已经存在的标准 (CDC-ECM)。微软就是这样。所以他们创建了 RNDIS,它不是标准,也没有发布。这是一个基于 NDIS 的 hack,NDIS 是 Microsoft 的旧 DOS 和 Windows 3.11 时代网络协议。微软也是如此。他们喜欢将东西建立在旧的 MS 软件之上,这些软件基于更旧的 MS 软件,一直追溯到 DOS。这使得其他任何人都很难与之兼容。

    Microsoft 在 Windows 中不包含 CDC-ECM 驱动程序,但有 RNDIS 驱动程序。

    如果没有 INF 文件,仅使用供应商和产品 ID、设备类等,Windows 将无法加载包含的 RNDIS 驱动程序。Microsoft 创建了一个非标准 USB 设备标识描述符(请参阅这里的模式)必须用于向 Windows 识别 RNDIS 设备,以便它加载通用驱动程序。

    Linux 有一个 CDC-ECM / RNDIS 组合小工具,可用于更广泛的兼容性。这显示为两个功能的 USB 设备。一个功能是 RNDIS,Windows 将使用它。另一个功能是 CDC-ECM,其他人都会使用它。这不是“支持 RNDIS 的 ECM”。这是两个不同的功能,一次只能使用其中一个,它们都是由同一个小工具创建的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2015-03-15
      • 2018-11-25
      • 2015-04-10
      相关资源
      最近更新 更多