news 2026/4/21 21:12:05

避坑指南:在Ubuntu 20.04上安装librealsense SDK时遇到的几个典型错误及解决方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
避坑指南:在Ubuntu 20.04上安装librealsense SDK时遇到的几个典型错误及解决方法

避坑指南:在Ubuntu 20.04上安装librealsense SDK时遇到的几个典型错误及解决方法

第一次在Ubuntu 20.04上配置Intel RealSense环境时,很多开发者都会遇到各种意想不到的问题。从内核模块签名失败到USB 3.0连接异常,再到特定版本SDK对老型号相机的兼容性问题,每一个坑都可能让你花费数小时甚至数天的时间去排查。本文将分享我在多个项目实践中遇到的五个最具代表性的安装问题及其解决方案,帮助你在遇到类似情况时能够快速定位并解决问题。

1. 内核模块签名失败:Secure Boot引发的噩梦

当你在终端看到"Required key not available"或"module verification failed"这样的错误信息时,很可能是Ubuntu的Secure Boot安全机制在作祟。Secure Boot会阻止加载未经签名的内核模块,而librealsense的DKMS模块恰好属于这类。

1.1 错误现象

尝试安装librealsense2-dkms时,系统提示:

Building for 5.4.0-42-generic Building initial module for 5.4.0-42-generic ERROR: Cannot create report: [Errno 17] File exists run-parts: /etc/kernel/postinst.d/dkms exited with return code 10

1.2 解决方案

有两种方法可以解决这个问题:

方法一:临时禁用Secure Boot

  1. 重启电脑,进入BIOS设置
  2. 找到Secure Boot选项并将其禁用
  3. 保存设置并重启

方法二:为模块签名(推荐)

# 安装必要工具 sudo apt-get install mokutil # 生成密钥 openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/" # 导入密钥 sudo mokutil --import MOK.der # 重启后按照提示完成密钥注册

提示:方法二虽然步骤较多,但能保持系统安全性,适合生产环境使用。

2. DKMS编译错误:内核头文件的版本陷阱

DKMS编译失败是另一个常见问题,通常是由于内核版本不匹配导致的。Ubuntu 20.04默认安装的是5.4内核,但系统更新后可能会安装更新的内核版本。

2.1 典型错误日志

make[1]: *** /lib/modules/5.4.0-42-generic/build: No such file or directory. Stop.

2.2 解决步骤

  1. 首先确认当前运行的内核版本:

    uname -r
  2. 安装对应版本的内核头文件:

    sudo apt-get install linux-headers-$(uname -r)
  3. 如果问题依旧,尝试完全重新安装DKMS模块:

    sudo apt-get purge librealsense2-dkms sudo apt-get install librealsense2-dkms

2.3 版本兼容性对照表

内核版本所需头文件包备注
5.4.xlinux-headers-5.4.0-xxLTS默认版本
5.8.xlinux-headers-5.8.0-xxHWE版本
5.11.xlinux-headers-5.11.0-xx手动安装版本

3. USB 3.0连接问题:速度与稳定的平衡

RealSense D400系列相机需要USB 3.0接口才能正常工作,但很多用户在连接时遇到设备识别不稳定或频繁断开的问题。

3.1 诊断方法

  1. 检查当前连接速度:

    lsusb -t | grep RealSense

    正常应该显示"5000M"(USB 3.0速度)

  2. 如果显示"480M",说明设备运行在USB 2.0模式

3.2 解决方案

  • 更换USB线缆:使用带屏蔽的优质USB 3.0线缆
  • 禁用USB自动挂起
    echo 'options usbcore autosuspend=-1' | sudo tee /etc/modprobe.d/usb-autosuspend.conf sudo update-initramfs -u
  • 调整电源管理
    sudo apt-get install tuned sudo tuned-adm profile latency-performance

4. 版本兼容性问题:T265相机的特殊待遇

从librealsense v2.54.1开始,官方停止了对T265追踪相机的支持,这让很多还在使用这款设备的开发者措手不及。

4.1 现象描述

运行realsense-viewer时,T265相机无法被识别,日志中显示:

No device detected. Is it plugged in?

