树莓派设备端口号绑定
1、查看USB设备信息
使用lsusb
bruce@bruce -desktop:~$
bruce@bruce -desktop:~$ lsusb
Bus 001 Device 006 : ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 004 : ID 0513 :0318 digital-X, Inc.
Bus 001 Device 007 : ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 005 : ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 008: ID 0424 :7800 Standard Microsystems Corp.
Bus 001 Device 003 : ID 0424 :2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002 : ID 0424 :2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001 : ID 1d6b:0002 Linux Foundation 2.0 root hub
bruce@bruce -desktop:~$
会看到这三个我插入的USB设备,PL2302设备的 ID 是相同的,340 设备又是 另一个 ID。
Bus 001 Device 006 : ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 007 : ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 005 : ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
2、无论是ID相同的设备,还是ID不同的设备,都在下面这个文件中进行配置
打开文件:
sudo nano /etc/udev/rules.d/99 -com.rules
3、固定 相同ID设备的 端口号
3.1 查询具体信息
ls -l /sys/class/tty
通过热插拔,来确定那个设备 对应哪个 USB端口
lrwxrwxrwx 1 root root 0 8 月 18 08:52 ttyUSB0 -> ../../devices/platform/soc/3f980000.usb/usb1/1 -1 /1 -1.1 /1 -1.1 .2 /1 -1.1 .2 :1.0 /ttyUSB0/tty/ttyUSB0
lrwxrwxrwx 1 root root 0 8 月 18 08:52 ttyUSB1 -> ../../devices/platform/soc/3f980000.usb/usb1/1 -1 /1 -1.3 /1 -1.3 :1.0 /ttyUSB1/tty/ttyUSB1
bruce@bruce -desktop:~$
3.2 将下面设置,写到 /etc/udev/rules.d/99 -com.rules 文件中
KERNEL=="ttyUSB*" ,KERNELS=="1-1.1" ,MODE:="0777" ,SYMLINK+="serial_one"
KERNEL=="ttyUSB*" ,KERNELS=="1-1.3" ,MODE:="0777" ,SYMLINK+="serial_zero"
3.3 然后可以通过命令查看是否配置完成:ls -l /dev/serial*
其中 serial 是自己定义的。
bruce@bruce -desktop:~$
bruce@bruce -desktop:~$ ls -l /dev/serial*
lrwxrwxrwx 1 root root 7 1 月 28 2018 /dev/serial_one -> ttyUSB0
lrwxrwxrwx 1 root root 7 1 月 28 2018 /dev/serial_zero -> ttyUSB1
4、固定不同ID设备的端口号(其实,ID无论同与不同,都可以用下面这个方法)
4.1 首先通过 热插拔 确定是哪个 USB*
然后通过命令:udevadm info /dev/ttyUSB2
找到这个地址:E: ID_PATH=platform-3f980000.usb-usb-0 :1.1 .3 :1.0
bruce@bruce -desktop:~$
bruce@bruce -desktop:~$
bruce@bruce -desktop:~$ udevadm info /dev/ttyUSB2
P: /devices/platform/soc/3f980000.usb/usb1/1 -1 /1 -1.1 /1 -1.1 .3 /1 -1.1 .3 :1.0 /ttyUSB2/tty/ttyUSB2
N: ttyUSB2
S: serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
S: serial/by-path/platform-3f980000.usb-usb-0 :1.1 .3 :1.0 -port0
S: serial_one
E: DEVLINKS=/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 /dev/serial_one /dev/serial/by-path/platform-3f980000.usb-usb-0 :1.1 .3 :1.0 -port0
E: DEVNAME=/dev/ttyUSB2
E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1 -1 /1 -1.1 /1 -1.1 .3 /1 -1.1 .3 :1.0 /ttyUSB2/tty/ttyUSB2
E: ID_BUS=usb
E: ID_MM_CANDIDATE=1
E: ID_MODEL=USB-Serial_Controller
E: ID_MODEL_ENC=USB-Serial\x20Controller
E: ID_MODEL_FROM_DATABASE=PL2303 Serial Port
E: ID_MODEL_ID=2303
E: ID_PATH=platform-3f980000.usb-usb-0 :1.1 .3 :1.0
E: ID_PATH_TAG=platform-3f980000_usb-usb-0_1_1_3_1_0
E: ID_REVISION=0300
E: ID_SERIAL=Prolific_Technology_Inc._USB-Serial_Controller
E: ID_TYPE=generic
E: ID_USB_DRIVER=pl2303
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Prolific_Technology_Inc.
E: ID_VENDOR_ENC=Prolific\x20Technology\x20Inc.
E: ID_VENDOR_FROM_DATABASE=Prolific Technology, Inc.
E: ID_VENDOR_ID=067b
E: MAJOR=188
E: MINOR=2
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=13043364
E: net.ifnames=0
bruce@bruce -desktop:~$
4.2 根据:E: ID_PATH=platform-3f980000.usb-usb-0 :1.1 .2 :1.0
在 /etc/udev/rules.d/99 -com.rules 文件中写入:
SUBSYSTEM=="tty" ,ENV{ID_PATH}=="platform-3f980000.usb-usb-0:1.1.2:1.0" ,MODE:="0777" ,SYMLINK+="serial_two"
4.3 然后可以通过命令查看是否配置完成:ls -l /dev/serial*
其中 serial 是自己定义的。
bruce@bruce -desktop:~$
bruce@bruce -desktop:~$ ls -l /dev/serial*
lrwxrwxrwx 1 root root 7 1 月 28 2018 /dev/serial_two -> ttyUSB2
5、总结:
使用到的命令:
1 、lsusb
2 、sudo nano /etc/udev/rules.d/99 -com.rules
3 、ls -l /sys/class/tty
4 、udevadm info /dev/ttyUSB0
5 、ls -l /dev/serial*
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构