linux下特定usb设备的权限设置

2023-09-22 13:45:35

背景

目前我在Ubuntu下使用一个USB热成像摄像头,通过调用它的sdk进行图像的采集以及获取对应像素点的温度。假设我现在的测试程序名称为MyApp。
当我用下面的命令运行时,程序是正常运行且能从热成像仪采集图像

sudo ./MyApp

但是当我以下面的命令运行时,

./MyApp

会报错:

libiruvc error [libiruvc.c:357/uvc_camera_open] uvc camera open device failed (uvc_error_code:-3)

这个错误是说权限的问题,也就是只能用root权限才能操作。
然而麻烦的是,在我的正式程序中,需要用到ROS2的库及环境变量一些环境变量。而这些参数无法同步到root用户的环境下。也就是说,不能用sudo启动我的程序,否则我的程序的ROS2部分功能无法使用。
但是不用sudo,热成像仪又用不了,怎么搞?

查找资料

只能修改热成像仪的读写权限了。
热成像的说明书说在linux下,系统会把这个摄像头识别成video设备,识别为/dev/video*。但是实际上我没在/dev目录下找到任video*,那也就意味着我无法直接通过 “chmod 666 /dev/video1”来更改热成像设备的权限。
然后我换一种思路,问了一下chatgpt:

在通过lsusb命令知道了usb设备的基本信息后,如何知道它对应的是/dev或者别的地方的哪个文件节点?

下面是它的回答的截图。它提到一个 /dev/bus/usb 的路径。
在这里插入图片描述
好像我那个没被识别为video的摄像头,就藏在这个路径下。

解决方案

先进行lsusb,获取到插到主机上的USB设备的信息:
在这里插入图片描述
上图用红色框框出来的设备,就是我的热成像设备。

Bus 007 Device 002: ID 0bda:5830 Realtek Semiconductor Corp. USB Camera

可以看到,Bus为007,Device为002
那么,对应在 /dev/bus/usb路径下的节点为

/dev/bus/usb/007/002

在这里插入图片描述
然后更改它的权限就行:

sudo chmod 666 /dev/bus/usb/007/002
更多推荐

百望云获评ITShare数智未来创新峰会“年度数字化优秀服务商”大奖

近日,百望云应邀出席“新能源-新制造暨汽车数智未来创新峰会”,凭借在数字化领域优秀的服务能力和丰富的落地成果,成功获评“年度数字化优秀服务商”,这也是市场对百望云在赋能企业数字化转型和产品创新领域的再度认可!在“数智创新未来”的主题下,百望云也与众多行业知名企业分享了财税数字化转型成功经验,共襄盛会,齐瞻未来。数智未来

【Linux】Linux权限

目录一、认识Linux下的用户分类1.root和普通用户是怎样切换的如果我是普通用户,那我怎么变成root?如果我是root,那我怎么变成指定的普通用户?2.对某一指令进行暂时提权二、什么叫做权限三、没有权限的会出现什么现象三、修改权限通过二进制序列转换对权限进行加减修改文件所属组、拥有者其他问题1.为什么我们创建文件

【计算机网络】75 张图详解:网络设备、网络地址规划、静态路由(万字长文)

75张图详解:网络设备、网络地址规划、静态路由1.网络设备1.1交换机1.2路由器2.网络地址规划2.1IP地址2.2分类地址2.3子网掩码2.4无类地址2.5子网划分2.5.1示例一2.5.2示例二2.6超网合并3.静态路由3.1路由表3.2直连路由3.3静态路由3.4默认路由3.5网关和默认网关4.实战演练4.1静

网络爬虫——HTTP和HTTPS的请求与响应原理

目录一、HTTP的请求与响应二、浏览器发送HTTP请求的过程三、HTTP请求方法四、查看网页请求五、常用的请求报头六、服务端HTTP响应七、常用的响应报头八、Cookie和Session九、响应状态码十、网页的两种加载方法十一、认识网页源码的构成十二、爬虫协议在如今这个数据驱动的时代,网络爬虫在数据采集、信息抓取和处理

【大数据开发技术】实验04-HDFS文件创建与写入

文章目录一、实验目标二、实验要求三、实验内容四、实验步骤一、实验目标熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS原理熟练掌握HDFS的API使用方法掌握单个本地文件写入到HDFS文件的方法掌握多个本地文件批量写入到HDFS文件的方法二、实验要求给出主要实验步骤成功的效果截图。要求分别在本地和集群测试,给

@DateTimeFormat 和 @JsonFormat 的详细研究

关于这两个时间转化注解,先说结论一、介绍1、@DateTimeFormat@DateTimeFormat并不会根据得到其属性pattern把前端传入的数据转换成自己想要的格式,而是将前端的String类型数据封装到Date类型;其次它的pattern属性是用来规范前端传入数据的格式@DateTimeFormat它用于前

Dubbo3应用开发——架构的演变过程

Dubbo3应用开发——架构的演变过程什么是Dubbo早期Dubbo的定位;基于Java的高性能,轻量级的RPC框架;SOA【Service-OrientedArchitecture⾯向服务的架构】=RPC+服务治理;2018年阿⾥巴巴把这个框架捐献给了Apache基⾦会,正式更名为ApacheDubbo。最新版本为D

第28章_瑞萨MCU零基础入门系列教程之基于面向对象的工程结构

本教程基于韦东山百问网出的DShanMCU-RA6M5开发板进行编写,需要的同学可以在这里获取:https://item.taobao.com/item.htm?id=728461040949配套资料获取:https://renesas-docs.100ask.net瑞萨MCU零基础入门系列教程汇总:https://b

C++核心编程——P34+35-空指针返回成员函数+const修饰成员函数

空指针返回成员函数C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针,如果用到this指针,需要加以判断来保证代码的健壮性。#include<iostream>usingnamespacestd;classPerson{public:voidShowClassName(){cout<<"thisi

OPTEE Ftrace函数跟踪

安全之安全(security²)博客目录导读OPTEE调试技术汇总目录一、序言二、Ftrace配置三、Ftrace使用四、Ftrace典型输出一、序言本节描述如何使用ftrace为TA生成函数调用图。该名称来自具有类似目的的Linux框架,但是OP-TEEftrace非常具体。调用图记录了对函数的所有调用,并包含计时信

带你一步实现《栈》(括号匹配问题)

栈的结构及概念栈是一种特殊的线性表,只允许在固定的一端插入或删除数据,进行插入和删除的一端被称为栈顶,另一端称为栈底。栈中的数据遵循后进先出原则LIFO(LASTINFIRSTOUT)俗称栈的插入过程叫做压栈,入栈,从栈顶入数据出栈就是栈的删除,出数据也在栈顶哦,不然怎么做到后进先出原则。来看一个动态图理解入栈出栈的过

热文推荐