Linux系统工业相机:Linux udev 规则绑定相机设备

相机一插拔,/dev/video0 就变?

udev 规则 一劳永逸解决!

"程序写死 /dev/video0,结果换了个 USB 口就崩了?"

"多台相机同时接,根本分不清哪个是哪个?"

别再靠猜设备路径了!
一条 udev 规则,让你的相机拥有固定"身份证"


🔧 原理一句话

Linux 系统在识别 USB/GigE 相机时,会动态分配设备节点(如 /dev/video0)。

udev 是 Linux 的设备管理器,可通过 厂商 ID + 产品 ID 等硬件信息,创建永久软链接,比如:

bash 复制代码
/dev/camera_front → /dev/video2
/dev/camera_top   → /dev/video1

无论你插哪个口、重启多少次,名字永远不变!


🛠️ 实操三步走

第一步:查相机的唯一标识

bash 复制代码
# 列出所有视频设备
lsusb

# 示例输出:
Bus 001 Device 004: ID 2676:ba02 Hikvision MV-CE050-10GM
Bus 001 Device 005: ID 2ab6:000a Baumer TXG50c

记下 idVendor(如 2676)和 idProduct(如 ba02)。

💡 GigE 相机?用 udevadm info -a -n /dev/videoX 查网卡 MAC 或序列号。


第二步:创建 udev 规则文件

bash 复制代码
sudo nano /etc/udev/rules.d/99-camera.rules

填入规则(以海康相机为例):

udev 复制代码
# 海康前视相机
SUBSYSTEM=="video4linux", ATTRS{idVendor}=="2676", ATTRS{idProduct}=="ba02", SYMLINK+="camera_front"

# 堡盟顶视相机
SUBSYSTEM=="video4linux", ATTRS{idVendor}=="2ab6", ATTRS{idProduct}=="000a", SYMLINK+="camera_top"

✅ 关键点:

  • SUBSYSTEM=="video4linux":只匹配视频设备
  • SYMLINK+="xxx":创建软链接(自动建在 /dev/ 下)

第三步:重载规则 & 验证

bash 复制代码
# 重载 udev 规则
sudo udevadm control --reload-rules
sudo udevadm trigger

# 拔插相机后检查
ls -l /dev/camera_*
# 输出应类似:
# lrwxrwxrwx 1 root root 6 Apr 7 camera_front -> video2

搞定!现在你的代码只需调用 /dev/camera_front,再也不怕设备顺序变了!


⚠️ 高频避坑指南

问题 解决方案
规则不生效 检查 idVendor/idProduct 是否正确;文件名必须以 .rules 结尾
权限不足 在规则末尾加 MODE="0666", GROUP="plugdev"
多台同型号相机 ATTRS{serial} 区分(需相机支持序列号)

💡 进阶技巧:按位置绑定(USB端口固定)

如果你的工控机 USB 接口物理位置固定,还可以按 总线路径 绑定:

udev 复制代码
SUBSYSTEM=="video4linux", KERNELS=="1-2.3", SYMLINK+="camera_left"

udevadm info -a -n /dev/video0 找到 KERNELS 路径。


✅ 总结

udev 规则 = 工业部署的"设备命名规范"

花 5 分钟配置,省下 50 小时调试!

别再让"设备漂移"拖垮你的自动化系统!


相关推荐
jsons15 分钟前
给每台虚拟机设置独立控制台密码
linux·运维·服务器
sanshanjianke9 分钟前
AI辅助网文创作理论研究笔记(十):软件框架设计——模块化B/S架构
人工智能·ai写作
CHANG_THE_WORLD11 分钟前
python 批量终止进程exe
开发语言·python
古城小栈12 分钟前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
云天AI实战派27 分钟前
AI 智能体问题排查指南:ChatGPT、API 调用到 Agent 上线失灵的全流程修复手册
大数据·人工智能·python·chatgpt·aigc
嵌入式×边缘AI:打怪升级日志29 分钟前
全志T113 Tina-SDK 配套工具链开发应用(从Makefile到CMake再到Autotools)
linux
嵌入式×边缘AI:打怪升级日志34 分钟前
全志T113嵌入式Linux开发环境搭建(VMware + Ubuntu 18.04)详细步骤
linux·ubuntu
Tutankaaa1 小时前
知识竞赛题库设计全攻略
人工智能·算法
TImCheng06091 小时前
职场人AI学习周期评估:不同学习路径的时间成本
人工智能·学习
云栖梦泽1 小时前
Linux内核与驱动:14.SPI子系统
linux·运维·服务器·c++