gpt4 book ai didi

ubuntu - 仅为特定的 USB 接口(interface)加载 cdc_acm 模块

转载 作者:行者123 更新时间:2023-12-04 18:47:16 26 4
gpt4 key购买 nike

我正在尝试使用多个(七个)USB 子接口(interface)表示自身的 USB 设备,因为每个子接口(interface)都加载了 cdc_acm 内核模块。当我尝试连接更多 USB 设备时,cdc_acm 模块报告“没有更多可用的 acm 设备”。

我试过udev规则但没有成功。

ACTION=="add", SUBSYSTEMS=="usb", DRIVERS=="cdc_acm", ATTRS{bInterfaceNumber}!="00", RUN+="/bin/sh -c 'echo -n $id > /sys/bus/usb/drivers/cdc_acm/unbind'"

此规则取消绑定(bind) cdc_acm 驱动程序,但它发生在驱动程序检测到所有子接口(interface)并遇到可用空间问题之后。

我正在寻找如何仅为一个 SUB 子接口(interface)加载 cdc_acm 驱动程序的方法。

最佳答案

您可以在 cdc_acm 的源代码中看到“no more free acm devices”消息的来源:

http://lxr.free-electrons.com/source/drivers/usb/class/cdc-acm.c#L1320

稍微查看了该代码后,看起来 cdc_acm 驱动程序有一个只能容纳 32 个条目的表,当表填满时,您将收到该错误消息。表的大小由 ACM_TTY_MINORS 决定cdc-acm.h 中的宏。

您可能可以通过重新编译 cdc-acm 模块来解决您的问题,并为 ACM_TTY_MINORS 设置更高的值。 ,然后将其加载到您的内核中。

重新编译内核模块是一个相当复杂的过程。我以前做过,但我不知道所有细节。许多其他人已经在其他情况下完成了它,因此您应该能够搜索“重新编译 Linux 内核模块”以找到关于它的好教程。

关于ubuntu - 仅为特定的 USB 接口(interface)加载 cdc_acm 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28570670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com