• DepthAI-v2
  • OAK-D Pro PoE : cannot find Device => must reboot

Hi,

We are using 2 OAK-D Pro PoE via a PoE switch for an intrusion detection system. We use the C++ library depth-ai-core v2.27.0

It happens frequently that when the computer starts, it can't connect to the cameras (error message is "Cannot find any device with given deviceInfo"). We have to unplug and replug the ethernet cables (or turn off/on the electricity). Then the connection is OK when the cameras are rebooted, and the system works fine until it is shut down.

The problem occurs also when we are testing, and have to disconnect the software from the cameras. It happens (1 out of 5 times maybe), that the same problem occurs, and we have to reboot the cameras via ethernet PoE cables.

Is there a state in which the cameras might be and could not be initialized correctly ? Or badly initialized ? Is it possible to send a command to reboot their software ?

Sincerely,

Thomas Barthoulot

5 days later

Hi,

Thank you for the answer. Actually, I indeed saw that message of the booloader not up-to-date, and I already updated it to the version 0.0.28 .

This did not change the problem, that is why I asked here. I can reproduce the problem quite easily. For example, sometimes I am in debug mode, and the watchdog closes the connection, then when I try to relaunch the application, it happens quite frequently that I cannot connect anymore and that I have to unplug the camera.

Also, when the camera is "unavailable", I can not ping it anymore.

Would it be something to log/report that could help a diagnosis ?

    tbarthoulot
    Might be the device issue; can you run the scripts with DEPTHAI_DEBUG=1 to check if the output is any different when the device works and when it doesn't (the run before it fails to then reinitialize).

    It's also possible you have multiple network interfaces available so the PC might not know where to send the data. That could happen if you were using both ETH (for comms with device) and WIFI (for internet).

    Thanks,
    Jaka

    When I use python scripts from your packages, it works fine unless I SIGKILL the script. Then, the phenomenon is the same, it cannot connect anymore to the device.

    In my application, I have put dai::Device::getAllAvailableDevices and dai::Device::getAllConnectedDevices.

    When a script or my application crash (stop the debugger for example), the devices are detected with getAllConnectedDevices, but are not listed from getAllAvailableDevices .

    It seems that the availability comes back after something like 80/90 seconds. Maybe I should just wait longer between 2 executions of the application, in order to let the devices reboot.

    Is it possible to force a device to disconnect/close only by its DeviceInfo ? As I can see the devices and not connect to them sometimes, I could just check if they are available and force them to close.

    Thanks,

    Thomas

      tbarthoulot When I use python scripts from your packages, it works fine unless I SIGKILL the script. Then, the phenomenon is the same, it cannot connect anymore to the device.

      Oh, yes, I guess since you are using a python context manager, using a SIGKILL will not trigger the dai.Device() destructor which will keep it in a running state even after the script is killed. Use SIGTERM or SIGINT.

      Thanks,
      Jaka