问题标签 [rndis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2381 浏览

linux-kernel - linux cdc_ecm驱动vs rndis驱动

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 的。

0 投票
0 回答
156 浏览

c# - 如果它因 ERROR_INVALID_PARAMETER 而失败,如何使用 setupapi DiInstallDevice 以编程方式 (RNDIS) 强制通用 Microsoft 驱动程序?

当我将 USB RNDIS 设备(Linux 小工具)插入 Windows PC 时,被视为“RNDIS”设备,没有驱动程序。为了让它工作,我去设备管理器,手动选择微软通用远程 RNDIS 驱动程序。

我的最终目标是从代码 (C#) 强制安装该通用 Microsoft 驱动程序,以避免用户手动执行此操作。我尝试了 devcon、pnputil 和其他方式,但没有任何效果。最后,我为DiInstallDevice Windows SetupAPI 实现了一个 pinvoke。

我可以同时检索 deviceInfoData 和 driverInfoData,其中包含有意义的数据。

对 DiInstallDevice 的最终调用总是失败并出现最后一个错误 87:ERROR_INVALID_PARAMETER。我错过了什么吗?有没有其他方法可以为无法识别的设备选择通用驱动程序?

0 投票
1 回答
69 浏览

android - 为什么 dwc3 usb 控制器没有报告 xfercomplete 事件?或者小工具驱动程序错过了那个事件?

使用usb的Android手机连接PC,打开rndis,然后在手机和PC之间进行iperf测试。经过几个小时的测试,rndis 的端点 ep1out 没有收到小工具驱动程序在发送传输命令后应该收到的 xfercomplete 事件。

我尝试将事件缓冲区大小从 256 扩大到 4096,也将 grxfifosize 从 delault value 扩大,但问题仍然存在。

手机有 8 个 cortex-A53 核心,但我们留下 1 个小核心(cpu0)和 1 个大核心(cpu7)在线,并通过设置 dwc irq 的 smp_affinity 设置 dwc 中断不路由到 cpu0,因为吞吐量原因。所以dwc3_interrupt在cpu7上运行,dwc3_thread_interrupt也在cpu7上运行。

很奇怪,如果我们将 irq 路由到 cpu0,并且 dwc3_thread_interrupt 在不同的 core(cpu7) 运行,问题就消失了,不明白为什么。

代码是来自 synopsys 的开源代码,您可以在 kernel/drivers/usb/dwc3/gadget.c 找到

https://github.com/aosp-mirror/kernel_msm/blob/e8adfc30ff9282a728fd8b666b6418308164c415/drivers/usb/dwc3/gadget.c

提前致谢。

0 投票
0 回答
146 浏览

linux - 复合 USB CDC 小工具不适用于 Windows10 主机

我的问题类似于以下 url 问题。 复合 USB CDC 小工具不适用于 Windows 主机

我有一个带有 USB 设备接口的嵌入式 Linux 5.4(OpenSTLinux)系统

Window10 主机只检测 RNDIS 接口,忽略 ACM 接口。RNDIS 运行良好。

已应用以下设置

回声“0xEF”> ${d}/bDeviceClass

回声“0x02”> ${d}/bDeviceSubClass

回声“0x01”> ${d}/bDeviceProtocol

如果您知道问题的原因,请告诉我。

0 投票
0 回答
69 浏览

windows - Windows RNDIS 兼容设备:是否需要将 RNDIS 列为复合 USB 设备中的第一个功能?

在实现由 RNDIS 和 ACM 两个功能组成的多功能复合设备时,我注意到 Windows 10 无法安装/启动 RNDIS 设备,除非它被列为第一个功能(第一个 IAD/第一组接口)。

以下 .txt 是来自工作案例的 USB 描述符转储,其中列出的第一组 IAD / 第一组接口对应于 RNDIS(随后是 ACM IAD / 接口):

rndis-acm-working.txt

但是,如果我交换 RNDIS 和 ACM 描述符的写入顺序,以便首先列出 ACM IAD / 接口(然后是 RNDIS IAD / 接口),那么枚举的 RNDIS 设备启动时会出现问题。

这是失败情况下的 USB 描述符转储: acm-rndis-not-working.txt

请注意,在这两种情况下,ACM 设备都会正常启动(无论它是列出的第一个功能还是第二个功能)

我已经多次检查了 RNDIS 失败案例的 USB 描述符转储,它对我来说看起来很合适。. . 这可能表明 RNDIS 驱动程序堆栈(rndismp6.sys / usb80236.sys / 其他地方)中存在错误,还是我遗漏了什么?

首先十分感谢!

0 投票
1 回答
32 浏览

python - 有没有办法在 Python 中识别 RNDIS 连接/适配器?然后配置那个适配器?

我连接了多个设备,我需要识别并希望配置该 RNDIS 连接。

0 投票
0 回答
50 浏览

ssh - USB CDC ACM 用于高速传输和 TCP/IP 传输

我是 USB 驱动程序的新手,我尽我所能更好地阅读和理解 USB 驱动程序架构/结构。

最初我想在 CDC ACM 模式下通过 USB 在 PPP 上运行 SSH,以连接 Windows 机器和 Linux 机器。后来我发现了其他 CDC 模式:ECM、NCM 和 EEM。起初我以为我可以使用适配器芯片,比如 Prolific PL27A1。

考虑使用 CDC ACM(而不是像 FTDI 芯片那样使用 USB 转串口)是因为需要高速。

我了解到Windows会根据USB描述符自动安装和使用驱动程序,而我购买的Prolific PL27A1配置为USB EasyTransfer,而不是CDC ACM。在其数据表上,它说它支持 CDC ACM 以及 RNDIS 模式。但不幸的是,他们不支持最终用户客户。我想我可以简单地将模式更改为 RNDIS 或 CDC ACM。

类似的东西需要固件包装器吗?所以,我想了解,我如何实现我所需要的?CDC ACM 是否可行?

我考虑过现成的 USB-to-Ethernet 适配器设备,但在高速 UART 上使用 PPP 是有价值的。

0 投票
0 回答
32 浏览

ubuntu - RNDIS 驱动程序未在 Ubuntu-20.04 中自动加载

我对 Linux/Ubuntu 配置很陌生。

  • 我的设备被未知同事加载了 Ubuntu-20.04。
  • 我的设备有用于 MDG200(4G 调制解调器)的 mPCIe 插座
  • 我期待在插入 MDG200 后看到一个虚拟以太网端口。
  • 但是,插入MDG200后似乎没有自动加载RNDIS
  • (因此我看不到虚拟以太网端口)
  • (请参阅“lsmod”结果的屏幕截图,在插入 MDG200之前/之后)

有人知道如何在 Ubuntu 中安装 RNDIS 驱动程序吗?谢谢!

在插入 MDG200 之前

插入MDG200后