• DepthAIHardware
  • "Failed to find device after booting, error message: X_LINK_DEVICE_NOT_FOUND"

I've bought a new 15m active USB3 cable and plugged it.
Set the speed to HIGH (not SUPER).
At first it worked pretty well, but after some crashes (which I thought related to the nn processing wrong configs), it refused to reconnect and I got this error:
Failed to find device after booting, error message: X_LINK_DEVICE_NOT_FOUND

I switched to a 0.5m cable and it worked just fine.

It's like my computer refuses to give it a try again, although it did find it and performed some image recordings.

My question is, how can I set the limit lower for it to work?

Said that, I thought that using an active cable, no matter how long, would make this issue gone, let alone a USB3 active cable.

    • Best Answerset by lerp

    lovro

    Just wanted to make clear that this message inspired me to look for solutions, leading to the fact the the active USB needs another external power input, and normally it connects in the end point of the cable (the female port).
    I tried to connect it to some external power, and it still didn't work - unless I connected the male port of the USB directly into the laptop (or the motherboard of the PC).

    I can't tell why it doesn't work when the male port connects to the Display hub, that connects in turn into the laptop (or the motherboard of the PC).

    But then it does work.

    Another tweak I've noticed to work: First connect the female active end point to an external power, only afterwards connect the male end point to the PC/laptop/Motherboard/hub. The other way, for some reason, doesn't work.

    here's a code I used to check the connectivity:

    # import depthai as dai
    
    
    # # Initialize the DepthAI device
    # try:
    #     pipeline = dai.Pipeline()
    #     with dai.Device(pipeline,maxUsbSpeed=dai.UsbSpeed.HIGH) as device:
    #         print("Device booted successfully!")
    # except Exception as e:
    #     print(f"Failed to boot the device: {e}")
    
    import depthai as dai
    
    pipeline = dai.Pipeline()
    
    with dai.Device(pipeline) as device:
        # USB Speed
        usb_speed = device.getUsbSpeed()
        print(f"USB Speed: {usb_speed.name}")
    
        # Device Info
        info = device.getDeviceInfo()
        print(f"Device MxId: {info.getMxId()}")
    
        # Memory Usage
        cmx_mem = device.getCmxMemoryUsage()
        print(f"CMX Memory - Used: {cmx_mem.used} / Total: {cmx_mem.total}")
        ddr_mem = device.getDdrMemoryUsage()
        print(f"DDR Memory - Used: {ddr_mem.used} / Total: {ddr_mem.total}")
    
        # Chip Temperature
        temperatures = device.getChipTemperature()
        print(f"CSS Temperature: {temperatures.css} °C")
        print(f"MSS Temperature: {temperatures.mss} °C")
        print(f"UPA Temperature: {temperatures.upa} °C")
    
        # XLink Chunk Size
        chunk_size = device.getXLinkChunkSize()
        print(f"XLink Chunk Size: {chunk_size} bytes")
    
        # Pipeline Status
        is_running = device.isPipelineRunning()
        print(f"Pipeline running: {is_running}")

    Here's the output once the signal stability is too low:

    Traceback (most recent call last):
      File "...\scripts\connectivity_test.py", line 16, in <module>
        with dai.Device(pipeline) as device:
    RuntimeError: Failed to find device after booting, error message: X_LINK_DEVICE_NOT_FOUND

    Here's the output when the setup is complete as mentioned above:

    USB Speed: SUPER
    Device MxId: 18.....<some_digits>....00
    CMX Memory - Used: 2170880 / Total: 2621440
    DDR Memory - Used: 131072 / Total: 349452031
    CSS Temperature: 27.639347076416016 °C
    MSS Temperature: 26.164669036865234 °C
    UPA Temperature: 24.68082046508789 °C
    XLink Chunk Size: 65536 bytes
    Pipeline running: True

Hey there,

It sounds like the 15m cable is struggling with either power delivery or signal integrity, even though it’s active. I’d suggest trying a powered USB hub between the cable and your device. It can help give the device the extra power it needs to stay stable.

    • Edited
    • Best Answerset by lerp

    lovro

    Just wanted to make clear that this message inspired me to look for solutions, leading to the fact the the active USB needs another external power input, and normally it connects in the end point of the cable (the female port).
    I tried to connect it to some external power, and it still didn't work - unless I connected the male port of the USB directly into the laptop (or the motherboard of the PC).

    I can't tell why it doesn't work when the male port connects to the Display hub, that connects in turn into the laptop (or the motherboard of the PC).

    But then it does work.

    Another tweak I've noticed to work: First connect the female active end point to an external power, only afterwards connect the male end point to the PC/laptop/Motherboard/hub. The other way, for some reason, doesn't work.

    here's a code I used to check the connectivity:

    # import depthai as dai
    
    
    # # Initialize the DepthAI device
    # try:
    #     pipeline = dai.Pipeline()
    #     with dai.Device(pipeline,maxUsbSpeed=dai.UsbSpeed.HIGH) as device:
    #         print("Device booted successfully!")
    # except Exception as e:
    #     print(f"Failed to boot the device: {e}")
    
    import depthai as dai
    
    pipeline = dai.Pipeline()
    
    with dai.Device(pipeline) as device:
        # USB Speed
        usb_speed = device.getUsbSpeed()
        print(f"USB Speed: {usb_speed.name}")
    
        # Device Info
        info = device.getDeviceInfo()
        print(f"Device MxId: {info.getMxId()}")
    
        # Memory Usage
        cmx_mem = device.getCmxMemoryUsage()
        print(f"CMX Memory - Used: {cmx_mem.used} / Total: {cmx_mem.total}")
        ddr_mem = device.getDdrMemoryUsage()
        print(f"DDR Memory - Used: {ddr_mem.used} / Total: {ddr_mem.total}")
    
        # Chip Temperature
        temperatures = device.getChipTemperature()
        print(f"CSS Temperature: {temperatures.css} °C")
        print(f"MSS Temperature: {temperatures.mss} °C")
        print(f"UPA Temperature: {temperatures.upa} °C")
    
        # XLink Chunk Size
        chunk_size = device.getXLinkChunkSize()
        print(f"XLink Chunk Size: {chunk_size} bytes")
    
        # Pipeline Status
        is_running = device.isPipelineRunning()
        print(f"Pipeline running: {is_running}")

    Here's the output once the signal stability is too low:

    Traceback (most recent call last):
      File "...\scripts\connectivity_test.py", line 16, in <module>
        with dai.Device(pipeline) as device:
    RuntimeError: Failed to find device after booting, error message: X_LINK_DEVICE_NOT_FOUND

    Here's the output when the setup is complete as mentioned above:

    USB Speed: SUPER
    Device MxId: 18.....<some_digits>....00
    CMX Memory - Used: 2170880 / Total: 2621440
    DDR Memory - Used: 131072 / Total: 349452031
    CSS Temperature: 27.639347076416016 °C
    MSS Temperature: 26.164669036865234 °C
    UPA Temperature: 24.68082046508789 °C
    XLink Chunk Size: 65536 bytes
    Pipeline running: True

    lerp

    Hey!

    Yes, those look good. For the second part, I think the issue with the display hub is that it’s not designed to provide stable power for active cables or high-power devices like the camera.

    Glad the connection order tweak worked!