c++ - OpenNI: "Open failed: Device is in safe mode. Cannot start any stream!"

标签 c++ linux usb openni primesense

我使用带有 primesense 传感器的 OpenNi 来获取深度图像。 NiViwer 示例工作正常,但如果在 Linux 启动之前连接传感器,当我运行 NiViewer 或使用 OpenNi 的任何其他程序时,它会退出并出现以下错误:

打开失败:设备处于安全模式。无法启动任何直播!

这是完整的日志:

      522 INFO       OpenNI version is 1.2.0 (Build 7)-Linux-x86 (May 15 2011 10:29:37)
      572 INFO       Filter Info - minimum severity: VERBOSE, masks: ALL
      704 VERBOSE    Found exported production node. Script: OpenNI/OpenNI/1.2.0.7
      983 VERBOSE    Checking /opt/OpenNI/lib/libnimMockNodes.so...
     3240 VERBOSE    Found exported production node. ProductionNode: OpenNI/Mock/1.2.0.7
     3297 VERBOSE    Found exported production node. Generator: OpenNI/Mock/1.2.0.7
     3375 VERBOSE    Found exported production node. MapGenerator: OpenNI/Mock/1.2.0.7
     3414 VERBOSE    Found exported production node. Device: OpenNI/Mock/1.2.0.7
     3447 VERBOSE    Found exported production node. Depth: OpenNI/Mock/1.2.0.7
     3483 VERBOSE    Found exported production node. IR: OpenNI/Mock/1.2.0.7
     3518 VERBOSE    Found exported production node. Image: OpenNI/Mock/1.2.0.7
     3551 VERBOSE    Found exported production node. Audio: OpenNI/Mock/1.2.0.7
     3589 VERBOSE    Checking /opt/OpenNI/lib/libnimCodecs.so...
     5219 VERBOSE    Found exported production node. Codec: OpenNI/16zP/1.2.0.7
     5270 VERBOSE    Found exported production node. Codec: OpenNI/16zT/1.2.0.7
     5299 VERBOSE    Found exported production node. Codec: OpenNI/Im8z/1.2.0.7
     5372 VERBOSE    Found exported production node. Codec: OpenNI/JPEG/1.2.0.7
     5402 VERBOSE    Found exported production node. Codec: OpenNI/NONE/1.2.0.7
     5434 VERBOSE    Checking /opt/OpenNI/lib/libnimRecorder.so...
     6910 VERBOSE    Found exported production node. Recorder: OpenNI/Recorder/1.2.0.7
     6964 VERBOSE    Found exported production node. Player: OpenNI/Player/1.2.0.7
     6994 VERBOSE    Checking /opt/OpenNI/lib/libXnCore.so...
     8106 VERBOSE    Found exported production node. Script: OpenNI/OpenNI/1.2.0.7
     8135 WARNING    A Generator with the same description already exists!
     8148 WARNING    Failed to add generator 0 from module '/opt/OpenNI/lib/libXnCore.so'
     8163 VERBOSE    Checking /opt/OpenNI/lib/libXnDDK.so...
    13802 VERBOSE    Found exported production node. Script: OpenNI/OpenNI/1.2.0.7
    13836 WARNING    A Generator with the same description already exists!
    13850 WARNING    Failed to add generator 0 from module '/opt/OpenNI/lib/libXnDDK.so'
    13865 VERBOSE    Checking /opt/OpenNI/lib/libXnDeviceFile.so...
    16408 VERBOSE    Found exported production node. Player: PrimeSense/File/5.0.2.3
    16460 VERBOSE    Checking /opt/OpenNI/lib/libXnDeviceSensorV2.so...
    20778 VERBOSE    Found exported production node. Device: PrimeSense/SensorV2/5.0.2.3
    20833 VERBOSE    Found exported production node. Depth: PrimeSense/SensorV2/5.0.2.3
    20870 VERBOSE    Found exported production node. Image: PrimeSense/SensorV2/5.0.2.3
    20902 VERBOSE    Found exported production node. IR: PrimeSense/SensorV2/5.0.2.3
    20934 VERBOSE    Found exported production node. Audio: PrimeSense/SensorV2/5.0.2.3
    20963 VERBOSE    Checking /opt/OpenNI/lib/libXnFormats.so...
    21066 VERBOSE    Found exported production node. Script: OpenNI/OpenNI/1.2.0.7
    21082 WARNING    A Generator with the same description already exists!
    21093 WARNING    Failed to add generator 0 from module '/opt/OpenNI/lib/libXnFormats.so'
    21410 INFO       Creating node 'Script1' of type Script: OpenNI/OpenNI/1.2.0.7...
    21741 VERBOSE    Requested to create a node of type Depth...
    21875 VERBOSE    Initializing USB...
    22046 INFO       USB is initialized.
    34087 INFO       Creating node 'Device1' of type Device: PrimeSense/SensorV2/5.0.2.3...
    57436 WARNING    Server returned an error: Device is in safe mode. Cannot start any stream!
    58380 INFO       Destroying node 'Script1'
Open failed: Device is in safe mode. Cannot start any stream!
Press any key to continue . . .

拔下并重新插入可以解决问题,但我需要它在没有这个技巧的情况下工作。

我认为这个问题与USB模块有关。我已经使用内核 2.6.39 和 3.0.6 对此进行了测试

错误似乎发生在这里:libXnDeviceSensorV2.so XnSensorFirmware.cpp

XnStatus XnSensorFirmware::Init(XnBool bReset)
{
    XnStatus nRetVal = XN_STATUS_OK;

    // check current mode
    XnUInt16 nMode;
    nRetVal = XnHostProtocolGetMode(m_pDevicePrivateData, nMode);
    XN_IS_STATUS_OK(nRetVal);

    if (bReset)
    {
        // check if safe mode
        if (nMode == XN_HOST_PROTOCOL_MODE_SAFE_MODE)
        {
            XN_LOG_WARNING_RETURN(XN_STATUS_DEVICE_SAFE_MODE, XN_MASK_DEVICE_SENSOR, "Device is in safe mode. Cannot start any stream!");
        }

最佳答案

已解决将固件更新到V1.06:http://www.openni.org/Downloads/OpenNIModules.aspx

关于c++ - OpenNI: "Open failed: Device is in safe mode. Cannot start any stream!",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702320/

相关文章:

c++ - 在 Windows 上与 USB HID 设备进行通信的最佳 USB 库是什么?

linux - xhci-hcd xhci-hcd.0.auto : xHCI host not responding to stop endpoint command

c++ - 函数可以接受静态函数指针作为参数吗?

c++ - 阅读(?)转义字符

c++ - 在 constexpr 函数中返回一个 C 字符串 : why no warning from the compiler?

linux - 获取事件接口(interface)的mac地址

Android 模拟器在 Ubuntu 上卡住

c# - 如何获取 MIDI 设备的当前状态?

linux - 在 Fedora 23 上安装特定版本的 pupppet

android - 如何通过 Broadcast Receiver 检测我的 android 设备是否连接到 usb 或 car dock?