当前位置:   article > 正文

树莓派(一) 基于UBUNTU系统的USB设备重命名_ttyusb 重命名 树莓派

ttyusb 重命名 树莓派

在linux系统中,usb设备通常以ttyUSB*的方式在系统中挂载,如果同时连接多个usb设备,各个设备难以区分,而且存在读取权限的问题,在每次使用时都要对其进行权限修改,使用起来相当麻烦,因此,需要对usb设备进行命名,根据usb设备的产品号和设备号进行绑定,对于同类产品,可以通过对usb连接口的定义加以区分。

一. 单个USB设备

# 创建udev规则
sudo vim /etc/udev/rule.d/usb_xxx.rules
# 查询usb设备
lsusb
# 规则文件中写入样式
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="5523", MODE:="0777", SYMLINK+="t214driver"

# 注意:lsusb中 xxx:xxx 前者为设备号,后者为产品号

# 查询单个usb 串口的详细信息
# 例如查询 ttyUSB0
udevadm info --attribute-walk --name=/dev/ttyUSB0

service udev reload
service udev restart

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

二. 多USB设备

多个相同设备会出现相同的产品号和相同的设备号,系统就无法与其中的一个设备进行绑定

为了解决多设备问题,可以利用usb串口id进行区分两个设备

例如:执行

udevadm info --attribute-walk --name=/dev/ttyUSB0
  • 1

输出结果:

looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.2/1-5.2:1.0/ttyUSB0/tty/ttyUSB0':
    KERNEL=="ttyUSB0"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.2/1-5.2:1.0/ttyUSB0':
    KERNELS=="ttyUSB0"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="pl2303"
    ATTRS{port_number}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.2/1-5.2:1.0':
    KERNELS=="1-5.2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="pl2303"
    ATTRS{authorized}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{bInterfaceSubClass}=="00"
    ATTRS{bNumEndpoints}=="03"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.2':
    KERNELS=="1-5.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0300"
    ATTRS{bmAttributes}=="80"
    ATTRS{busnum}=="1"
    ATTRS{configuration}==""
    ATTRS{devnum}=="9"
    ATTRS{devpath}=="5.2"
    ATTRS{idProduct}=="2303"
    ATTRS{idVendor}=="067b"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Prolific Technology Inc."
    ATTRS{maxchild}=="0"
    ATTRS{product}=="USB-Serial Controller"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{speed}=="12"
    ATTRS{urbnum}=="457"
    ATTRS{version}==" 1.10"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
ATTRS{devpath}=="5.2"
# 代表五个usb的hub, 该设备插接在第二个usb接口上
  • 1
  • 2

所以, 可以将devpath 属性作为区分每个设备的关键词

多个相同设备可以这样写rule文件

KERNEL=="ttyUSB*", ATTRS{devpath}=="5.2", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777",SYMLINK+="usb_dev_0"
KERNEL=="ttyUSB*", ATTRS{devpath}=="5.1", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777",SYMLINK+="usb_dev_1"

  • 1
  • 2
  • 3

在读取usb设备时可以应用绑定的名称进行读取,设备名称可以自己定义,

/dev/usb_dev_0
/dev/usb_dev_1
  • 1
  • 2

usb_rule设置完成后保存文件,更新设备

service udev reload
service udev restart
  • 1
  • 2

可以在/dev/中看到新定义的设备,设备名称为上文中自定义的设备名

enjoy!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/211386?site
推荐阅读
相关标签
  

闽ICP备14008679号