UDEV规则配置usb摄像头

news2024/11/24 14:39:15

参考自:【linux】linux下摄像头设置固定的设备名-udev_linux 摄像头的设备文件名-CSDN博客

UDEV规则

在Linux系统中,UDEV(Userspace DEV)是一个用于管理设备节点和/dev目录下设备文件的动态设备管理器。当你连接USB摄像头或其他USB设备时,UDEV会自动识别并处理这些设备。然而,在某些情况下,你可能需要为USB摄像头配置特定的UDEV规则以满足特定的需求,比如设置权限、创建符号链接等。本文将介绍如何为USB摄像头配置UDEV规则。

希望对UEDV进一步了解的朋友可以看这篇:Linux的UDEV机制-CSDN博客

1. 识别USB摄像头

在配置UDEV规则之前,首先需要识别你的USB摄像头的设备ID。你可以使用lsusb命令来列出所有连接的USB设备及其ID。查看外设的设备号,主设备号:辅助设备号

执行如下命令

lsusb

在输出中,你会看到类似于以下的行:

这里的1e45:8022

就是设备ID,你需要记下它以便在后续的UDEV规则中使用。

 idVendor: 1e45
 idProduct:   8022

2. 配置 udev规则:

UDEV规则文件通常存储在/etc/udev/rules.d/目录下。你需要以root用户或具有sudo权限的用户身份创建一个新的规则文件。规则文件的命名通常遵循xx-your-rule.rules的格式,其中xx是一个数字,用于确定规则文件的加载顺序。

sudo nano /etc/udev/rules.d/99-usb-camera.rules

进入指定路径

cd /etc/udev/rules.d/


新建video.rules

sudo vi video.rules

添加如下内容:

KERNEL=="video*", ATTRS{idVendor}=="1e45", ATTRS{idProduct}=="8022",MODE="0777",SYMLINK+="mycamera"

注意:
 把ATTRS{idVendor}=="1e45", ATTRS{idProduct}=="8022", 替换成自己的设备ID
 

 

3. 重新加载UDEV规则

在编写完规则文件后,你需要重新加载UDEV规则以使更改生效。这可以通过重启系统或使用udevadm命令来完成。但是,更简单的方法是使用udevadm control --reload-rules命令重新加载规则文件。

udevadm control --reload-rules

然后,你需要触发UDEV事件以重新处理已连接的设备。你可以使用udevadm trigger命令来实现这一点。

sudo udevadm trigger

4. 测试配置

现在,你可以断开并重新连接USB摄像头,或者重新启动系统来测试配置是否生效。你可以使用v4l2-ctlffmpeg等工具来检查摄像头是否可以被正确识别并访问。

例如,使用v4l2-ctl --list-devices命令列出所有可用的视频设备:

v4l2-ctl --list-devices


 

验证 那哪个设备号 是可行的可行: 


sudo fswebcam -d /dev/video1 --no-banner -r 1280x720 -S 5 ./image.jpg
 

注意video1 根据自己的实际情况编写/修改

配置mjpg-steam开机自启

固定好设备号后,我们就能配置mjpg-steam的开机自启了

安装配置 mjpg-streamer 

下载 mjpg-streamer

Gitee 的镜像下载:
orangepi@orangepi:~ $ git clone https://gitee.com/leeboby/mjpg-streamer
安装依赖的软件包 - Ubuntu
sudo apt-get install -y cmake libjpeg8-dev

编译安装 mjpg-streamer

 1)安装好后先进入到文件夹下
cd mjpg-streamer/mjpg-streamer-experimental

2)编译

make -j4

3)安装

sudo make install
4)配置服务
vi ./start.sh
将我们前面定义的设备名: mycamera 加进去

配置开机自启服务

cd 命令进入home目录

cd

创建shell脚本

vim mjpg.sh

编辑 rc.local

 vim /etc/rc.local
 
添加如下内容
// 为什么要加两次呢,这里是重复调用防止开机自启失败

#!/bin/sh -e
/home/orangepi/mjpg.sh &

cd /home/orangepi/mjpg-streamer/mjpg-streamer-experimental
./start.sh


exit 0
 

配置好后  :wq  保存退出

重启   

sudo reboot

开机,可以看到服务已经打开

服务重启大全(一定要看)

如果前面的步骤都是对的但还是无法实现开机自启和固定摄像头设备怎么办呢,下面给出的是本文的关键,依次执行如下七条命令,大概率能帮你解决这类问题

// 每次修改后记得重启以下服务:
设置开机自启命令
sudo systemctl start rc-local.service                       启动服务
sudo systemctl enable rc-local.service                    开机自动启动
sudo systemctl daemon-reload                              更新服务
sudo systemctl restart rc-local.service                   重启服务
sudo systemctl status rc-local.service                    查看当前服务状态


//每次固定 摄像头设备号的
sudo udevadm control --reload-rules
sudo udevadm trigger

rc.loacl补充

rc.local 是一个在 Unix 和 Unix-like 系统中常见的初始化脚本,特别是在基于 SysVinit 的系统(如较旧的 Linux 发行版)中。当系统完成其启动过程(即所有系统级的初始化脚本都已运行)并准备将控制权交给用户时,rc.local 脚本会被执行。这为用户提供了一个在系统完全启动后运行自定义命令或启动服务的机会。

