UDEV规则配置usb摄像头

配置udev规则 外设对应的串口名一般都是会变化的,为了避免手动选择,这里可以通过给USB 设备创建别名的方式解决。修改并固定设备本身的芯片串口号后以深度相机为例添加udev规则另一个设备添加udev的.sh例子。 阅读详情

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

UDEV规则

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

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

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-ctl、ffmpeg等工具来检查摄像头是否可以被正确识别并访问。

例如,使用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 是一个简单易用的文本编辑器,特别适合初学者和需要快速编辑文本文件的用户。它提供了基本的文本编辑功能,如打开文件、保存文件、复制、粘贴、查找和替换等,但不像vim或emacs那样具有复杂的快捷键和模式。

如果你在使用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权限时,要小心不要误删除或修改重要的内容。如果你不确定某个步骤,请先在网上搜索或咨询有经验的用户。

v4l2 (二)USB摄像头图像采集 操作系统 : Linux采集方式 : v4l2(video4linux2)设备目录 :/dev/video0Linux采集的核心组件名称叫:v4l2即video4linux2的简称。是Linux中关于视频设备的内核驱动,在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头设备文件位置是/dev/video0。方法一,直接通过ls查看/dev/目录下设备列表方法二,通过ffmpeg的ffprobe命令来查看连接到系统中的摄像头设备:FFmpeg命令行安装。 阅读详情

相关推荐

Ubuntu 20.04下USB摄像头双索引的udev规则精准绑定实战

本文详细介绍了在Ubuntu 20.04系统中解决USB摄像头双索引问题的实战方法,通过编写精准的udev规则实现设备绑定。内容涵盖设备信息获取、多种udev规则编写方法、多摄像头管理策略以及在OpenCV和ROS中的实际应用案例,帮助开发者有效解决摄像头设备节点随机分配的问题。

weixin_30570101的博客 403

【生产篇】_RHEL7环境下19c RAC安装之udev规则配置ASM共享存储

【引言】 最近RHEL7.6环境下安装了一套oracle 19C的环境,其中最基础的asm前期共享存储UDEV配置,配置时有点意思,故特此记录下,以备后续查看。 Step 1: 取得多路径融合的UUID #udevadm info --query=all --name=/dev/mapper/mpatha | grep -i DM_UUID E: DM_UUID=mpath-360002ac000...

db_murphy的博客 2387

UVC摄像头在Yocto构建Linux系统中的集成方法

手把手带你把UVC摄像头无缝接入Yocto构建的嵌入式Linux系统,涵盖内核配置、驱动启用与设备树适配等关键步骤,确保即插即用。全程围绕UVC标准协议展开,解决常见VID/PID识别、v4l2接口调用等实战问题。

weixin_35636570的博客 378

【Linux驱动】Linux--USB免驱摄像头驱动分析(基于5.4内核)

UVC全称为USB Video Class,即:USB视频类,是一种为USB视频捕获设备定义的协议标准。是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,已成为USB org标准之一。​ 如今的主流操作系统(如Windows XP SP2 and later, Linux 2.4.6 and later, MacOS 10.5 and later)都已提供UVC设备驱动,因此符合UVC规格的硬件设备在不需要安装任何的驱动程序下即可在主机中正常使用。

szembed的博客 4773

LeRobot机械臂USB端口绑定终极指南:告别重复调试的烦恼(含WOWROBO套件实战)

本文详细介绍了如何通过Linux udev规则永久绑定LeRobot机械臂USB端口,解决端口漂移问题,提升具身智能系统的开发效率。包含WOWROBO套件实战案例,从硬件识别到规则创建,再到LeRobot项目集成配置,提供了一套完整的解决方案,帮助开发者告别重复调试的烦恼。

s3t4u的博客 787

避坑指南:用USB/IP共享USB摄像头到树莓派时,如何解决MJPG-streamer的兼容性问题?

本文针对使用USB/IP技术将USB摄像头共享至树莓派时,MJPG-streamer出现的兼容性问题提供系统性解决方案。深入剖析了USB/IP与MJPG-streamer的核心冲突,从内核模块、设备权限、网络传输优化到MJPG-streamer参数调优,提供了详细的故障排查与性能调优指南,帮助开发者在局域网内构建稳定的远程视频流系统。

android的专栏 833

Ubuntu20.04配置udev规则用于配置摄像头索引

本文摘要:针对Linux系统中USB设备(如摄像头)索引动态变化导致程序调用参数不匹配的问题,提出了通过udev规则创建固定符号链接的解决方案。方法包括:1)通过lsusb获取设备厂商ID和产品ID;2)在/etc/udev/rules.d/目录创建规则文件,利用设备唯一ID和端口信息(如视频流端口index=0)创建静态符号链接;3)通过udevadm命令重载规则。该方法确保了设备无论插拔或重启后,程序都能通过固定路径(如/dev/webcam)访问设备,解决了OpenCV等应用中VideoCapture

