Ubuntu配置Udev规则固定设备口

谨以文章记录Debug过程,以下信息难免有误,仅供参考
笔者的案例为配置激光雷达以及TeensyBoard3.2串口通信

一、查看自己的设备

1. 查看当前的串口设备

lsusb

[可选]查看所有的tty设备

ll /dev/tty*

[可选]查看更详细的信息

lsusb -vvv

[可选]查看雷达在系统中挂载的实际挂载情况

ls -l /dev

ls -l /dev/tty*

一般雷达以/dev/ttyUSB0的身份挂载

2. 拔掉自己的设备,再次查看当前的串口设备

lsusb

确定消失的即是所要设置的自己的串口设备
并确定这个设备的idVendor与idProduct(后文将会提到)
在这里插入图片描述

二、设置Udev规则

Udev全称可以认为是UserDevice
Udev规则用于配置外设

1. 进入系统的Udev文件夹

cd /etc/udev/rules.d

2. 建立一个新的规则文件

sudo touch new_device_udev_rules.rules
sudo gedit new_device_udev_rules.rules

修改内容为:

KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0777", SYMLINK+="device_name"

内核设备名称、子系统、设备的VID、设备的PID、权限模式和符号链接

① KERNEL与SUBSYSTEMS

KERNEL中的ttyUSB*
usb设备通常默认为上述参数,特定的设备可能有独特的参数要求
通常 SUBSYSTEMS==“usb”,可以不写,如设备另有要求需要特殊设置

② ATTRS{idVendor}与ATTRS{idProduct}

在这里插入图片描述
以上图为例 0e0f为idVendor 0002为idProduct
ATTRS{idVendor}可通过lsvvv

③ MODE

MODE代表设备的权限, 0777为设置最高权限
此处可以设置为 MODE:=“0777”

④ SYMLINK

SYMLINK中device_name对应的是自己命名的设备名称
将以/dev/device_name的名称被你应用

注:某些电子设备已经配置好了自己的udev文件,比如Teensy,可以在电子设备对应的网站上查找
注:某些设备可能需要设置更多参数

三、加载并重启Udev规则

1. 拔掉要固定的设备,并执行如下命令

sudo service udev reload
sudo service udev restart

or

udevadm control --reload-rules && udevadm trigger

2. 重新插上要固定的设备

ls /dev/device_name

3. 查看是否配置成功

如反馈

/dev/device_name

则说明配置成功

权限

了解权限

如果要了解雷达权限,使用如下命令:

ls -l /dev/tty*

一般雷达以/dev/ttyUSB0的身份挂载

设置权限

将雷达权限设置为crwxrwxrwx,即在任何用户情况下,可读可写可执行

sudo chmod 777 /dev/ttyUSB0

chmod命令相关参考菜鸟教程chmod

### 如何在 Ubuntu 系统中为摄像头设置固定的设备名称 为了确保每次启动时都能识别并分配相同的设备名给特定的 USB 设备,可以通过 udev 规则来实现这一目标。具体方法如下: #### 创建 UDEV 规则文件 进入 `/etc/udev/rules.d` 目录下新建一个规则文件,比如命名为 `99-webcam.rules`。 ```bash sudo nano /etc/udev/rules.d/99-webcam.rules ``` #### 获取设备属性 使用命令获取所需配置的信息,例如通过以下方式查看当前已连接的所有USB视频类设备及其属性: ```bash for i in /sys/class/video4linux/*; do echo "$(basename $i): $(cat $i/name)"; done lsusb -v | grep -A 5 "Interface Descriptor" ``` 这些信息有助于编写更精确匹配条件的UDEV规则[^1]。 #### 编写规则内容 假设要将某个品牌型号的网络摄像机始终挂载为 `/dev/camera0` ,可以依据上述查询到的独特标识符(如 ID_MODEL 或者其他唯一字段),编辑刚才创建好的 `.rules` 文件加入类似下面的一行或多行定义语句: ```bash SUBSYSTEM=="video4linux", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", SYMLINK+="camera0" ``` 其中 xxxx 和 yyyy 是具体的 Vendor ID 和 Product ID 。如果不确定这两个值,则可以在前面提到过的 lsusb 输出里找到对应的条目。 保存退出后使新规则生效: ```bash sudo udevadm control --reload-rules && sudo udevadm trigger ``` 此时再插拔一次摄像头硬件应该就能看到它被赋予了预期中的路径节点名称了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值