解决ubuntu16.04中ttyUSB设备节点不固定问题

这两天在ubuntu中开发跟串口有关程序时,发现来回拔插串口线或者插多个串口线时总是出现串口号ttyUSB*不固定的问题, 给应用程序带来不少麻烦,遂google解决。

linux中设备号一般按先后顺序一次向后增大,udev规则文件可以解决这个蛋疼的问题。udev是一种Linux2.6内核采用的/dev 目录的管理系统(可以把它认为是windows中的设备管理器),它通过从sysfs获得的信息,可以提供对特定设备的固定的设备名。sysfs是linux 2.6内核的一种新型文件系统,它提供了当前设备的基本信息。

udev的重要功能就是为为设备提供固定的设备名, 根据Wirting udev rules的详细介绍, udev有如下功能:

 

  • Rename a device node from the default name to something else
  • Provide an alternative/persistent name for a device node by creating a symbolic link to the default device node
  • Name a device node based on the output of a program
  • Change permissions and ownership of a device node
  • Launch a script when a device node is created or deleted (typically when a device is attached or unplugged)
  • Rename network interfaces

简单阅读之后创建文件/etc/udev/rules.d/10-local.rule, 内容如下

 

 

[html] view plain copy

  1. <span style="white-space:pre;"> </span>KERNEL=="ttyUSB*", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0777", SYMLINK+="user_uart"  
  2. <span style="white-space:pre;"> </span>KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="mcu_uart"  

意思就是匹配sys中内核名为ttyUSB*的设备,属性匹配依据生产商编号idVendor和产品号idProduct, 设定读写权限为0777, 符号链接名为user_uart-----PL2303串口转USB, mcu_uart----CH340串口转USB。

idVendor和idProduct由 lsusb  -vvv 命令查看。

保存退出后udev规则就生效了,重新拔插两个串口设备,就可以看到/dev/user_uart指向/dev/ttyUSB0,  /dev/mcu_uart指向/dev/ttyUSB1. 这样以来,我只要在程序里打开/dev/user_uart或/dev/mcu_uart就可以一直准确的打开指定的串口设备了。

PS:如果您的两个串口用的都是PL2303或者都是CH340/CP2102,那就真的无能为力了。。。

常用的匹配类型:

* BUS:匹配总路类型,比如PCI USB等  

  * KERNEL:- 匹配Kernel设备名,比如hda hdb. 

* DRIVER :- 匹配Kernel的驱动程序名   

* SUBSYSTEM: - 匹配子系统名。   

* ID :- 匹配总路系统的ID (e.g. PCI bus ID)。

* PLACE :- 匹配物理位置  (对USB很有用)

资料链接:

http://www.cnblogs.com/ynxf/p/6379449.html

http://biancheng.dnbcw.net/linux/295328.html

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值