Yyh1234_的博客 969

Linux下用V4L2驱动USB摄像头:从设备识别到实时画面采集(附海康威视实测)

本文详细介绍了在Linux系统下使用V4L2驱动USB摄像头的完整流程,从设备识别、驱动配置到实时画面采集,特别针对海康威视工业摄像头提供了实测配置方案。通过命令行工具和编程示例,帮助开发者快速掌握V4L2框架下的摄像头驱动技术,解决工业应用中的常见问题。

weixin_28285943的博客 502

linux下摄像头设置固定的设备名

通过我之前的文章配置完摄像头的开机自启动之后我们会发现有的时候会出现启动不了的情况,通过实验我发现是摄像头的设备名发生了改变,而我们在start.sh脚本哪里配置的又是固定的所以就会出现启动不了的情况。到这里说明我们的固定名称已经配置完成了,我们还需要去修改我们的start.sh脚本的内容,把设备名修改成我们固定的名称。通过这些配置,我们摄像头服务就能做到每次开机自动启动,而且也不会因为设备名发生了改变而出现启动失败的情况。udev就是一种规则,能将你插入的设备固定为唯一指定的别名。1.查看usb ID。

weixin_58198422的博客 1588

避坑指南:RK3588+OpenCV调用USB摄像头的5个常见问题及解决方案

本文针对RK3588平台使用OpenCV调用USB摄像头时常见的设备节点缺失、参数设置失效、格式兼容性、多摄像头资源冲突及编译依赖五大难题,提供了从内核日志排查、udev规则配置到代码级参数设置的实战解决方案,帮助开发者快速打通嵌入式视觉项目的数据链路。

weixin_29264201的博客 345

在 Linux 中使用 udev 规则固定摄像头节点

通过编写 udev 规则来固定 USB 摄像头节点,以便在系统中始终使用相同的设备路径访问摄像头。命令确定连接的 USB 摄像头的供应商 ID 和产品 ID。确定摄像头的供应商 ID 和产品 ID。创建 udev 规则文件。重新加载 udev 规则。

小灰灰的博客 1078

linux 多相机绑定usb口

即可查看video0的设备信息,从上往下找到KERNELS=="2-7", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="6366", 修改对应的值即可。其中SYMLINK+="video1_cam"为建立的虚拟端口连接,打开相机的时候,将数字序号替换为”/dev/video1_cam”即可打开绑定的对应相机。版权声明:本文为优快云博主「龙性的腾飞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3. 查看相机设备信息。.....

1104

ROS 网络教程第 2 部分 - 使用相机

​ 在本中级教程中,我们将研究如何使用libuvc_camera 包和简单的 USB 摄像头。在此过程中,我们将了解有关 udev 规则和 Nodelet 的一些知识。​

gongdiwudu的专栏 7438

debian10在RK3399PRO中从摄像头启动到人脸识别记录

适用于rk3399pro中使用 第一安装好cheese软件用于检测摄像头是否能正常工作 sudo apt-get cheese 随后在debian的软件包里即可打开这个软件,可以看到对应的拍照录像等功能 第二安装 v4l2-ctrl工具 sudo apt install v4l-utils 使用这个工具查看摄像头的参数 sudo v4l2-ctl --all 查看参数的时候可以发现,由于工业摄像头在不同电脑上的默认参数设置不同,所以能达到的帧率和像素值也不同。 并且采用的编码格式不同时,其帧率和像素值

weixin_48386234的博客 1691

FairyGUI编辑器自定义菜单扩展插件

本文涉及到的软件有:FairyGUI,VSCode代码环境涉及到了:LuaVSCode插件:EmmyLua在编写FairyGUI编辑器菜单前,了解一下FairyGUIEditor的API会有效的帮助我们解决很多问题。FairyGUI的扩展是通过编辑器自带的插件功能实现的,插件中我使用的是lua环境模板。导入编辑器的LuaAPI,文件可以在FairyGUI-Editor源码的插件目录中找到。接下来将通过功能来说明对应的API作用。

Aili_Xiao的博客 4496

Calibre电子书阅读器个性化样式定制指南

本文详细介绍了如何通过Calibre电子书阅读器的用户样式表功能进行深度个性化样式定制。从修改全局字体、行距、背景配色(包括深色/浅色模式)到美化代码块、引用等特殊元素,本指南提供了完整的CSS代码示例与实战技巧,帮助用户打造专属的舒适阅读环境,显著提升电子书阅读体验。

vv45678的博客 920

基于Linux的USB摄像头热插拔状态检测:实时监测摄像头连接状态

基于Linux的USB摄像头热插拔状态检测:实时监测摄像头连接状态 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 随着物联网和智能设备的普及,USB摄像头在监控、视频会议和智能交互等领域发挥着重要作用。然而,在实际应用中,USB摄像头的连接稳定性往往成为一个关键问题。本项目提供了一种基于Linux环境下的USB摄像头热插拔状态检测方法,通过实时监测USB摄像头的连接与...

