编写udev规则

我们通常会使用udev规则来区分不同的设备,比如机器人的串口设备。 通常我们用到的串口ic有一下几种:

  • FT232RL
  • CH340G / C / E
  • CP2102

基本步骤

这里我们以CP2102串口芯片的信息作为例子

  • 将串口设备插入计算机(Ubuntu环境)

通过命令:

ls /dev/ttyUSB*

可以查看到所有串口设备(/dev/ttyUSB0)

  • 记录设备的识别ID

打开新的终端,输入命令:

udevadm info -a /dev/ttyUSB0

找到ATTRS{idVendor}==“10c4

找到ATTRS{idProduct}==“ea60

  • 编写udev规则文件,给该设备起一个名字:imu_tianBot_dev

KERNEL==“ttyUSB*”, ATTRS{idVendor}==“10c4”, ATTRS{idProduct}==“ea60”, ATTRS{product}==“IMU Sensor for tianBot”, MODE:=“0666”, GROUP:=“dialout”, SYMLINK+=“imu_tianBot_dev

  • 把编写好的udev规则文件配置到系统中并使其启用

拷贝udev规则文件到/etc/udev/rules.d/文件夹中

sudo cp ./mx_sensor.rules  /etc/udev/rules.d

重启udev规则

sudo service udev reload
sudo service udev restart

udev的样例

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{product}=="IMU Sensor for tianBot", MODE:="0666", GROUP:="dialout",  SYMLINK+="imu_tianBot_dev"

附录

查看udev可用规则

udevadm info -a /dev/ttyUSB*

CH340系列udev规则

KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{bcdDevice}=="0254", MODE:="0666", GROUP:="dialout", SYMLINK+="CH340G"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{bcdDevice}=="0260", MODE:="0666", GROUP:="dialout", SYMLINK+="CH340C"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{bcdDevice}=="0262", MODE:="0666", GROUP:="dialout", SYMLINK+="CH340E"

脚本安装udev规则

echo "start copy mx_sensor.rules to  /etc/udev/rules.d/"
sudo cp ./_udev_/mx_sensor.rules  /etc/udev/rules.d
echo " "
echo "Restarting udev"
echo ""
sudo service udev reload
sudo service udev restart
echo "finish "
echo "BY Maxwell AT:2017.10.16"

阳光明媚 备 2018.04.12日

打印/导出