ubuntu中将usb串口设备名称固定

不同USB单一设备的配置

确认设备ID号

在终端输入命令:

lsusb

可以看到类似下面的信息:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 8087:0025 Intel Corp. 
Bus 001 Device 004: ID 0bda:568c Realtek Semiconductor Corp. 
Bus 001 Device 003: ID 0a5c:5834 Broadcom Corp. 
Bus 001 Device 002: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

其中ID xxxx:xxxx 是设备的固定信息,后面是设备的信息描述;
记录好ID信息供下一步使用。

新建设备信息文件

输入 cd /etc/udev/rules.d 进入rules.d目录,新建一个usb_name.rules文件。建议给每个需要固化的设备创建一个单独文件。
例如,有两个usb转485设备:
建立文件485_usb0.rules ,内容:

KERNEL=="ttyUSB*", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0777", SYMLINK+="485_usb0"

建立文件485_usb1.rules ,内容:

KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="485_usb1"

也可以创建成一个文件,485_usb.rules ,内容:

KERNEL=="ttyUSB*", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0777", SYMLINK+="485_usb0"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="485_usb1"

重启生效

重启下udev驱动

分别在终端输入以下命令,要保持一定的时间间隔:

sudo service udev reload
sudo  service udev restart

重新插拔usb生效

以上操作可以封装成脚本文件

脚本文件参考:
文件名:initenv.sh;
赋予文件权限: sudo chmod +x initenv.sh;
文件内容:

echo  'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout",  SYMLINK+="ydlidar"' >/etc/udev/rules.d/ydlidar.rules
echo  'KERNEL=="ttyACM*", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE:="0666", GROUP:="dialout",  SYMLINK+="ydlidar"' >/etc/udev/rules.d/ydlidar-V2.rules
echo  'KERNEL=="ttyUSB*", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0666", GROUP:="dialout",  SYMLINK+="ydlidar"' >/etc/udev/rules.d/ydlidar-2303.rules

service udev reload
sleep 2
service udev restart

当设备的ID已知时,就可以写成固定值。

使用

当打开usb驱动时,就可以使用设定的名称。
例如:
“/dev/485_usb0”
“/dev/485_usb1”
“/dev/ydlidar”

注:查看设备命令

ls /dev/tty* | grep USB
ls /dev/ | grep 485

打不开usb串口

可能原因:权限不够;
查看权限:

ll /dev/tty* | grep USB

修改权限

sudo chmod +777 /dev/ttyUSB*

一转多USB设备或者相同ID号设备

设备类型:

单USB口转多485串口设备

自定义挂载命名方式:

  1. 连接设备至电脑USB口

  2. 运行ls -l /dev/ | grep ttyUSB查看系统检测到的随机分配的串口名,如:

    crwxrwxrwx   1 root dialout 188,   0 5月  21 18:13 ttyUSB0
    crwxrwxrwx   1 root dialout 188,   1 5月  21 18:13 ttyUSB1
    crwxrwxrwx   1 root dialout 188,   2 5月  21 18:13 ttyUSB2
    crwxrwxrwx   1 root dialout 188,   3 5月  21 18:13 ttyUSB3
    

    ttyUSB的后缀数字是随机的,一般范围为0~9,因此对于设备端口的识别并不方便,需要设置自定义的名称方便识别。

  3. 为了区别不同串口之间的区别,方便后续的自定义命名操作,需要知道每个串口的特性信息,比如,根据第2步的信息,可以查看各个口的信息:

    udevadm info --attribute-walk --name=/dev/ttyUSB0 |grep KERNELS可以查看0口的信息,终端会打印出如下信息:

        KERNELS=="ttyUSB3"
        KERNELS=="1-2.2:1.3"
        KERNELS=="1-2.2"
        KERNELS=="1-2"
        KERNELS=="usb1"
        KERNELS=="0000:00:14.0"
        KERNELS=="pci0000:00
    

    通过对比信息中的不同,可以提取出区别与各个串口的KERNELS值,类似的操作有``udevadm info --attribute-walk --name=/dev/ttyUSB0 |grep ATTRS查看其他特性,在找到这些特点后,就可以根据自己想定义的名字,开始.rules`文件了,在本例中,具体内容如下:

    KERNELS=="1-2:1.0", KERNEL=="ttyUSB*", MODE:="0777", SYMLINK+="usb485_ch1"
    KERNELS=="1-2:1.1", KERNEL=="ttyUSB*", MODE:="0777", SYMLINK+="usb485_ch2"
    KERNELS=="1-2:1.2", KERNEL=="ttyUSB*", MODE:="0777", SYMLINK+="usb485_ch3"
    KERNELS=="1-2:1.3", KERNEL=="ttyUSB*", MODE:="0777", SYMLINK+="usb485_ch4"
    

    将文件内容保存并命名为usbto485.rules并保存至/etc/udev/rules.d/目录下

  4. 文件生效与测试

    在终端中运行下面两行命令并将USB口重新拔插即可生效:

    sudo service udev reload

    sudo service udev restart

    测试:

    ls -l /dev/ | grep ttyUSB

    结果打印:

    crwxrwxrwx   1 root dialout 188,   0 5月  21 18:14 ttyUSB0
    crwxrwxrwx   1 root dialout 188,   1 5月  21 18:14 ttyUSB1
    crwxrwxrwx   1 root dialout 188,   2 5月  21 18:14 ttyUSB2
    crwxrwxrwx   1 root dialout 188,   3 5月  21 18:14 ttyUSB3
    crwxrwxrwx   1 root dialout 188,   4 5月  21 18:14 ttyUSB4
    lrwxrwxrwx   1 root root           7 5月  21 18:14 usb485_ch1 -> ttyUSB4
    lrwxrwxrwx   1 root root           7 5月  21 18:14 usb485_ch2 -> ttyUSB1
    lrwxrwxrwx   1 root root           7 5月  21 18:14 usb485_ch3 -> ttyUSB2
    lrwxrwxrwx   1 root root           7 5月  21 18:14 usb485_ch4 -> ttyUSB3
    

    有终端结果可以看到,规则已生效。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值