第一个USB转串口设备:

# find /sys/bus/usb/devices/ -name "ttyACM*"
#
# find /sys/bus/usb/devices/1-1.4/ -name "ttyACM*"
/sys/bus/usb/devices/1-1.4/1-1.4.1/1-1.4.1:1.0/tty/ttyACM0

第二个USB转串口设备:

# find /sys/bus/usb/devices/ -name "ttyUSB*"
#
# find /sys/bus/usb/devices/1-1.7/ -name "ttyUSB*"
/sys/bus/usb/devices/1-1.7/1-1.7.4/1-1.7.4:1.0/ttyUSB0
/sys/bus/usb/devices/1-1.7/1-1.7.4/1-1.7.4:1.0/ttyUSB0/tty/ttyUSB0
# ls -l /sys/bus/usb/devices/
total 0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.1/1-1.1:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.2 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.2.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2.1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.2:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.2.1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.2.3 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2.3
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.2.3:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2.3/1-1.2.3:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.3 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.3
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.3:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.3/1-1.3:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4
lrwxrwxrwx 1 root root 0 Apr 19 15:43 1-1.4.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4.1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4.1:1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1:1.1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4.2 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.2
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4.2:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4.2:1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2:1.1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4.2:1.2 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2:1.2
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.4.2:1.3 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2:1.3
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.5 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.5
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.5:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.5/1-1.5:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.6 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.6
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.6:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.6/1-1.6:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.1/1-1.7.1:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.1:1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.1/1-1.7.1:1.1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.1:1.2 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.1/1-1.7.1:1.2
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.1:1.3 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.1/1-1.7.1:1.3
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.3 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.3
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.3:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.3/1-1.7.3:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.3:1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.3/1-1.7.3:1.1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.3:1.2 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.3/1-1.7.3:1.2
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.3:1.3 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.3/1-1.7.3:1.3
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.4 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.4
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-1.7.4:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.7/1-1.7.4/1-1.7.4:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-4 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-4
lrwxrwxrwx 1 root root 0 Apr 19 15:56 1-4:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 2-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 3-0:1.0 -> ../../../devices/pci0000:00/0000:00:1b.0/0000:03:00.0/usb3/3-0:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 4-0:1.0 -> ../../../devices/pci0000:00/0000:00:1b.0/0000:03:00.0/usb4/4-0:1.0
lrwxrwxrwx 1 root root 0 Apr 19 15:56 usb1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1
lrwxrwxrwx 1 root root 0 Apr 19 15:56 usb2 -> ../../../devices/pci0000:00/0000:00:14.0/usb2
lrwxrwxrwx 1 root root 0 Apr 19 15:56 usb3 -> ../../../devices/pci0000:00/0000:00:1b.0/0000:03:00.0/usb3
lrwxrwxrwx 1 root root 0 Apr 19 15:56 usb4 -> ../../../devices/pci0000:00/0000:00:1b.0/0000:03:00.0/usb4

如何知道USB-tty设备连接在了哪个USB口?

# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/7p, 480M|__ Port 1: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 2: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 3: Dev 11, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 1: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 3: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 4: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 2: Dev 10, If 2, Class=Audio, Driver=snd-usb-audio, 480M|__ Port 2: Dev 10, If 0, Class=Video, Driver=uvcvideo, 480M|__ Port 2: Dev 10, If 3, Class=Audio, Driver=snd-usb-audio, 480M|__ Port 2: Dev 10, If 1, Class=Video, Driver=uvcvideo, 480M|__ Port 1: Dev 18, If 1, Class=CDC Data, Driver=cdc_acm, 12M|__ Port 1: Dev 18, If 0, Class=Communications, Driver=cdc_acm, 12M|__ Port 5: Dev 9, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 6: Dev 12, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 7: Dev 13, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 1: Dev 14, If 3, Class=Audio, Driver=snd-usb-audio, 480M|__ Port 1: Dev 14, If 1, Class=Video, Driver=uvcvideo, 480M|__ Port 1: Dev 14, If 2, Class=Audio, Driver=snd-usb-audio, 480M|__ Port 1: Dev 14, If 0, Class=Video, Driver=uvcvideo, 480M|__ Port 3: Dev 15, If 2, Class=Audio, Driver=snd-usb-audio, 480M|__ Port 3: Dev 15, If 0, Class=Video, Driver=uvcvideo, 480M|__ Port 3: Dev 15, If 3, Class=Audio, Driver=snd-usb-audio, 480M|__ Port 3: Dev 15, If 1, Class=Video, Driver=uvcvideo, 480M|__ Port 4: Dev 19, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M|__ Port 4: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M

