zbox 查看端口文件_Linux使用udev绑定ttyUSB端口

我们当我们在ARM Linux上面使用4G模块的时候,是使用ttyUSB进行ppp拨号,从而联网,一般情况下,我们只有一个4G模块,我么可以通过命令 #ls /dev/ttyUSB* 来查看4G模块通过USB虚拟出来的串口,一般的4G模块也是通过ttyUSB2来进行拨号,所以我们在ppp的拨号脚本里面也会直接写入ttyUSB2。当我们的设备只有一个4G模块且不会出现其他USB转串口的设备的时候,使用传统方法没有任何问题,但是假如设备接入了两个4G模块或者接入了CH340等其他USB转串口的模块,这个时候ttyUSB*的顺序就是由内核的加载顺序来确定了,而且有很大可能每次启动ttyUSB端口都会发生变化,这样就乱套了,没法拨号也没法使用USB转串口通信。针对以上出现的问题,我们就需要使用udev规则来绑定或者说软连接我们的ttyUSB端口。我们只需要指定一个规则来绑定我们的端口并建立软连接,这样我们需要的端口号就固定下来了,即使有很多的USB转串口设备,我们也能轻松应对。udev绑定usb端口,可以根据vid和pid来进行绑定,比如ME3630 EC20 CH340这些模块的VID和PID不同,我们就可以根据其差异来绑定对应的端口,但是接入多个同样的USB设备,这种方法就不能胜任了。还可以根据硬件端口号来绑定设备,硬件端口号是唯一的,所以这种方法是可以绑定指定的端口号的。 所有制定的udev 规则最终 会在 /etc/ udev /rule.d 这个文件夹下面,我们新建规则,只需要在这个文件夹下面新建对应的规则文件即可。以我们的rpad-imx6来说,我们先看一下绑定规则的步骤
新建一个规则文件touch /etc/udev/rules.d/rpad-imx6-usb.rules向规则文件里面写入规则echo 'KERNEL=="ttyUSB*", KERNELS=="1-1.3:1.2", MODE:="0777", GROUP:="dialout", SYMLINK+="ttyLTE0"' >> /etc/udev/rules.d/rpad-imx6-usb.rulesecho 'KERNEL=="ttyUSB*", KERNELS=="1-1.3:1.3", MODE:="0777", GROUP:="dialout", SYMLINK+="ttyLTE1"' >> /etc/udev/rules.d/rpad-imx6-usb.rulesecho 'KERNEL=="ttyUSB*", KERNELS=="1-1.3:1.4", MODE:="0777", GROUP:="dialout", SYMLINK+="ttyLTE2"' >> /etc/udev/rules.d/rpad-imx6-usb.rules
从代码中看出我们向规则文件里面添加了对于的规则,我们挑取一行来分析下:KERNEL=="ttyUSB*", KERNELS=="1-1.3:1.2", MODE:="0777", GROUP:="dialout", SYMLINK+="ttyLTE0"第一句 ttyUSB* 表示我们需要绑定的端口,第二句 KERNELS=="1-1.3:1.2"表示的是硬件端口号,SYMLINK+="ttyLTE0" 表示我们绑定后的端口号,那么在这里我们重点需要注意的是第二句,这里的硬件端口号如何获取,首先确保USB设备已经正确连接至设备上,然后使用 lsusb 命令查看下
root@rpad_imx6:~# lsusbBus 001 Device 005: ID 2c7c:6026 Quectel Wireless Solutions Co., Ltd. Bus 001 Device 003: ID 2318:2808 Shining Technologies, Inc. [hex] Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. HubBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
我们这里可以看到移远的4G模块已经接入,然后查看下ttyUSB端口是否存在
root@rpad_imx6:~# ls /dev/ttyUSB*/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2
然后通过以下命令查看usb端口的具体信息,我们只需要修改后面的设备名即可,这里我们查看下ttyUSB0的信息
udevadm info --attribute-walk --name=/dev/ttyUSB0root@rpad_imx6:~# udevadm info --attribute-walk --name=/dev/ttyUSB0Udevadm info starts with the device specified by the devpath and thenwalks up the chain of parent devices. It prints for every devicefound, all possible attributes in the udev rules key format.A rule to match, can be composed by the attributes of the deviceand the attributes from one single parent device.  looking at device '/devices/platform/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.3/1-1.3:1.2/ttyUSB0/tty/ttyUSB0':    KERNEL=="ttyUSB0"    SUBSYSTEM=="tty"    DRIVER==""  looking at parent device '/devices/platform/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.3/1-1.3:1.2/ttyUSB0':    KERNELS=="ttyUSB0"    SUBSYSTEMS=="usb-serial"    DRIVERS=="option1"    ATTRS{port_number}=="0"  looking at parent device '/devices/platform/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.3/1-1.3:1.2':    KERNELS=="1-1.3:1.2"    SUBSYSTEMS=="usb"    DRIVERS=="option"    ATTRS{bAlternateSetting}==" 0"    ATTRS{bInterfaceClass}=="ff"    ATTRS{bInterfaceNumber}=="02"    ATTRS{bInterfaceProtocol}=="00"    ATTRS{bInterfaceSubClass}=="00"    ATTRS{bNumEndpoints}=="02"    ATTRS{interface}=="Mobile Diag Interface"    ATTRS{supports_autosuspend}=="1"      ...
多的内容我们不看,我们只抓重要的一句第22行,KERNELS=="1-1.3:1.2",这句话就是我们在前面绑定端口的时候使用到的,我们只需要依次获取ttyUSB1好ttyUSB2的端口的硬件端口,然后把规则写入到指定文件即可。然后重启udev和重新接入usb设备
root@rpad_imx6:~# /etc/init.d/udev restart
然后使用以下命令查看绑定是否成功
root@rpad_imx6:~# ls -l /dev |grep ttyUSBlrwxrwxrwx 1 root root           7 Jun 27 14:32 ttyLTE0 -> ttyUSB0lrwxrwxrwx 1 root root           7 Jun 27 14:32 ttyLTE1 -> ttyUSB1lrwxrwxrwx 1 root root           7 Jun 27 14:32 ttyLTE2 -> ttyUSB2
出现上面的输出表示绑定成功。总结起来就有以下步骤1,检查USB连接并且确定每一个ttyUSB端口对于哪个设备2,获取ttyUSB端口的信息找到硬件端口3,新建udev规则文件并根据硬件端口写入规则4,重新连接USB和重启udev查看绑定是否成功这里最重要的步骤也就是获取对应的硬件端口,其余部分都是重复步骤,基本都是通用的命令。

a8df63594542e447b715d7a06bdee91c.png

d97dc876984cb8e291fa22473e5623dd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值