把Linux下外设的USB端口号映射到固定的名字

2023-05-16

目录

1、 固定USB设备的端口号的原理

2、.rules文件的编写方法

3、映射结果查看 


1、 固定USB设备的端口号的原理

近期调试了一款云台,控制方面需要用到串口通信,调试过程中发现了一个问题,就是 Linux 分配给外设的 USB 端口号与端口的上电顺序有关,这就导致如果需要 USB 端口连接的外设多了之后,每次分配至云台的端口号不一致,因此就需要将云台的 USB 端口映射为一个固定的名字,这样每次程序调用这个固定的名字即可,就不需要每次根据实际的端口号改代码了。

可以通过 ls /dev/ttyUSB* 命令查看连接到 PC 上的 USB 的端口号。

$ ls /dev/ttyUSB*
/dev/ttyUSB0

说的就是这个 ttyUSB0 的这个 0 位置的数值很容易每次不一样。因此我们要给特定的设备设置一个固定的端口名,这样每次打开串口的时候都 open 这个固定的串口名即可,至于这个串口名到底绑定在了几号端口上的问题,Linux 它爱咋玩咋玩我们就不用管了~

我们知道,在 Linux 系统下一切皆文件,系统会把插入的 USB 设备统一当作文件来处理,Linux 把 USB 端口映射文件放在路径 /etc/udev/rules.d 中,可以 ls 查看该目录下的文件长啥样:

$ cd /etv/udev/rules.d
$ ls
10-kinova-arm.rules  70-snap.gimp.rules   70-snap.snap-store.rules
56-pan-tilt.rules    70-snap.snapd.rules  99-realsense-libusb.rules

这里的文件都是以 .rules 结尾的,因此我们也需要创建一个 .rules 的文件。

2、.rules文件的编写方法

.rules 文件怎么写?不要慌,虽然看不懂这是啥,但是对于本任务来说写起来很简单的!

我们可以根据 udev 规则来编写 rules 文件。udev 是 Linux kernel 2.6 系列的设备管理器,它主要的功能是管理 /dev 目录底下的设备节点。还看不懂?没事,那别看了,直接上手写吧~

首先可以使用 lsusb 命令查看USB 设备信息:

红色框中现实的就是我的云台设备的 USB 信息,如果不知道自己的硬件设备的信息是哪个,可以分别在插拔的状态下使用lsusb命令,然后找不同就好啦~

这里只需要关注一个信息即可,即设备的 ID 信息,这个ID由芯片制造商设置,可以唯一表示该设备,我这里是 ID 0403:6014,其中冒号前的 0403 代表设备生产商,后面的 6014 代表设备号。

因此我们就可以新建一个 .relus 文件,文件名前缀随便取,比如我这个:

$ sudo gedit dynamxel.relus

然后再打开的文件里填入下面的内容:

KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE:="0777", SYMLINK+="dynamixel-pantilt"
  • KERNEL代表设备的内核设备名称.常见的比如硬盘的sd*:sda、sdb...,USB 的 ttyUSB*:ttyUSB0、ttyUSB1...;
  • ATTRS{idVendor} 代表设备商ID;
  • ATTRS{idProduct} 代表设备号;
  • MODE 代表权限,777代表赋予可读可写可运行的权限,具体的原理可以参考这里:

Linux权限详解(chmod、600、644、700、711、755、777、4755、6755、7755)_林20的博客-CSDN博客_chmod700什么意思权限简介Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限......https://blog.csdn.net/u013197629/article/details/73608613

  • SYMLINK 代表映射的名称。保存文件,重新拔插USB即可。

以后打开设备是,可以使用 open("/dev/dynamixel-pantilt") 的方式打开了,再也不用担心端口号是多少咯~

3、映射结果查看 

可以使用命令 ls -l /dev |grep ttyUSB 查看设备名映射的情况:

$ ls -l /dev |grep ttyUSB
lrwxrwxrwx  1 root       root               7 7月  18 15:38 dynamixel-pantilt -> ttyUSB0
crwxrwxrwx  1 root       dialout   188,     0 7月  18 15:38 ttyUSB0

参考:

usb端口号绑定 - CAM& - 博客园

linux树莓派下绑定USB口,固定USB串口设备号,解决USB转串口ID相同情况,_蒋程扬的博客-CSDN博客

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