gitblog_06719的博客 949

LangChain学习及应用(超详细)

Model I/O 部分是与语言模型进行交互的核心组件,包括输入提示(Prompt Template)、调用模型(Model)、输出解析(Output Parser)。简单来说,就是输入、处理、输出这三个步骤。LLM 因其具有海量参数,需要花费相当的物力与时间成本进行预训练和微调,同时商用 LLM 还需要进行各种安全测试与风险评估等。因此 LLM 会存在知识滞后的问题。在专有领域,LLM 无法学习到所有的专业知识细节,因此在面向专业领域知识的提问时,无法给出可靠准确的回答。

weixin_39764056的博客 4233

Ubuntu 22.04 v4l-utils 工具包:3步排查USB摄像头无视频信号问题

本文详细介绍了在Ubuntu 22.04系统中使用v4l-utils工具包排查USB摄像头无视频信号问题的3步解决方案。从设备检测、视频设备节点验证到格式与参数配置,提供专业级命令行工具的使用指南,帮助用户快速恢复摄像头功能并优化视频质量。

weixin_32306957的博客 317

YOLOv5改进 | 低照度检测 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)

本文给大家带来的2024.3月份最新改进机制,由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations论文提出的CPA-Enhancer链式思考网络CPA-Enhancer通过引入链式思考提示机制,实现了对未知退化条件下图像的自适应增强。该方法的核心在于能够利用CoT提示对图像退化进行动态分析和适应,从而显著提升物体检测性能。

Snu77的博客 2222

Ubuntu 上免 sudo 跑 RealSense D435i:3 条命令修好设备权限

你把 RealSense D435i 插进 Ubuntu 主机、运行 librealsense 仓库的 hello-realsense 示例时,常报权限错误。本文讲清 udev 权限的根因,照 3 条命令做完,无需 sudo 就能稳定读出深度流。 [![RealSense D400 系列深度相机接入 Linux 主机](https://raw.gitcode.com/GitHub_Trendin

gitblog_00891的博客 80

YOLOv8自定义训练:车牌识别全流程(从标注到推理,附可视化代码)

车牌检测全流程实践指南 摘要:本文详细介绍了基于YOLOv8的车牌检测完整实现方案。针对车牌检测中的三大难点(小目标、多角度、光照变化),提供了从数据准备到模型部署的全流程解决方案。重点包括:1)数据采集与标注规范;2)针对小目标的YOLOv8模型优化配置;3)K-means锚框聚类方法;4)训练参数调优策略。通过实际验证,该方法可获得95%以上的检测准确率,并附有完整的代码实现和可视化工具,便于开发者快速复现应用。 (字数:149字)

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 849

Linux USB设备权限配置:udev规则与设备组实战指南

在Linux系统中,USB设备的访问权限往往由设备节点、权限位和用户组共同决定。当摄像头、串口或手机调试设备出现Permission denied时,根源通常在于当前用户未获得对应设备组的访问授权。理解/dev目录下字符设备的权限模型,掌握chmod、chown等临时赋权手段,是快速定位问题的第一步。而真正一劳永逸的解决方案,则是通过udev动态设备管理机制,根据设备的VID/PID编写规则,自动设置MODE、GROUP和SYMLINK。无论是USB转串口、UVC摄像头还是ADB调试,规范的udev规则都能

weixin_33552698的博客 282

基于深度学习的灰度图像气泡群识别与优化

灰度图像气泡群深度学习识别优化研究 本研究针对MATLAB实现的深度学习气泡群识别系统在从1445个点到4992个点扩展时出现的精度不稳定问题,提出了一套完整的解决方案。文章首先分析了问题根源,包括数据复杂度增加、类别不平衡、网络容量不足等因素,然后系统性地提出了数据预处理增强、网络架构优化、训练策略调整和后处理算法改进等优化措施。通过改进的U-Net架构、自适应直方图均衡化等技术创新,有效提升了模型在大规模气泡群图像上的识别精度和稳定性,为化工、生物医学等领域的灰度图像分析提供了可靠的技术支持。

max500600的博客 411

最新Python爬虫实战(入门爬虫篇)——案例13:某乎热榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过Python爬虫技术,成功实现了基于Cookies认证的某乎热榜数据爬取与Excel保存。代码采用模块化设计,包含Cookies解析、HTML请求、结构化解析、Excel持久化等完整流程;通过配置浏览器请求头+Cookies认证,有效突破某乎基础反爬策略,保证请求稳定性。整个爬虫逻辑遵循“Cookies认证 → 页面请求 → HTML解析 → 数据清洗 → 保存到Excel”的标准流程,与需要会话验证的网站爬取范式高度一致。Cookies解析与认证。

努力让自己发光,对的人才能迎着光而来 33万+
上一篇: 智能家居5 - 实现处理线程
下一篇: 一文带你入门ini格式
mx_jun
博客等级 码龄5年 1604粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值