Linux usb设备固定端口号

2023-10-29

一:/sys/bus/usb/devices/

  1. 信息显示如下
    在这里插入图片描述

  2. 1-0:1.0

    • 1:表示 1 号总线,或者说 1 号 Root Hub
    • 0:表示端口号
    • 1:表示配置号
    • 0:表示接口号
    • 命名规则:Root Hub-port:configuration.interface
  3. 1-1.1:1.0 or 1-1.2:1.0

    • 1:表示1号总线,或者说1号 Root Hub
    • 1:表示 Hub 连在 Root Hub 上的端口号
    • 1:表示设备连在 Hub 上的端口号
    • 1:表示配置号
    • 0:表示接口号

二:设备信息

在这里插入图片描述

  1. 设备种类
cat /sys/bus/usb/devices/1-1/bDeviceClass

在这里插入图片描述
09:表示为一个usb hub

#define USB_CLASS_PER_INTERFACE		0	/* for DeviceClass */
#define USB_CLASS_AUDIO			1
#define USB_CLASS_COMM			2
#define USB_CLASS_HID			3
#define USB_CLASS_PHYSICAL		5
#define USB_CLASS_STILL_IMAGE		6
#define USB_CLASS_PRINTER		7
#define USB_CLASS_MASS_STORAGE		8
#define USB_CLASS_HUB			9
#define USB_CLASS_CDC_DATA		0x0a
#define USB_CLASS_CSCID			0x0b	/* chip+ smart card */
#define USB_CLASS_CONTENT_SEC		0x0d	/* content security */
#define USB_CLASS_VIDEO			0x0e
#define USB_CLASS_WIRELESS_CONTROLLER	0xe0
#define USB_CLASS_MISC			0xef
#define USB_CLASS_APP_SPEC		0xfe
#define USB_CLASS_VENDOR_SPEC		0xff
  1. version usb协议版本
    在这里插入图片描述
    usb2.0 hub

  2. busnum & devnum
    在这里插入图片描述

  3. dev 主设备号:次设备号
    在这里插入图片描述

  4. bMaxPower 设备最大电流
    在这里插入图片描述

  5. idVendor(厂商 ID) & idProduct(产品 ID)
    在这里插入图片描述

  6. product 产品名称
    在这里插入图片描述

  7. bcdDevice 固件版本
    在这里插入图片描述

  8. speed 速率
    在这里插入图片描述

  9. uevent
    sysfs usb 设备的 uevent 是一个事件通知机制,表示当该 usb 设备在系统上被插入或拔出时,内核会发送一个事件通知给用户空间的系统进程,告知设备的状态变化。这个事件通知会包含一些关于设备的属性信息,例如设的厂商ID、产品ID、序列号等等,方便用户空间的应用程序进行设备管理和配置
    在这里插入图片描述

  10. bmAttributes
    大小为一字节,不同的位,表示不同的特性。

    • bit7 是保留的,必须为1。
    • bit6 表示供电方式:1 设备自供电;0 设备是总线供电的。
    • bit5 表示是否支持远程唤醒:1 支持远程唤醒;0 不支持远程唤醒。
    • bit0~4 是保留的,默认为0。
      在这里插入图片描述
  11. drivers_autoprobe
    drivers_autoprobe 是一个 sysfs 属性,用于在新插入 USB 设备时触发自动探测 USB 驱动程序。当将此属性设置为 1 时,内核将尝试自动加载适当的驱动程序,以便为任何新连接的 USB 设备进行配置。这可以节省手动 USB 设备所需的时间和精力。

三:固定usb设备名方法

根据连接在usb hub上的端口号区分。usb hub端口号是固定的。

  1. 查找需要固定的usb设备
