无法连接到 USB CDC 设备

无法连接到 USB CDC 设备

我有一个 8 通道 USB 继电器板,已通过 USB 连接。该委员会的手册指出:

要在 Linux 上使用本产品,需要将 USB CDC 驱动程序编译到内核中。幸运的是,大多数 Linux 发行版(Ubuntu、Redhat、Debian 等)都预装了这个驱动程序。

您需要重建内核以包含 USB CDC 驱动程序的可能性非常小。

当连接到 Linux 计算机时,该产品应在 /dev 目录中显示为串行端口。通常设备的名称将是 ttyACMx或类似名称。该名称可能会有所不同,具体取决于您所使用的 Linux 发行版。

就我而言(运行 Gentoo),我确实必须将 USB CDC ACM 的驱动程序包含到内核中。

插入我的继电器,我可以使用以下命令看到这一点dmesg

[76094.036163] usb 4-1: new full-speed USB device number 4 using uhci_hcd
[76094.618717] usb 4-1: New USB device found, idVendor=2a19, idProduct=0c02
[76094.618722] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[76094.618725] usb 4-1: Product: Numato Lab 8 Channel USB Relay Module
[76094.618728] usb 4-1: Manufacturer: Numato Systems Pvt. Ltd.

运行lsusb我看到ttyACM0出现。但是使用向其发送命令字符串echo -ne 'string' > /dev/ttyACM0没有效果。此外,ls -alof/dev显示这ttyACM0不是字符设备文件。事实上它表明:

-rw-rw-rw- 1 root root 13 Nov 9 09:38 ttyACM0

我需要启用其他驱动程序或模块吗?为什么不ttyACM0显示为字符设备?我发送命令的方式有问题吗ttyACM0

我安装了公司提供的Windows驱动程序后,继电器在Windows上成功运行。我可以使用 PuTTY 向它发送命令,没有任何问题,但我无法找出我在 Linux 上没有做对的地方。

答案1

该设备/dev/ttyACM0是一个虚拟串口。您需要使用终端模拟器来连接它,例如 PuTTY、minicom 或 screen。使用 screen 你会运行类似的东西

screen /dev/ttyACM0 9600

其中 9600 是您的波特率。这将为您提供一个与董事会沟通的交互式会话。

答案2

我确实必须将 USB CDC ACM 的驱动程序包含到内核中

我没有写你是如何实现的,但我遇到了和你一样的问题,那就是Numato 8 通道 USB GPIO 模块,带模拟输入未列出/dev/ttyACM0 我简单地解决了:

sudo apt install linux-modules-extra-raspi

最后,我有 /dev/ttyACM0 可用于读/写。

希望它有助于整合主题。

相关内容