ubuntu 下为相同USB设备绑定不同的设备名(针对CP2102)

本文介绍在Ubuntu系统中如何通过创建udev规则文件来绑定USB串口设备,确保即使设备插拔,其端口号也保持不变。首先,通过lsusb命令获取设备ID,然后编辑/etc/udev/rules.d/下的规则文件,指定设备的vendor ID和product ID,最后通过设置设备别名实现唯一标识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ubuntu下使用串口的时候,为了防止插拔usb后端口号发生变化,需要绑定设备名(对USB挂载设备映射)。

 

绑定的步骤分为3步

1. 获取待绑定的USB设备的ID号码

$ lsusb

在终端中输入上述命令,来获取下ID

如果想要获取更详细的数据,可以使用:

 udevadm info -a -n /dev/ttyUSB*

 

2. 创建对应的规则文件

$ sudo gedit /etc/udev/rules.d/usb.rules

3. 将ID替换,为自己的设备起名,保存。

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="dji" 

红色是ID号码(需要替换),蓝色是新起的设备名。

重新插上设备,输入绑定的别名,就可以看到自己的设备了。

$ ls /dev/dji

 

因为同一类型的设备ID是一致的,所以这种方法就失效了。

我们为了标示设备,就需要连接器件进行修改。

以CP2102为例,可以通过官方的CP210xSetIDs.exe 修改设备中的serial项,并在rules文件中添加ATTRS{serial}项。

步骤如下

1. 下载官方的CP210xSetIDs.exe ,在windows下打开,插入CP2102,可以看到Serial Numer,修改此项,点击 Program Device。

2. 修改之前的rules文件,添加ATTRS{serial}=="0002",数值视实际而定

$ sudo gedit /etc/udev/rules.d/usb.rules
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="0002", MODE:="0777", SYMLINK+="RFD" 

3. 如此就可以保证绑定唯一的设备名了。

<think>好的,我现在需要在Ubuntu系统中检测和查看USB串口设备。首先,我应该回忆一下以前学过的相关命令,或者查找资料。记得老师提到过几个命令,比如dmesg、lsusb,还有检查/dev目录下的设备文件。 首先,用户的问题是如何在Ubuntu中找到和查看USB串口设备。我需要分步骤来解答,确保每个步骤都正确。可能需要提到的命令包括dmesg,它用来查看内核日志,当插入USB设备时,内核会记录相关信息。然后是lsusb,这个命令可以列出所有连接的USB设备,包括串口适配器。接下来是检查/dev目录下的ttyUSB*或者ttyACM*设备文件,这些通常是串口设备的节点。 另外,用户提到的参考内容里有关于固定USB设备名称的方法,比如绑定USB串口,避免重启后设备变化。不过用户当前的问题可能更偏向于检测和查看现有的设备,而不是绑定。但可能需要简要提及,如果有多个相同设备,如何区分它们,可能需要使用udev规则来固定名称,比如引用中的MyUSB1的例子。 接下来,需要确保回答的结构清晰,分步骤说明每个命令的用途和示例。例如,首先使用lsusb来查看连接的USB设备,确认是否有对应的串口适配器。然后,插入设备后,使用dmesg | grep tty来过滤出相关的串口信息,找到新识别的tty设备。最后,检查/dev目录下的设备文件是否存在,如/dev/ttyUSB0或类似。 同时,需要注意用户提到的参考内容中的方法,比如通过绑定名称来避免设备变化,这部分可以作为补充信息,说明如果设备变化可能会影响程序,因此固定设备是一个好的做法。但当前问题主要是检测和查看,所以这部分可能放在最后作为扩展。 还要注意是否需要验证每个步骤的正确性。例如,是否所有USB转串口设备都会在/dev下显示为ttyUSB*?有些可能会是ttyACM*,比如某些Arduino设备。因此,可能需要提到这两种可能性。 另外,可能需要提到权限问题,比如普通用户是否有权限访问/dev/ttyUSB*设备,如果没有,可能需要加入dialout组或者使用sudo。 最后,生成相关问题,考虑用户可能接下来会问如何固定设备名称,如何配置udev规则,或者如何测试串口通信等。</think>在Ubuntu系统中,可通过以下步骤检测和查看USB串口设备: ### 1. **使用`lsusb`命令列出USB设备** 运行命令: ```bash lsusb ``` 输出会显示所有连接的USB设备,包含厂商ID和产品ID。若存在USB转串口芯片(如CH340、CP2102等),会显示类似`ID 1a86:7523`的信息[^2]。 --- ### 2. **通过`dmesg`查看内核日志** 插入USB串口设备后,运行: ```bash dmesg | grep tty ``` 输出中会显示新识别的串口设备名称,如`ttyUSB0`或`ttyACM0`。例如: ``` [ 1234.567] usb 1-2: cp210x converter now attached to ttyUSB0 ``` --- ### 3. **检查`/dev`目录下的设备文件** 直接查看设备节点: ```bash ls /dev/ttyUSB* # 适用于大多数USB转串口设备 ls /dev/ttyACM* # 适用于部分CDC-ACM设备(如Arduino) ``` 若设备存在,会显示类似`/dev/ttyUSB0`的路径。 --- ### 4. **绑定固定设备(可选)** 若需避免设备`ttyUSBx`随插拔顺序变化,可参考以下方法: - 创建udev规则文件: ```bash sudo nano /etc/udev/rules.d/99-usb-serial.rules ``` - 添加规则(以`ID 1a86:7523`为例): ``` SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="MyUSB1" ``` - 重启后设备将固定为`/dev/MyUSB1`。 --- ### 权限问题处理 若普通用户无法访问设备,运行: ```bash sudo usermod -aG dialout $USER # 将当前用户加入dialout组 ``` 注销后重新登录生效。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值