在运行 Ubuntu 的 Beagle Bone Black 上启用 NovAtel USB 蜂窝调制解调器的脚本中,我看到了这一行:
/sbin/modprobe option
我查看了modprobe
手册页,上面说了很多关于选项的内容(请注意 s),但没有提到单个option
参数。是否有一个模块调用option
或类似的东西?或者这是否会产生其他副作用来设置调制解调器?
答案1
你完全正确,modprobe option
确实尝试加载模块option
,由内核配置参数控制USB_SERIAL_OPTION
。
在内核源代码中可以找到更多信息(drivers/usb/serial/Kconfig
)
配置 USB_SERIAL_OPTION tristate“用于 GSM 和 CDMA 调制解调器的 USB 驱动程序” (...) 该驱动程序还支持多种具有 内置 OHCI-USB 适配器和内部连接的 GSM 调制解调器。 这些卡上的 USB 总线无法从外部访问。 支持的设备包括(部分?)由以下制造商制造的设备: 选项、华为、Audiovox、Novatel Wireless 或 Anydata。 (...) 如果该驱动程序无法识别您的设备, 它可能可以通过 FTDI_SIO 驱动程序访问。
如何追踪:
检查您是否有这样的内核模块(只有当您的内核配置中启用它时,它才有效)
$ find /lib/modules -name option.ko /lib/modules/kernel/drivers/usb/serial/option.ko
或者,你可以尝试模块是否加载
# modprobe option # lsmod | grep option option 33128 0 usb_wwan 13044 1 option usbserial 23912 2 option,usb_wwan
现在,您可以尝试查找源文件(仅当模块包含在您当前的内核源中时才有效)
$ find /usr/src/linux -name option.c /usr/src/linux/drivers/gpu/drm/nouveau/core/core/option.c /usr/src/linux/drivers/usb/serial/option.c
您提到,该模块与 USB 调制解调器有关,因此第二个匹配听起来很有希望。
您还可以找到内核配置参数
$ find /usr/src/linux -name Makefile -exec grep -H option\.o '{}' \; /usr/src/linux/drivers/gpu/drm/nouveau/Makefile:nouveau-y += core/core/option.o /usr/src/linux/drivers/usb/serial/Makefile:obj-$(CONFIG_USB_SERIAL_OPTION) += option.o
现在,您可以查看
/usr/src/linux/drivers/usb/serial/Kconfig
并找到我在开头引用的描述。最后,看一下源代码本身(
.../drivers/usb/serial/option.c
),瞧你会发现除其他外作者对名字的解释此驱动程序之所以存在,是因为“普通”串行驱动程序与 GSM 调制解调器配合得不是很好。问题:
- 数据丢失——一个 Receive URB 远远不够
- 非标准流量(选配装置)控制
控制波特率没有意义
该驱动程序被命名为“option”,因为它最常用的设备
是 Option Inc. 生产的 PC 卡(带有内部 OHCI-USB 接口,
其后面是 GSM 接口)。一些“单端口”设备实际上在 USB 总线上显示多个 USB 实例。这不是错误,这些端口用于不同的设备功能。