把Linux下外设的USB端口号映射到固定的名字 的相关文章

  • ChatGPT总是答非所问?如何使用chatgpt定义角色

    一 x1f4dd 定义角色 xff1a ChatGPT 的角色设定 背景信息 xff1a 提供详细 准确的背景信息和前提条件 xff0c 以便 ChatGPT 提供有针对性的回答和建议 任务目标 xff1a 清晰地描述希望 ChatGPT
  • 免费ChatGPT接入-国内怎么玩chatGPT

    免费ChatGPT中文版 OpenAI 的 GPT 模型目前并不提供中文版的免费使用 xff0c 但是有许多机器学习平台和第三方服务提供商也提供了基于 GPT 技术的中文版模型和 API 下面是一些常见的免费中文版 ChatGPT xff1
  • 分享一个国内可用的免费GPT-AI网站

    背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具 xff0c 近期的热度直接沸腾 x1f30b 我们也忍不住做了一个基于ChatGPT的网站 xff0c 可以免登陆 xff01 xff01 国内可直接对话AI xff0c 也有
  • ChatGPT狂飙之下 云计算加速键启动?

    集微网消息 xff0c ChatGPT一夜爆火 xff0c 成为AI届的 流量收割机 有观点认为 xff0c ChatGPT不仅是AI的成功 xff0c 也是云计算的成功 AIGC xff08 人工智能生成内容 xff09 有望开启云计算产
  • ChatGPT :国内免费可用 ChatGPT +Midjourney绘图

    前言 ChatGPT xff08 全名 xff1a Chat Generative Pre trained Transformer xff09 xff0c 美国OpenAI 研发的聊天机器人程序 xff0c 于2022年11月30日发布 C
  • 分享一个国内免费的ChatGPT镜像网址(亲测有效-5月7日更新)

    最近由于ChatGPT的爆火也让很多小伙伴想去感受一下ChatGPT的魅力 xff0c 那么今天就分享几个ChatGPT国内的镜像网址 xff0c 大家可以直接使用 xff01 记得点赞收藏一下呦 xff01 1 Mental AI 地址
  • Chat GPT国内懒人专用版(基于网站开发使用)

    一 xff1a 概述 小伙伴们肯定都知道沸沸扬扬的Chat GPT xff08 全名 xff1a Chat Generative Pre trained Transformer xff09 xff0c 美国Open AI研发的聊天机器人程序
  • Linux 串口编程学习记录(termios.h)

    目录 0 Linux 串口编程简述 1 open close 函数 open 函数参数说明 xff1a close 函数参数说明 2 termios 结构体 a c cflag 控制模式标志位可选参数 xff08 unsigned shor
  • 手把手教你怎么搭建自己的ChatGPT和Midjourney绘图(含源码)

    AI程序采用NUXT3 43 LARAVEL9开发 xff08 目前版本V1 1 7 xff09 授权方式 xff1a 三个顶级域名 43 两次更换 1 AI智能对话 对接官方和官方反代 xff08 markdown输出 xff09 PS
  • CLion中文乱码问题解决

    问题描述 xff1a 向 C语言编程 say Hello World 之后 xff0c 小白在 CLion 中运行第一个 C语言程序 xff0c 又撞墙了 xff0c 运行结果中文是乱码 xff0c 如图 xff1a 解决方案 xff1a
  • 润和软件携OpenHarmony最新成果出席2021AIoT开源科技节

    12月10日 xff0c 2021 AIOT开源科技节暨OpenHarmony技术论坛在广州召开 xff0c 润和软件作为OpenHarmony项目的初始共建单位之一及积极的生态贡献者受邀出席大会 润和软件鸿蒙研发总监石磊在科技节技术论坛中
  • 解决Maven打包时报错"The packaging for this project did not assign a file to the build artifact"...

    今天在IDEA中打包Maven项目安装到本地仓库时报错 Failed to execute goal org apache maven plugins maven install plugin 2 4 install default cli
  • 嵌入式软件工程师面试题收录(1)

    最近收集了许多嵌软的面试题 xff0c 内容都是在很多文章中剪下来的 xff01 1 用预处理指令 define 声明一个常数 xff0c 用以表明1年中有多少秒 xff08 忽略闰年问题 xff09 define SECONDS PER
  • 嵌入式软件工程师面试题收录(4)

    最近收集了许多嵌软的面试题和相关知识 xff0c 内容都是在很多文章中剪下来的 xff01 1 什么是物联网 xff1f 物联网的含义是什么 xff1f 万物互联 实时共享 xff0c 对物品进行智能化的识别 定位 跟踪 监控和管理的一种网
  • FreeRTOS个人笔记-挂起/解挂任务

    根据个人的学习方向 xff0c 学习FreeRTOS 由于野火小哥把FreeRTOS讲得比较含蓄 xff0c 打算在本专栏尽量细化一点 作为个人笔记 xff0c 仅供参考或查阅 配套资料 xff1a FreeRTOS内核实现与应用开发实战指
  • FreeRTOS个人笔记-消息队列

    根据个人的学习方向 xff0c 学习FreeRTOS 由于野火小哥把FreeRTOS讲得比较含蓄 xff0c 打算在本专栏尽量细化一点 作为个人笔记 xff0c 仅供参考或查阅 配套资料 xff1a FreeRTOS内核实现与应用开发实战指
  • 由浅入深吃透容器云+微服务+K8S+MQ+阿里云内部实施手册

    针对腾讯 百度 阿里 京东等100 43 家互联网公司 xff0c 对其技术方向进行调查和研究 从18年开始 xff0c 各大厂商都陆续把底层业务从KVM Vmware等底层架构开始逐步迁移到Docker 43 K8s体系中来 xff0c
  • Robotics XM430-W350 云台电机使用记录

    XM430 W350 是加拿大 Trossen Robotics 公司生产的一种伺服舵机 公司给这种电机配套了自研的控制协议以及开发 SDK 例程 Dynamixel SDK xff0c 此处记录下基于ROS 的开发例程的使用方法 xff0
  • STM32 FreeRTOS 二值信号量

    二值信号量可以用于任务同步 xff08 任务与任务间 xff0c 任务与中断间 xff09 假设有高 xff0c 中 xff0c 低三个任务 高级任务 xff1a API 创建一个二值量 并返回一个ID xff1a osSemaphoreC
  • 计算机组成原理重点总结(学习笔记)含计算公式

    计算机组成原理总结 一 计算机系统概述计算机系统的多层次结构冯 诺依曼机哈佛结构计算机性能指标 二 数据的表示和运算汉字的编码字符串的存放校验码原码 反码 补码 移码补码定点数的加 减运算浮点数的加 减运算浮点数的表示范围8位二进制整数范围

随机推荐