/dev/ttyUSB 和 /dev/ttyACM的区别

以下内容参考:/dev/ttyUSB 和 /dev/ttyACM的区别? - 知乎

为什么有些 USB 设备在插入主机时使用 /dev/ttyUSB0(或 1……n)而有的 /dev/ttyACM0(或 1……n),在这两种情况下,它们似乎都通过 USB 充当 UART 设备(类似于 RS-232)?为什么微控制器的示例 USB 固件总是以 /dev/ttyACM0 之类的名称结束,而从不以 /dev/ttyUSB0 结尾?

什么是ttyACM?

USB 实施者论坛组织已经描述了符合通信设备类 (CDC) 的设备应如何将自己呈现给 USB 主机。 USB 实现者论坛还指定了 CDC 子类应如何操作,包括那些旨在通过公共交换电话网络 (PSTN) 相互通信的设备。这些被称为调制解调器,因为数据在发送端经过调制操作,将比特转换为可以通过电话线传输的模拟信号,然后通过接收端的解调操作将模拟信号转换回原始位。

要与调制解调器交互,主机 USB 驱动程序必须使用现有控制模型之一。例如,直接线路控制模型控制主机和调制解调器之间如何通过音频类接口交换数据,主机负责调制、解调、数据压缩(如V.42bis)和纠错(如如 V.42)。这种模型被一些USB软调制解调器使用,它们非常便宜,因为它们大多包含一个DSP芯片和一些放大和线路适配层。

另一个控制模型,恰当地命名为抽象控制模型或 ACM,让调制解调器硬件执行模拟功能,并要求它支持 ITU V.250(以前也称为 Hayes)命令集,无论是在数据流或作为单独的控制流通过通信类接口。当命令与数据流中的数据复用时,诸如 Hayes 302(也称为“1 sec +++ 1 sec”)或 TIES(没人记得)之类的转义序列必须允许主机将调制解调器放入命令模式。

在需要通过 USB 与计算机交换数据的支持 USB 的嵌入式微控制器上进行开发时,很容易使用几乎所有操作系统都支持的标准化通信方式。这就是为什么大多数人选择使用 ACM 实现 CDC/PSTN(您是否注意到 /dev/ttyACM0 的 Linux 内核驱动程序名为 cdc_acm?),因为它是交换原始数据的最简单方法。

但是强制性的 V.250 命令集呢?它几乎从未在此类设备中实现,但由于主机没有理由自行生成 V.250 命令,因此设备将永远不必回答它们。假装嵌入式设备是调制解调器,是与其通信的最简单方式,即使它可能永远不会执行任何调制或解调任务。 Linux 不会知道该设备在撒谎,而是将其显示为 /dev/ttyS0。

注:

CDC:Communication Device Class,通信设备类。

ACM:Abstract Control Model,抽象控制模型。

什么是ttyUSB?

有时,嵌入式微控制器不带有硬件 USB 接口。虽然可以使用纯软件 USB 堆栈,但 CPU 的额外限制和通常较小的存储空间通常会导致电路板设计人员包含专用的 UART 转 USB 桥接器。一些供应商,例如 FTDI 或 Prolific,以几欧元的价格出售专用芯片。

这些供应商选择不向主机撒谎(让芯片宣布自己是 USB 调制解调器,而实际上它们不是)。每个供应商都定义了自己的(通常是专有的)协议,其中的命令允许控制芯片的功能,例如设置波特率或控制用于实现硬件流控制的附加信号。

如果可行,Linux 会将具有相似功能的设备分组到相同的默认设备或接口名称下。例如,用户计算机上的 UART(如果有)将被命名为 /dev/ttyS0 和 /dev/ttyS1,即使其中一个是传统的 16550 芯片,另一个是 MAX3100 SPI 控制的 UART。同样,提供 UART-over-USB 功能的设备被命名为 /dev/ttyUSB0、/dev/ttyUSB1 等,即使它们实际上使用不同的设备驱动程序。

总结

因此,当你看到 /dev/ttyACM0 弹出时,您可以尝试将转义序列后跟 AT 命令发送给它,但很有可能该设备只是伪装成调制解调器,并且很乐意将这些字符发送到核心应用程序甚至没有考虑拦截它们。 如果它是 /dev/ttyS0,不要尝试,除非 USB-UART 桥后面的设备自己理解这些命令(XBee 芯片就是这种情况)。