#输入命令:ls /sys/class/tty/ttyUSB* -l,输出结果如下
lrwxrwxrwx root root 2017-08-01 13:40 ttyUSB0 -> …/…/devices/ff540000.usb/usb3/3-1/3-1.1/3-1.1:1.0/ttyUSB0/tty/ttyUSB0
lrwxrwxrwx root root 2017-08-01 13:43 ttyUSB1 -> …/…/devices/ff540000.usb/usb3/3-1/3-1.2/3-1.2:1.0/ttyUSB1/tty/ttyUSB1
  1. 添加规则
    终端输入:sudo vi /etc/udev/rules.d/10-local.rules,添加下面的内容(这句话是个模板,每固定一个设备把这句话复制一次,把开头的#号去掉,把KERNELS和SYMLINK改成自己想要的就可以了)。
#ACTION==“add”,KERNELS==“1-2:1.0”,SUBSYSTEMS==“usb”,MODE:=“0777”,SYMLINK+=“name”
ACTION==“add”,KERNELS==“3-1.1:1.0”,SUBSYSTEMS==“usb”,MODE:=“0777”,SYMLINK+=“my_serial0”
ACTION==“add”,KERNELS==“3-1.2:1.0”,SUBSYSTEMS==“usb”,MODE:=“0777”,SYMLINK+=“my_serial1”

KERNELS==“3-1.1:1.0”固定设备信息参考(第一章:第1小节)
SYMLINK+=“my_serial0” 固定名称

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux usb设备固定端口号 的相关文章

  • 查找列中字段的平均值[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个这样的记录 1 11 11 T A 0 0 A 1 B 2 C 3 D 4 有 8 列 每列由制表符空格分隔 我需要的输出是这
  • 有没有办法使用 perf 工具查找流程中各个功能的性能?

    我正在尝试在流程中实现各个功能的性能 我该如何使用 perf 工具来做到这一点 还有其他工具吗 例如 假设 main 函数调用函数 A B C 我想分别获得主要功能以及功能 A B C 的性能 有没有一个很好的文档来了解 perf 源代码
  • Linux bash 中波浪号的含义(不是主目录)

    首先 我知道 是主目录 CD 至 or 带我到主目录 然而 cd X带我去一个特别的地方 在那里X似乎是什么 在 bash 中 如果我点击 cd 然后点击选项卡 它会显示一堆可能的 X选项如 mail and postgres and ss
  • msgget() 和 mq_open 之间的区别

    我阅读了有关消息队列操作的信息 例如 msgget msgsnd 和 msgrcv 但是当我在堆栈溢出上搜索消息队列相关问题时 我发现还有另一组消息队列操作 例如 mq open mq send mq receive 谁能告诉我这两种类型的
  • 是否可以在由同一父进程创建的两个子进程之间建立管道(LINUX,POSIX)

    我有多个孩子由同一个父母 分叉 我尝试构建pipe所有这些子进程之间的连接就像一个链表结构 孩子 1 向孩子 2 发送数据 孩子 2 向孩子 3 孩子 N 向孩子 1 发送数据 有没有正确的方法可以做到这一点 此外 如果我在进程之间创建和通
  • pctl(PR_SET_PDEATHSIG) 竞争条件

    据我了解 当父进程死亡时终止子进程的最佳方法是通过prctl PR SET PDEATHSIG 至少在 Linux 上 父进程退出后如何让子进程终止 https stackoverflow com questions 284325 how
  • 如何使用 gnu cp 命令将文件复制到多个目录

    是否可以使用 cp 命令将单个文件复制到多个目录 我尝试了以下方法 但没有成功 cp file1 foo bar cp file1 foo bar 我知道可以使用 for 循环或 find 但是可以使用 gnu cp 命令吗 你不能这样做c
  • 如何正确创建可通过http访问的SVN存储库? (在 public_html 内)?

    情况是这样的 subversion 已安装在服务器中 并且我可以访问服务器中的共享帐户之一 不是 root 并且该共享托管帐户具有 SSH 访问权限 我想创建一个存储库 我可以在其中提交我正在处理的 PHP 文件 当我提交时 它应该可以在浏
  • 访问附加到 ELF 二进制文件的数据

    我有一个静态 ELF 二进制文件 它从 zip 文件中读取数据 为了简化分发 我想将 zip 文件附加到二进制文件中 如下所示 cat mydata zip gt gt mybinary 我知道这样做不会损坏 mybinary 但我不知道如
  • 包名中的“dev”后缀?

    使用 apt get 时 我看到一些软件包的名称后面有一个 dev 后缀 libreadline5 libreadline dev zlib1g zlib1g dev 这些到底是什么 我应该安装它们吗 你需要这些编译并链接因为它们提供了要链
  • 以非 root 用户身份在 UserData 中运行命令

    我正在尝试使用 EC2 UserData 脚本安装气流 我需要使用非 root 用户 ec2 user 运行一些命令 请参阅下面的脚本 UserData Fn Base64 Sub bin bash set xe Install GCC y
  • 执行 grails/groovy 时,Linux 上没有可用的控制台输出

    当执行 groovy 脚本或 grails 应用程序时 没有可用的输出 输入 gt 只有一个清晰的控制台屏幕 即使不启动 X Window System 输出也是不可见的 我也尝试过 grailscompile plain output 也
  • `/dev/urandom` 适合模拟目的吗?

    似乎在类 Unix 系统中使用纯 C fread from dev urandom是提取高质量随机字节的最简单方法 我需要运行一个每秒需要大约 10k 32 位随机数的模拟 并且可能会运行几天 是 dev urandom可以用于此目的吗 当
  • elf .rel.text 部分中 R_386_32/R_386_PC32 的含义

    为了理解重定位的概念 我编写了一个简单的 chk c 程序 如下所示 1 include
  • 删除损坏的链接 Unix

    我想删除损坏的链接 但在此之前我想确认目录中是否存在链接文件 我们来调用一下链接A if a A then print ya A is ther fi But if A链接已损坏 那么我该如何检查 find L type l找到损坏的符号链
  • x86-64 Linux 中不再允许使用 32 位绝对地址?

    64 位 Linux 默认使用小内存模型 将所有代码和静态数据置于 2GB 地址限制以下 这确保您可以使用 32 位绝对地址 旧版本的 gcc 对静态数组使用 32 位绝对地址 以便节省相对地址计算的额外指令 然而 这不再有效 如果我尝试在
  • 与 grep 类似地突出显示文本,但不过滤掉文本[重复]

    这个问题在这里已经有答案了 使用 grep 时 它将突出显示与正则表达式匹配的行中的任何文本 如果我想要这种行为 但同时让 grep 打印出所有行怎么办 快速浏览完 grep 手册页后 我发现一无所获 使用确认 看看它的 passthru此
  • 安装pipenv导致pip3无法使用

    我安装了pipenv using pip3 install pipenv 这给了我错误ImportError cannot import name main 为了解决这个错误我遵循这些说明 https stackoverflow com q
  • Alsa:如何在 2 个输出上复制流并保存系统配置?

    我的声卡是 Audigy SE SB0570 我想不仅在扬声器上而且在耳机上同时播放相同的立体声流 我在空的 asoundrc 上尝试这个配置 pcm quad type multi slaves a pcm hw 0 0 green ho
  • 从该共享库中查找加载的共享库的位置?

    从共享库中的函数 在正在运行的进程 用 C 编写 内 我如何发现该共享库是从哪里加载的 我找到的所有答案都涉及使用诸如ldd在命令行中 或者通过查看 proc self maps 在 Win32 上 我只需使用GetModuleFileNa

随机推荐

  • Java一键授权方案 离线授权 日期授权 代码授权 代码混淆

    Java软件部署到客户端 有时没外网 有时需要对模块时效进行控制 但是通常一般性的lic号注册 很容易被破解 屏蔽 不能保证软件的版权和收益 中小型软件又不能再安全方面投入太大 这时该如何做授权功能呢 我现在向您介绍的是一套具体的授权加密方
  • Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by

    使用node js连接mysql数据库报如下错误 Error ER NOT SUPPORTED AUTH MODE Client does not support authentication protocol requested by s
  • 8、抽象类、接口、多态、向上转型、向下转型

    一 final关键字 1 可以修饰变量 方法 类 2 修饰变量时 变量的值不能再改变 成为一个常量 3 修饰方法时 被修饰的方法不能被修改 4 修饰类时 这个类不能被继承 并且类中的成员方法会隐式地被final修饰 5 当final修饰一个
  • stm32 ucos/ii移植,程序执行到OSStart()内部的OSStartHighRdy()语句时跑飞问题解决方法之一

    stm32 ucos ii移植 程序执行到OSStart 内部的OSStartHighRdy 语句时跑飞问题解决办法之一 网络上的一些解决办法 stm32程序遇到OSStartHang的问题解决方法总结 但并不适合我遇到的情况 我的情况是已
  • WebSocket服务端数据推送及心跳机制(Spring Boot + VUE)

    一 WebSocket简介 HTML5规范在传统的web交互基础上为我们带来了众多的新特性 随着web技术被广泛用于web APP的开发 这些新特性得以推广和使用 而websocket作为一种新的web通信技术具有巨大意义 WebSocke
  • android 倒计时 界面,Android实现倒计时结束后跳转页面功能

    前言 在开发中会经常用到倒计时这个功能 关于倒计时的实现 有疑问的朋友们可以参考这篇 https www jb51 net article 101807 htm 本文主要给大家介绍了关于Android倒计时结束跳转页面的相关内容 分享出来供
  • 部署k8s动态持久卷nfs报错如下:waiting for a volume to be created, either by external provisioner “gxf-nfs-storag

    报错如下 waiting for a volume to be created either by external provisioner gxf nfs storage or manually created by system adm
  • 使用UniFlash闪存编程工具为TM4C129x芯片写入MAC地址

    对MAC地址进行检查和编程 网络上的每个 NIC 网络接口控制器 都必须由一个 MAC 地址唯一标识 以便在网段内进行通信 MAC 地址是一个 48 位值 表示为两个十六进制数字的六个八位字节 MAC 地址主要由设备制造商来分配 前三个八位
  • IPsec 认证头协议(IPsec AH)--网络大典

    IPsec 认证头协议 IPsec AH 是 IPsec 体系结构中的一种主要协议 它为 IP 数据报提供无连接完整性与数据源认证 并提供保护以避免重播情况 一旦建立安全连接 接收方就可能会选择后一种服务 AH 尽可能为 IP 头和上层协议
  • 关于refid的使用

    关于refid的使用 首先定义一个id 然后通过refid通过id将之前定义的内容进行引用 这样适用于同一字符串被大量引用的时候应用 具体代码如下
  • 主线剧情01-ARM-IMX6ULL基础学习记录

    ARM i MX6ULL 基础学习记录 编辑整理 by Staok 本文大部分内容摘自 100ask imx6ull 开发板的配套资料 如 IMX6ULL裸机开发完全手册 等等 侵删 进行了精髓提取 方便日后查阅 过于基础的内容不会在此提及
  • 贵金属交易中做空操作注意事项

    贵金属投资项目流行的原因之一就是其囊括的种类多 这让不同的投资者都可以找到适合自己的投资项目 而且具体到贵金属交易的时候往往形式也很多 比如像伦敦金等产品都可以进行做空操作 而今天就来说说进行做空操作需要注意的地方 第一 提到贵金属交易中的
  • osgFBO(十四)PrerenderOrder的使用

    由于前面是简单的demo 所以不用管渲染次序 然而 实际项目中 会出现多种渲染方式 这时候就要用到 camera gt setRenderOrder osg Camera PRE RENDER 还要加上具体次序 比如 采样摄像机设为2 处理
  • 以太网数据格式与封装解封——以太网基础02

    我们在上一文中介绍了以太网5层模型 这一节我想学习一下以太网数据封装与解封的知识 了解以太网数据是如何传输的 一 数据封装 当我们应用程序用TCP传输数据的时候 数据被送入协议栈中 然后逐个通过每一层 知道最后到物理层数据转换成比特流 送入
  • Qt中对文件读写操作

    Qt中自己定义一套对文件的读写操作 QFile 常用的读写模式如下 QIODevice ReadOnly 文件以只读的形式打开 QIODevice WriteOnly 文件以写的形式打开 该方式写入的新内容会覆盖掉之前的内容 QIODevi
  • STM32 usart 问题笔记

    1 USART 手册上给的基础配置源码有误 应该为 USART InitStructure USART BaudRate 9600 USART InitStructure USART WordLength USART WordLength
  • 大数据测试入门介绍

    目录 1 什么是大数据测试 2 大数据的关键技术 3 大数据测试的策略有哪些 4 大数据测试都有哪些测试类型 5 数据测试方案流程 6 大数据测试的挑战 7 大数据测试工具 1 什么是大数据测试 测试大数据应用程序更多的是验证其数据处理 当
  • ubuntu学习笔记(慢慢补充)

    ubuntu中更新python环境笔记 前提 基本上安装的ubuntu系统都会自带python3或者其他编程的语言环境 一下操作只是让原有的软件进行升级 更新当前python版本和下载相应依赖 1 sudo apt get update s
  • 数据库服务器系统的 研发,数据库服务器系统的 研发

    数据库服务器系统的 研发 内容精选 换一换 云备份 Cloud Backup and Recovery 为云内的弹性云服务器 Elastic Cloud Server ECS 云耀云服务器 Hyper Elastic Cloud Serve
  • Linux usb设备固定端口号

    Linux usb设备固定端口号 一 sys bus usb devices 二 设备信息 三 固定usb设备名方法 一 sys bus usb devices 信息显示如下 1 0 1 0 1 表示 1 号总线 或者说 1 号 Root