rc.local 脚本通常位于 /etc/ 目录下,并且是一个可执行文件。在某些系统中,它可能是一个链接到另一个目录(如 /etc/init.d/)的符号链接。

rc.local 的内容通常类似于以下形式:

 

bash复制代码

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# 启动自定义服务或运行命令
/path/to/your/custom/command &
exit 0

请注意以下几点:

  1. 脚本的第一行(#!/bin/sh -e)指定了用于解释脚本的 shell(在这种情况下是 /bin/sh)以及选项 -e,这表示如果任何命令失败(返回非零状态),则整个脚本将立即退出。
  2. 脚本中包含了一些注释,解释了其用途和如何启用/禁用它。
  3. 在注释之后,你可以添加你自己的命令或启动服务的命令。
  4. 脚本最后以 exit 0 结束,表示成功执行。

然而,需要注意的是,现代的 Linux 发行版(如 Ubuntu 16.04+ 和 Debian 8+)已经逐渐淘汰了 SysVinit,转而使用更现代的初始化系统,如 systemd。在 systemd 中,rc.local 并不被直接支持,但你可以通过安装一个特殊的软件包(如 systemd-rc-local-generator)或使用 systemd 的服务单元文件来模拟其功能。

如果你在使用基于 systemd 的系统,并希望在系统启动时运行自定义命令,你应该考虑创建一个 systemd 服务单元文件并将其放置在 /etc/systemd/system/ 或 /lib/systemd/system/ 目录中。

nano补充

在Linux系统中,nano 是一个简单易用的文本编辑器,特别适合初学者和需要快速编辑文本文件的用户。它提供了基本的文本编辑功能,如打开文件、保存文件、复制、粘贴、查找和替换等,但不像vimemacs那样具有复杂的快捷键和模式。

如果你在使用nano来编辑UDEV规则文件,你可以按照以下步骤操作:

  1. 打开终端(Terminal)。

  2. 使用sudo命令以root用户权限打开nano编辑器来编辑UDEV规则文件。例如,如果你想编辑99-usb-camera.rules文件,可以运行:

sudo nano /etc/udev/rules.d/99-usb-camera.rules
  1. nano编辑器中,你可以使用以下基本快捷键:

    • Ctrl + O 保存文件。
    • Ctrl + X 退出编辑器。
    • Ctrl + K 剪切文本(剪切的文本会被复制到缓冲区)。
    • Ctrl + U 粘贴文本(粘贴之前剪切或复制的文本)。
    • Ctrl + W 查找文本。
    • Alt + W 查找下一个匹配的文本。
    • 使用箭头键(↑、↓、←、→)来移动光标。
    • 使用Backspace键删除字符,或使用Ctrl + K删除整行。
  2. 在编辑器中输入你的UDEV规则,例如:

 

bash复制代码

SUBSYSTEM=="video4linux", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", MODE="0666"
  1. 使用Ctrl + O保存文件,然后使用Ctrl + X退出nano编辑器。

  2. 接下来,你可以使用udevadm命令来重新加载UDEV规则并触发设备事件,如之前所述。

请注意,在编辑系统文件时,特别是使用sudo权限时,要小心不要误删除或修改重要的内容。如果你不确定某个步骤,请先在网上搜索或咨询有经验的用户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1689646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ai】chatgpt的plugin已经废弃

发现找不到按钮,原来是要申请: https://openai.com/index/chatgpt-plugins/ 发现申请已经跳转了,好像是废弃了? 不接受新插件了,但是openai的api 是可以继续用的。 https://openai.com/waitlist/plugins/We are no longer accepting new Plugins, builders can now create…

react中的useEffect()的使用

useEffect()是react中的hook函数,作用是用于创建由渲染本身引起的操作,而不是事件的触发,比如Ajax请求,DOM的更改 首先useEffect()是个函数,接受两个参数,第一个参数是一个方法,第二个参数是数…

Generic Segmentation Offload(GSO)

Generic Segmentation Offload汉语意思是啥? Generic Segmentation Offload(GSO)的汉语意思是“通用分段卸载”。在网络通信中,GSO 是一种技术,用于在网络栈中将较大的传输单元分段为更小的单元,以提高网络…

自然语言处理实战项目29-深度上下文相关的词嵌入语言模型ELMo的搭建与NLP任务的实战

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目29-深度上下文相关的词嵌入语言模型ELMo的搭建与NLP任务的实战,ELMo(Embeddings from Language Models)是一种深度上下文相关的词嵌入语言模型,它采用了多层双向LSTM编码器构建语言模型,并通过各层LSTM的隐藏状…

顶顶通实时质检系统新增一大功能:黑名单功能介绍

文章目录 前言联系我们功能介绍配置方案 前言 顶顶通实时质检系统新增黑名单一大功能。该功能可通过调用质检系统的黑名单接口,对被叫号码进行检测。如果被检测的号码符合所设定的拦截规则,就会对当前呼叫进行拦截,取消呼叫。 联系我们 有意…

数据库系列之MySQL数据库中内存使用分析

在实际系统环境中,MySQL实例的内存使用随着业务的增长缓慢增长,有些时候并没有及时的释放。本文简要介绍下MySQL数据库中和内存相关的配置,以及分析内存的实际使用情况,以进行应急和调优处理。 1、MySQL内存结构 在MySQL中内存的…

运营抖音小店,这件事情每天都需要去做!一个都不能少!

大家好,我是电商小V 咱们的店铺开好之后,然后运营自己的店铺每天需要做好什么事情呢?这个问题是很多新手小伙伴开通抖店之后最关心的问题,咱们今天就来详细的说一下运营抖音小店每天需要做什么呢? 第一点:奖…

Transformer详解常见面试问题

文章目录 1. 各模块解决1.1 输入部分1.2 多头注意力(作者使用8个头)1.3 残差和LayerNorm1.4 Decoder部分 2.Transformer经典问题2.1 tranformer为何使用多头注意力机制?2.2 Transformer相比CNN的优缺点2.3 Encoder和decoder的区别&#xff1f…

03-ArcGIS For JavaScript结合ThreeJS功能

ArcGIS For JavaScript结合ThreeJS功能 概述three.js中功能实现externalRenderers(4.28及以下版本)RenderNode(4.29版本) 概述 ArcGIS For Javacript提供了一些对象可以支持加载webgl上下文信息,这里包括webgl编程的代…

【Crypto】Url编码

文章目录 Url编码解题感悟 Url编码 Url编码 搞定 小小flag,拿下! 解题感悟 有点饿了…

Edge浏览器:重新定义现代网页浏览

引言 - Edge的起源与重生 Edge浏览器,作为Microsoft Windows标志性的互联网窗口,源起于1995年的Internet Explorer。在网络发展的浪潮中,IE曾是无可争议的霸主,但随着技术革新与用户需求的演变,它面临的竞争日益激烈。…

【加密与解密(第四版)】第十六章笔记

第十六章 脱壳技术 16.1 基础知识 壳的加载过程:保存入口参数、获取壳本身需要使用的API地址、解密原程序各个区块的数据、IAT的初始化、重定位项的处理、HOOK API、跳转到程序原入口点 手动脱壳步骤:查找真正的入口点、抓取内存映像文件、重建PE文件&…

【全网最全】2024电工杯数学建模B题问题一14页论文+19建模过程代码+py代码+2种保奖思路+数据等(后续会更新成品论文等)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片链接,那是获取资料的入口! 【全网最全】2024电工杯数学建模B题问一论文19建模过程代码py代码2种保奖思路数据等(后续会更新成品论文等)「首先来看看目前已…

Python导入Shapefile到PostGIS的常见问题和解决方案

导入Shapefile到PostGIS的常见问题和解决方案 先决条件: 已经拥有含有GDAL的python环境(如果大家需要,我可以后面出一片文章 问题一:QGIS连接到PostGIS数据库失败 错误描述: Connection to server at &quo…

211初试自命题复试线仅302分!延边大学计算机考研考情分析!

延边大学(Yanbian University),简称“延大”,地处吉林省延边朝鲜族自治州,是国家“双一流”建设高校、国家“211工程”重点建设大学、西部开发重点建设院校、吉林省人民政府和教育部共同重点支持建设大学、吉林省人民政…

[保姆式教程]使用目标检测模型YOLO V5 OBB进行旋转目标的检测:训练自己的数据集(基于卫星和无人机的农业大棚数据集)

最近需要做基于卫星和无人机的农业大棚的旋转目标检测,基于YOLO V5 OBB的原因是因为尝试的第一个模型就是YOLO V5,后面会基于其他YOLO系列模型做农业大棚的旋转目标检测,尤其是YOLO V9,YOLO V9目前还不能进行旋转目标的检测&#…

C++ 实现AVL树

目录​​​​​​​ 0.二叉搜索树 1.AVL树的概念 2.AVL树节点的定义 3.AVL树的插入 4.AVL树的旋转逻辑 5.判断是否符合AVL树 6.完整代码 7.数据测试 0.二叉搜索树 C 搜索二叉树-CSDN博客 1.AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近…

基于地理坐标的高阶几何编辑工具算法(2)——相交面裁剪

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理后处理 工具步骤 选中一个需要裁剪的面,点击“相交面裁剪”工具,多选裁剪模板面,空格执行。 应用场景 常用于基于遥感影像的建筑物几何面编辑。 算法输入 一个待裁剪的面&a…

国家自然博物馆“云端自然”线上虚拟展厅是如何搭建的?

国家级综合性自然博物馆国家自然博物馆,联手积木易搭打造“云端自然”线上虚拟展览,形成一个集参观游览、科普教育为一体的线上虚拟数字博物馆平台,让数千以至数万年的古生物,栩栩如生地呈现在我们面前。 通过数字化的展示手段&am…

C# 文件清理

/// <summary>/// 定期清除文件/// </summary>/// <param name"fileDirect">文件夹</param>/// <param name"postFix">文件后缀</param>/// <param name"saveDay">保存天数</param>private voi…