USB转串口设备linux随笔相关推荐

  1. linux下如何使用USB转串口设备

    1. # lsmod | grep usbserial (如果直接使用串口线,而没有用到USB转串口设备,此步可以跳过)    如果有usbserial,说明系统支持USB转串口. 2. 安装mini ...

  2. linux下usb设备节点名不固定,解决Linux下USB设备节点ttyUSB名不固定的问题,生成固定USB转串口设备节点...

    解决Linux下USB设备节点ttyUSB名不固定的问题,生成固定USB转串口设备节点 2018-09-19 http://blog.sina.com.cn/s/blog_8b58097f0102wx ...

  3. 多个USB转串口设备区分方法

    概述 当计算机或者其他USB主机上使用多个USB转串口设备时,会遇到多个串口无法与具体的串口设备对应起来的问题,包括更换不同USB端口串口序号发生改变,多个设备USB插拔顺序不同导致串口序号改变等问题 ...

  4. Ubuntu - usb转串口设备的访问权限设置

    可以用如下命令查看串口信息: ls -l /dev/ttyUSB* 但是普通用户没有usb操作权限,下面介绍如何设置usb串口操作权限: 用命令增加访问权限: sudo chmod 666 /dev/ ...

  5. ubuntu下如何使用USB转串口设备

    usb转串口使用总结: 首先看通用教程: 安装: sudo apt-get install minicom 配置: 1. 在终端中输入minicom以启动minicom: 2.先按下Ctrl+ a, ...

  6. 通过驱动修改USB转串口设备的友好名称

    在同一台电脑上如果有多个USB转串口设备(多种型号的),这个时候想找到自己要操作的设备就很麻烦,而USB转串口设备的友好名称可以区分不同型号的串口设备.首先要装上厂家的VCP驱动,才能显示USB转串口 ...

  7. linux系统查看usb转串口驱动,Linux usb转串口驱动

    Linux USB转串口驱动程序: /* * USB Serial Converter driver */ #include #include #include #include #include # ...

  8. Android系统开发-添加USB转串口设备驱动i.MX8M开发

    对于通过 USB 接口访问的模块,在 Linux 内核中集成 USB 驱动程序.我们需要配置内核选中支持 GSM 和 CDMA 模块的 USB 转串口驱动 > Device Drivers -& ...

  9. Win10 USB转串口连接Linux主机调试

    先梳理一下Linux里的console和tty这两个概念: Console: 控制台,用于接收所有的内核消息,告警,允许用户log in.只有text模式,也就是说,用户通过键盘输入文本,并且在显示器 ...

最新文章

  1. scala -cp file.jar filename的案例
  2. linux-IO之copy的实现
  3. OpenGL渲染纹理和平面反射
  4. 数据结构与算法 | 二叉树的实现
  5. 删除win10自带的软件
  6. Elasticsearch 搜索不到数据问题(_mapping 设置)
  7. Gradle之module间依赖版本同步
  8. 北斗三号频点_定位精度超越GPS!紫光展锐推出支持北斗三代的四合一芯片
  9. Java 枚举(enum)剖析
  10. NXP JN5169使用硬件I2C从机收发数据
  11. 高等数学——多元函数极值的定义
  12. Oracle PL/SQL开发基础(第十五弹:同义词)
  13. Swipe 移动端滑动插件使用详解
  14. QT 按钮保持按下时样式
  15. Appium元素定位操作app
  16. jmeter(二十一)jmeter常用插件介绍
  17. 电子表格的使用技巧!!实用啊!!!
  18. 怎样实现php伪静态,php如何用程序实现伪静态
  19. 错误 CS0246 未能找到类型或命名空间名“XXXX”(是否缺少 using 指令或程序集引用?)
  20. 合作快准稳,电子合同助跑“林氏木业”供应链数字化

热门文章

  1. zzulioj1127: 矩阵乘积
  2. SpringBoot实现景区票务系统
  3. 值得收藏的30道Python练手题(附详解)
  4. URI与URL的区别与关系--通俗易懂
  5. 作用域之全局变量和局部变量
  6. 多行业应用MES系统源码下载(汽车\电子\医疗\SMT等离散行业)
  7. 二元线性回归的部分相关代码整理及说明。
  8. 肾囊肿的症状表现是什么?
  9. 科目三考试总结--附送马陆驾校考点路线图
  10. 是时候放弃Masonry了