Ubuntu 串口设备 USB tty

本文介绍了在Ubuntu操作系统中如何查看和识别USB串口设备,如单片机和键盘的连接状态。通过dmesg命令获取USB接口信息,识别设备速度和编号,以及观察设备连接到ttyUSB0端口的迹象。利用ls /dev/ttyUSB*和lsusb命令检查设备存在,并说明了如何进一步使用串口调试工具进行调试。

Ubuntu 串口设备 USB tty

概述

研究Ubuntu下串口设备的连接,简单的讲就是看有没有连接上,至于使用后面再说。

USB

使用命令如下可以查看USB接口的信息, dmesg命令用于显示开机信息,开机信息也保存在/var/log目录中,名称为dmesg的文件里。。参考链接

robots@Robots-ubuntu1604:~$ dmesg|grep usb

使用戴尔有线键盘和一个单片机进行测试,当连接戴尔键盘时可以看到最后信息,

robots@Robots-ubuntu1604:~$ dmesg|grep usb
[ 5647.766886] usb 1-2: new low-speed USB device number 8 using xhci_hcd
[ 5647.922281] usb 1-2: New USB device found, idVendor=413c, idProduct=2113
[ 5647.922288] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 5647.922292] usb 1-2: Product: Dell KB216 Wired Keyboard
[ 5647.926885] input: Dell KB216 Wired Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:413C:2113.0009/input/input33
[ 5647.987283] hid-generic 0003:413C:2113.0009: input,hidraw0: USB HID v1.11 Keyboard [Dell KB216 Wired Keyboard] on usb-0000:00:14.0-2/input0
[ 5647.992092] input: Dell KB216 Wired Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:413C:2113.000A/input/input34
[ 5648.051504] hid-generic 0003:413C:2113.000A: input,hidraw1: USB HID v1.11 Device [Dell KB216 Wired Keyboard] on usb-0000:00:14.0-2/input1

虽然信息很多,但是只需要关注几个关键点就能知道具体的信息,如下表示这个设备已经成功识别,并且是一个低速USB设备,编号8,具体点是Dell KB216 Wired Keyboard。

[ 5647.766886] usb 1-2: new low-speed USB device number 8 using xhci_hcd
[ 5647.922281] usb 1-2: New USB device found, idVendor=413c, idProduct=2113
[ 5647.922288] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 5647.922292] usb 1-2: Product: Dell KB216 Wired Keyboard

当使用单片机接入USB时,可以看到信息,都比较有用,全速USB设备,编号11,

[ 5811.809661] usb 1-2: new full-speed USB device number 11 using xhci_hcd
[ 5811.959355] usb 1-2: New USB device found, idVendor=1a86, idProduct=7523
[ 5811.959361] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 5811.959366] usb 1-2: Product: USB2.0-Serial
[ 5811.960959] usb 1-2: ch341-uart converter now attached to ttyUSB0

注意,这表示这个设备已经连接到了ttyUSB0端口,ch341就是带数字签名的USB转UART串口驱动。

[ 5811.960959] usb 1-2: ch341-uart converter now attached to ttyUSB0

使用命令ls /dev/ttyUSB*可以看到,已经出现了设备ttyUSB0,对于USB设备也可以使用lsusb命令。接下来可以使用串口调试工具进行调试了。

robots@Robots-ubuntu1604:~$ ls /dev/ttyUSB*
/dev/ttyUSB0
robots@Robots-ubuntu1604:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 093a:2532 Pixart Imaging, Inc. 
Bus 001 Device 012: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 005: ID 8087:0aaa Intel Corp. 
Bus 001 Device 010: ID 413c:2113 Dell Computer Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

查看详细信息

使用udevadm info --attribute-walk --name=/dev/ttyUSB0命令可以实现对所有内容的查看,可以按照下面的属性设置rules文件。

$ udevadm info --attribute-walk --name=/dev/ttyUSB0

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

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

  looking at parent device '/dev
<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组 ``` 注销后重新登录生效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值