当前位置: 首页 > news >正文

【Ubuntu设备端口绑定】

目录

  • 查看设备
  • 绑定步骤
  • 规则文件语法简介
  • 相同ID号设备绑定

查看设备

通过插拔设备,找到要绑定设备的ID号和设备号。
设备ID查看 lsusb
设备号查看 ll /dev/
查看绑定USB设备 ll /dev | grep ttyUSB*

绑定步骤

将绑定规则【*.rules】文件放在根目录的/etc/udev/rules.d 目录下。

  1. 进入rules.d目录下
    cd /etc/udev/rules.d/
  2. 新建一个【usb.rules】文件并编辑
    sudo vim usb.rules
  3. 写入以下内容
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar"
  1. 保存退出,使规则生效,主控上执行:
    sudo udevadm control --reload-rules && sudo udevadm trigger
  2. 查看绑定成功与否
    ll /dev | grep ttyUSB*

规则文件语法简介

KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar"

解析:

KERNEL          # 匹配事件的设备名
ATTR{filename}  # 匹配事件设备的sysfs属性。
idVendor        # 生产商编号
idProduct       # 产品号
SYMLINK         # 为/dev/下的设备文件产生符号链接。就是给这个设备取一个别名。
MODE            # 为设备设定权限。

看到PCB的设备号是【ttyUSB0】容易跳变,ID号是【1a86,7523】固定不变,【ttyUSB*】代表无论以后该设备号变成【ttyUSB】后面跟着【0、1、2、3、4、…】都绑定为【myserial】;雷达设备【ttyUSB1】同理;需要绑定其他设备也同理。

注意:取别名的时候,不要取一些系统已经存在的设备名,否则会失败。

相同ID号设备绑定

有两款及以上的相同ID的设备,上述的绑定就会出现混乱。

  1. 先查看ttyUSB0对应的设备:
    ll /dev | grep ttyUSB*
  2. 查看USB端口号
    udevadm info --attribute-walk --name=/dev/ttyUSB0 | grep devpath
  3. 在rules文件里修改规则
# 修改前:
# KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial"    
# 修改后:
KERNEL=="ttyUSB*", ATTRS{devpath}=="2.4",  ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial" 

新增了, ATTRS{devpath}=="2.4"
4. 保存退出,使规则生效
sudo udevadm control --reload-rules && sudo udevadm trigger

相关文章:

  • 电机控制常见面面试问题(十九)
  • 单链表结点删除
  • PostgreSQL:索引与查询优化
  • 蓝桥杯 整数变换
  • 深入理解 Git Stash:功能、用法与实战示例
  • 第一次程序Hello Python
  • 【数据结构】C语言实现树和森林的遍历
  • WPF x:Static与StaticResource
  • 基于 Hydrus 软件的土壤水、热、盐及污染物迁移模型与案例分析
  • [图形学]在半球面上按照微表面模型采样
  • 《深入探索 C++对象模型》-- 对象实例直接访问成员 VS 通过指针或引用访问成员 P99扩展解释
  • 科技赋能|ZGIS综合管网智能管理平台守护地下城市生命线
  • Nginx目录结构
  • Mininet--moduledeps.py源码解析
  • 为何服务器监听异常?
  • Next Route Handlers的使用
  • 树莓派开发(一):烧录系统,设置SSH远程登录,用摄像头拍照
  • Nginx反向代理及负载均衡
  • 精选10个好用的WordPress免费主题
  • 代码随想录第55期训练营第十一天|LeetCode150.逆波兰表达式求值、239.滑动窗口最大值、347.前K个高频元素
  • wordpress模板 多梦/手机优化大师官网
  • 随州北京网站建设/惠州seo优化服务
  • 长春百度网站排名优化/男生最喜欢的浏览器
  • 建网站怎么做/品牌宣传文案范文
  • 手机网站制作教程/自己怎么开电商平台
  • 长沙做门户网站的公司/微信群推广