【问题标题】:Generic usb-serial device continuously gives 1`通用 USB 串行设备连续给出 1`
【发布时间】:2015-09-28 20:42:32
【问题描述】:

我正在尝试通过其在 Linux (pdf) 中的虚拟 COM 驱动程序 (VCD) 与 Di245 通信,但遇到了一个奇怪的问题。在内部,此设备 (FT232BL) 使用 FTDI 芯片组。

自行附加设备未注册为 VCD,因此我执行以下操作:

sudo modprobe usbserial vendor=0x0683 product=0x2450

这会导致以下dmesg 消息:

usbserial: USB Serial support registered for generic
usbserial_generic 3-3:1.0: The "generic" usb-serial driver is only for testing and one-off prototypes.
usbserial_generic 3-3:1.0: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
usbserial_generic 3-3:1.0: generic converter detected
usb 3-3: generic converter now attached to ttyUSB0

我得到了/dev/ttyUSB0 的承诺。到目前为止,一切似乎都很好。

但是,如果我在代码中打开端口,我会从中得到一堆 1`(交替出现 1`)。尝试screen

screen /dev/ttyUSB0 115200

我不断收到1`。这绝对不是设备发送的东西,而且奇怪的是,如果我设置一个随机波特率,我会一直得到同样的东西。

这是报告错误的一种方式吗?什么可能触发了这种行为,我该如何解决?

【问题讨论】:

    标签: linux serial-port ftdi


    【解决方案1】:

    解决方案如下:

    # modprobe usbserial vendor=0x0683 product=0x2450
    # modprobe ftdi_sio
    # echo "0683 2450" >> /sys/bus/usb-serial/drivers/ftdi_sio/new_id
    

    这样,ftdi_sio 驱动程序就知道要为哪个供应商/产品提供 VCD。以下 udev 规则(例如,99-di245.rules)可以自动执行此操作:

    ACTION=="add", ATTRS{idVendor}=="0683", ATTRS{idProduct}=="2450", RUN+="/sbin/modprobe ftdi_sio" RUN+="/sbin/modprobe usbserial vendor=0x0683 product=0x2450" RUN+="/bin/sh -c 'echo 0683 2450 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"
    

    安装有:

    $ sudo cp 99-di245.rules /etc/udev/rules.d
    $ sudo udevadm control --reload
    

    【讨论】:

    • Here 显示了一个 udev 规则来自动执行此操作。
    • @PeterPablo,谢谢,我已经把它放在了 init.d 脚​​本中,但是 udev 规则显然更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多