在 Linux(Fedora) 中禁用自动串行端口探测

在 Linux(Fedora) 中禁用自动串行端口探测

我使用的设备通过 usb-com 串行适配器连接到我的 Linux (Fedora21) PC。当设备连接并在系统中创建 /dev/ttyACM0 时,系统会发送一系列调制解调器 AT 命令以进行初始化。

由于我的设备不是调制解调器,我想禁用该行为。

那么问题是,如何禁用此类探测?

答案1

探测端口的东西很可能是 ModemManager,它是 NetworkManager 套件的一部分。

如果您的系统中没有安装(经典或 wwan)调制解调器,最简单的方法就是从系统中删除 ModemManager。如果您确实有这样的调制解调器,那么您可以添加 udev 规则来向 ModemManager 发出信号,表明该设备不是调制解调器,并且它甚至不应该探测它:

ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", ENV{ID_MM_DEVICE_IGNORE}="1"

其中1234是您设备的供应商 ID 和5678产品 ID(您可以使用 找到它们lsusb

答案2

这是帮助我使用 ModemManager 1.10.0 --filter-policy=strict(Ubuntu 18.04)的解决方案
ModemManager -V

您可以了解更多:常见的 udev 标签

创建一个文件/etc/udev/rules.d/49-stm32.rules并添加以下内容:

# 0483:5740 - STM32 in USB Serial Mode (CN5)
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_TTY_BLACKLIST}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{MTP_NO_PROBE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_PORT_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_TTY_MANUAL_SCAN_ONLY}="1"

保存文件并运行后:
sudo udevadm control --reload-rules

并且(也许没有必要):
sudo systemctl restart ModemManager.service

重新连接 USB 设备(物理拔出并插入 USB 端口)并享受。

PS这是STM32 CDC Virtual Com端口的解决方案 - 如有必要,您可以更改PID / VID和udev标签。

相关内容