4.2 解决方案

  1. 降级到v2.53.1版本

    sudo apt-get purge librealsense2* wget https://github.com/IntelRealSense/librealsense/releases/download/v2.53.1/librealsense2_2.53.1-0~realsense0.6128_amd64.deb sudo dpkg -i librealsense2_2.53.1-0~realsense0.6128_amd64.deb
  2. 使用ROS封装(如果项目允许):

    sudo apt-get install ros-noetic-realsense2-camera roslaunch realsense2_camera rs_camera.launch

注意:降级前请备份重要数据,不同版本间的配置文件可能不兼容。

5. realsense-viewer无法启动:GLX问题的排查

很多用户在第一次运行realsense-viewer时遇到崩溃或无法启动的问题,这通常与图形驱动和OpenGL支持有关。

5.1 常见错误

Failed to create GLFW window GLX: Failed to create context: GLXBadFBConfig

5.2 解决步骤

  1. 首先检查OpenGL支持:

    glxinfo | grep "OpenGL version"
  2. 如果版本低于3.0,考虑更新驱动:

    • 对于NVIDIA显卡:
      sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-driver-470
    • 对于Intel集成显卡:
      sudo apt-get install mesa-utils libgl1-mesa-glx libgl1-mesa-dri
  3. 如果问题依旧,尝试软件渲染模式:

    LIBGL_ALWAYS_SOFTWARE=1 realsense-viewer

6. 权限问题:udev规则的正确配置

即使安装成功,普通用户运行时仍可能遇到权限不足的问题,表现为设备无法打开或功能受限。

6.1 典型症状

Could not open device: Permission denied

6.2 永久解决方案

  1. 检查udev规则是否安装:

    ls /etc/udev/rules.d/99-realsense-libusb.rules
  2. 如果没有,手动复制规则文件:

    sudo cp /usr/lib/x86_64-linux-gnu/librealsense2/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && sudo udevadm trigger
  3. 将用户加入video和plugdev组:

    sudo usermod -a -G video,plugdev $USER

记得重新登录使组变更生效。如果还是遇到问题,可以尝试临时使用root权限运行viewer进行测试。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 21:11:03

【ROS2实战笔记-8】Agnocast:ROS 2跨进程零拷贝的工程实现与取舍

“零拷贝”在ROS 2语境下是一个经常被讨论的概念。许多开发者听说过Fast DDS的共享内存、Iceoryx或者Node Composition,但对于它们之间真正的差异、各自的边界条件以及为什么需要一个叫Agnocast的新方案,未必有一个清晰的认知。本文从Autoware在自动驾驶…

作者头像 李华
网站建设 2026/4/21 21:10:35

别再让CDC问题搞砸你的芯片了!手把手教你用Spyglass搞定跨时钟域检查

芯片设计中的CDC陷阱:用Spyglass构建稳健的跨时钟域验证体系 在28nm以下的先进工艺节点中,跨时钟域(CDC)问题导致的芯片失效案例占比高达37%。当设计工程师熬夜三个月完成的RTL代码,最终因为亚稳态问题导致流片失败时,那种挫败感足…

作者头像 李华
网站建设 2026/4/21 21:09:37

SciPy 怎么做图像过滤和边缘检测?

SciPy 中的滤波是什么? 图像处理中的滤波 是一种基本技术,用于多种任务,如降噪、图像增强和特征提取。图像滤波器通过根据邻域像素值修改或处理图像的像素值,或应用数学变换来工作。 In SciPy 中,可以对图像应用滤波…

作者头像 李华
网站建设 2026/4/21 21:08:37

保姆级教程:在LabVIEW 2023中用IMAQdx稳定驱动海康MV-CA系列网口相机

LabVIEW 2023与海康MV-CA系列网口相机深度集成指南 当工业视觉项目遇上高精度检测需求,海康威视MV-CA系列网口相机往往成为工程师的首选。这款搭载Sony IMX传感器的工业相机,配合LabVIEW强大的图形化开发环境,能构建出稳定高效的机器视觉系统…

作者头像 李华
网站建设 2026/4/21 21:06:46

两道 LeetCode 题的复盘笔记:从「只会暴力」到「懂优化」

目录 136. 只出现一次的数字(简单) 思路一:暴力哈希表(入门解法) 思路二:异或运算(最优解) 72. 编辑距离(中等) 核心思想:动态规划 状态转移…

作者头像 李华