1.USB的VID和PID号
USB(UniversalSerialBUS,通用串行总线)合同规定redflag linux,所有的USB设备都有VID(VendorID,供应商辨识码)和PID(ProductID,产品辨识码)。VID由供应商向USB-IF(ImplementersForum,应用者峰会)申请。每位供应商的VID是惟一的,PID由供应商自行决定。主机通过VID和PID来辨识不同设备,按照它们(以及设备的版本号),可以给设备加载或安装相应的驱动程序。VID和PID的宽度都是两个字节的。
了解到VID和PID在一般情况下有两种储存方法,第一种是主控生产商的VID和PID,储存在主控的bootcode中;第二种是设备生产商的VID和PID,该VID和PID储存在主控外部的非易失性储存设备中(EEPROM或Flash)的设备固件中。当USB设备联接主机时,假若固件中有设备生产商的VID和PID,会将该VID和PID报告给主机,而忽视主控生产商的VID和PID。所以理论上一个USB储存设备的VID应当是设备生产商的VID,而不是主控生产商的VID,这两个VID应当是不同的(主控生产商自己生产的设备除外)。
因为VID和PID重复并不会对产品的使用带来严重影响,好多USB设备生产商(山寨厂居多)为了便捷,并不会向USB执行峰会申请自己的VID,而是仍然沿袭主控生产商的VID或随意向产品写入VID和PID;同时,正规厂家只须要申请VID,PID由厂家自行确定,所以存在相同机型的产品,可能采用了不同的主控(商业须要,很正常),而她们的PID是一样的。基于上述缘由,通过VID和PID就不能确切辨识USB设备的主控机型,提醒你们在使用USB设备的过程中须要注意这个问题。
2.usb转并口驱动加载命令sudo/sbin/modprobeftdi_sio2.1.modprobe命令2.1.1.linux中的modules模块
参考:【Linux】Linux基础知识(Linux模块)。
2.1.2.modprobe命令含意2.2.ftdi_sio模块
│ Symbol: USB_SERIAL_FTDI_SIO [=n] │
│ Type : tristate │
│ Prompt: USB FTDI Single Port Serial Driver │
│ Defined at drivers/usb/serial/Kconfig:153 │
│ Depends on: USB_SUPPORT [=y] && USB_SERIAL [=y] │
│ Location: │
│ -> Device Drivers │
│ -> USB support (USB_SUPPORT [=y]) │
│ -> USB Serial Converter support (USB_SERIAL [=y])
2.3.命令总结2.3.1.命令含意
按照前面的解释,sudo/sbin/modprobeftdi_sio命令就是加载ftdi_sio这个USB转并口驱动模块到内核中linux通配符,这样就能使用RS232的USB转并口设备。
2.3.2.加载驱动模块同时挂载usb转并口设备
参考:Ubuntu下BeagleBone的USB并口驱动安装(转)
sudo modprobe ftdi_sio vendor=0x0403 product=0xa6d0
输入lsmod查看,可以检测设备有没有挂载上。
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface",
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d0",
DRIVER=="", RUN+="/sbin/modprobe -b ftdi_sio"
ACTION=="add", SUBSYSTEM=="drivers",
ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio",
ATTR{new_id}="0403 a6d0"
ACTION=="add", KERNEL=="ttyUSB*", ATTRS{interface}=="BeagleBone",
ATTRS{bInterfaceNumber}=="00", SYMLINK+="beaglebone-jtag"
ACTION=="add", KERNEL=="ttyUSB*", ATTRS{interface}=="BeagleBone",
ATTRS{bInterfaceNumber}=="01", SYMLINK+="beaglebone-serial"
在ubuntu下进行联接linux 安装usb转串口驱动,正常情况下会形成/dev/ttyUSB0和ttyUSB1两个设备。
注意:在/etc/udev/rules.d/目录中创建或编辑.rules文件后,勿必使用以下命令重新加载.rules文件:
sudo udevadm control --reload
2.4.xsens的MTI-680难以辨识并口问题解决
输入的两句命令如下:
sudo /sbin/modprobe ftdi_sio
echo 2639 0301 | sudo tee /sys/bus/usb-serial/drivers/ftdi_sio/new_id
现今对命令进行剖析:
第一句命令很简单linux 安装usb转串口驱动,就是加载ftdi_sio模块,即ftdi公司的usb转并口驱动模块
第二句命令是和usb挂载相关的,就是申明要挂载的usb设备VID=0x2639,PID=0x0301。这样插入usb的时侯才会辨识这个设备。
注意:
解决Linux下USB设备节点ttyUSB名不固定的问题,生成固定USB转并口设备节点
Linux下/dev和/sys/class的区别