USB 转串口设备不会分配 CP210x 驱动程序

USB 转串口设备不会分配 CP210x 驱动程序

我在 RPi2 上运行 Jessie Lite。当我将 USB 连接到串行设备时,它确实会显示,但未分配驱动程序。

lsusb -t

/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 3: Dev 13, If 0, Class=Vendor Specific Class, Driver=, 12M

来自 Silicon Labs 的 CP210x 驱动程序似乎已安装:

lsmod

Module                  Size  Used by
cp210x                  9419  0 
usbserial              29964  1 cp210x

现在我尝试手动绑定但没有成功:

echo -n "1-1.3:1.0" > /sys/bus/usb/drivers/cp210x/bind

write error: No such device

由于我对 Linux 相当陌生,并且我需要运行它,因此我将不胜感激您的建议。旁注:我有一个在 Windows 机器上运行的小 Python 脚本,它能够很好地与该设备通信......

该设备就在那里,我不明白为什么没有找到它:

tree /sys/bus/usb/devices/

├── 1-1.3 -> ../../../devices/platform/soc/20980000.usb/usb1/1-1/1-1.3
├── 1-1.3:1.0 -> ../../../devices/platform/soc/20980000.usb/usb1/1-1/1-1.3/1-1.3:1.0

附加信息可能usb-devices有助于发现问题吗?

T:  Bus=01 Lev=02 Prnt=02 Port=04 Cnt=02 Dev#=  6 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=18ef ProdID=e030 Rev=01.00
S:  Manufacturer=Silicon Labs
S:  Product=ALC 8500 Expert
S:  SerialNumber=3ENAEFJAVJCO9AQQ
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)

答案1

向 udev 添加一条规则,自动加载 USB 设备的驱动程序。

所需资料:

  • USB 设备 PID/VID 号。lsusb输出。不以树模式显示。 lsusb -t
  • 设备驱动程序modprobe命令。/sbin/modprobe usb-storage

创建 udev 规则

在下面添加您自己的规则文件/etc/udev/rules.d

sudo vi /etc/udev/rules.d/80-serialToUsb_VID-PID.rules

当您添加 udev 规则时。这将允许 udev 在 USB 插入时自动加载任何列出了 vid/pid 的设备的驱动程序。

  • 代替#视频#与您设备的 VID。
  • 代替#PID#与您设备的 PID。
  • 代替#司机#使用加载模块的命令。
  • 代替#系统#new_id以及该目录下驱动程序文件的位置/sys

ACTION=="add", ATTRS{idVendor}=="#VID#", ATTRS{idProduct}=="#PID#", RUN+="#DRIVER#" RUN+="/bin/sh -c 'echo #VID# #PID# > #SYS#'"

重新启动udev

sudo /etc/init.d/udev restart

连接设备并用于dmesg验证


这是我用于自定义 mp3 播放器的示例。

ACTION=="add", ATTRS{idVendor}=="a000", ATTRS{idProduct}=="a000", RUN+="/sbin/modprobe usb-storage" RUN+="/bin/sh -c 'echo a000 a000 > /sys/bus/usb/drivers/usb-storage/new_id'"

还有一个自定义 Silicon Labs 串口转 USB 设备的示例:

ACTION=="add", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="84a0", RUN+="/usr/sbin/modprobe cp210x" RUN+="/bin/sh -c 'echo 10c4 84a0 > /sys/bus/usb-serial/drivers/cp210x/new_id'"

这适用于 Debian 8 和 Ubuntu 14。

您正在使用 Debian lite。所以,我不能 100% 确定这对你有用。

我有一个飞思卡尔嵌入式设备 mx23,它使用mdev代替udev,过程有点不同。

相关内容