Hi all ,

I was checking this param "depthai.UsbSpeed" that has several options from LOW to SUPER_PLUS.
1- When should I use this param and what is its default value ?
2- Does using LOW and FULL options can harm the quality and the performance of the pipeline ?
3- I tried to use the param with Raspberry using only USB 2 ports. What is the required value to apply on a Raspberry ?
4- What is the difference between using this param and using Usb2Mode=True ?

I appreciate your help in advance , Thank you

Martin

  • jakaskerl replied to this.
  • Hi martin181818

    1. You don't need to use it other that to limit usb speed i think. Depthai will automatically set the speed to the highest setting.
    2. Low will harm performance, high won't affect it.
    3. Don't apply anything.
    4. depthai.usbspeed is used with maxusbspeed paramerter which will only limit the speed of your USB connection. Using usb2mode = True will boot the device with usb2 firmware.

    Thanks,
    Jaka

    Hi martin181818

    1. You don't need to use it other that to limit usb speed i think. Depthai will automatically set the speed to the highest setting.
    2. Low will harm performance, high won't affect it.
    3. Don't apply anything.
    4. depthai.usbspeed is used with maxusbspeed paramerter which will only limit the speed of your USB connection. Using usb2mode = True will boot the device with usb2 firmware.

    Thanks,
    Jaka

      22 days later

      Hi jakaskerl,

      thanks for the information, but to me it is still not fully clear when and how to force USB2 communication.

      Since depthai v2.22.0.0, using usb2Mode=True seems to be deprecated (also see this issue). From Erik's answer, I thought that using maxUsbSpeed=dai.UsbSpeed.HIGH is the correct way now to force USB2 communication (also see Troubleshooting).

      In the FAQ still the "old" (?) approach is described to force USB2 communication.

      Could you explain more in depth what exactly is the difference between the two approaches, e.g. limit the speed of the USB connection and boot the device with usb2 firmware. What are possible advantages when booting with usb2 firmware if connected to a USB2-only host (e.g. Raspberry Pi Zero 2 W)?

      Thanks!

        maxsitt In the FAQ still the "old" (?) approach is described to force USB2 communication.

        Thanks for noticing, we'll change that one as well.

        maxsitt Could you explain more in depth what exactly is the difference between the two approaches, e.g. limit the speed of the USB connection and boot the device with usb2 firmware. What are possible advantages when booting with usb2 firmware if connected to a USB2-only host (e.g. Raspberry Pi Zero 2 W)?

        Perhaps @erik is able to shed some more light on the matter.

        Thanks,
        Jaka

        • erik replied to this.

          Hi jakaskerl ,
          If you have USB2 host, then you should force USB2 mode in depthai as well. Afaik there were some issues with USB stack in RVC2, which caused problems when having USB3 mode on USB2 link.

            Hi erik,

            So with "force USB2 mode" you mean setting maxUsbSpeed=dai.UsbSpeed.HIGH?
            usb2Mode=True does not have any advantages over it or is deprecated?

            Thanks!

              Hi maxsitt ,
              That's correct. usb2Mode has been replaced by maxUsbSpeed, otherwise it's the same setting (forcing USB2 mode).

              10 months later

              Hello @erik
              I am not sure if this is the correct place to ask this, but I think this can be a follow-up question in this post.

              I have a problem with USB connection. I have OAK-D camera with USB3.0. My monitor has "plug-in" USB ports including 2 USB Ports indicating they have SS , but not colored blue. Although I am trying with dai.Device(pipeline, MaxUsbSpeed=dai.UsbSpeed.SUPER_PLUS) as device: in

              \depthai-python\examples\ColorCamera\rgb_preview.py

              I still get

              Usb speed: HIGH

              Afaik, if it is written next to the port that it is SS, I should be able to use its SuperSpeed facility, so it is basically 3.0. But why am I getting USB 2.0 speed from that port? My OS: Windows 11

              • By using Get-WmiObject -Query "SELECT * FROM Win32_USBHub" in powershell it gives:

              __GENUS : 2
              __CLASS : Win32_USBHub
              __SUPERCLASS : CIM_USBHub
              __DYNASTY : CIM_ManagedSystemElement
              __RELPATH : Win32_USBHub.DeviceID="USB\\VID_0BDA&PID_0411\\6&5C0E972&0&2"
              __PROPERTY_COUNT : 28
              __DERIVATION : {CIM_USBHub, CIM_USBDevice, CIM_LogicalDevice, CIM_LogicalElement...}
              __SERVER : PF4VK7GK
              __NAMESPACE : root\cimv2
              __PATH : \\PF4VK7GK\root\cimv2:Win32_USBHub.DeviceID="USB\\VID_0BDA&PID_0411\\6&5C0E972&0&2"
              Availability :
              Caption : Generic SuperSpeed USB Hub
              ClassCode :
              ConfigManagerErrorCode : 0
              ConfigManagerUserConfig : False
              CreationClassName : Win32_USBHub
              CurrentAlternateSettings :
              CurrentConfigValue :
              Description : Generic SuperSpeed USB Hub
              DeviceID : USB\VID_0BDA&PID_0411\6&5C0E972&0&2
              ErrorCleared :
              ErrorDescription :
              GangSwitched :
              InstallDate :
              LastErrorCode :
              Name : Generic SuperSpeed USB Hub
              NumberOfConfigs :
              NumberOfPorts :
              PNPDeviceID : USB\VID_0BDA&PID_0411\6&5C0E972&0&2
              PowerManagementCapabilities :
              PowerManagementSupported :
              ProtocolCode :
              Status : OK
              StatusInfo :
              SubclassCode :
              SystemCreationClassName : Win32_ComputerSystem
              SystemName : PF4VK7GK
              USBVersion :
              PSComputerName : PF4VK7GK

              How to use USB 3.0 facility from that port so that I have faster video processing with OAK-D?

              Thanks in advance for your help!

              Bests
              Cem

              • Uce replied to this.

                Uce

                I just connected the cable of OAK-D to a different, blue colored and SS port and run USB Device Viewer.

                It says that Device Bus Speed: High, which is the same with the every ports I can use around me. So this might be realted to the cable of OAK-D which colored Blue but not operating at SuperSpeed. What do you think? @erik

                Hi @Uce
                Device that is not booted (id-03e7:2485) will act as an USB2 device. The first port you tested is probably USB2 while the second could be USB3 (SUPER speed) but you haven't booted the device to check.

                Thoughts?

                  Thank you for your reply jakaskerl

                  • How to boot the OAK-D device? Is it simply power off/on? If so, I did power off/on but the result are the same, it acts as an USB2 device.

                  • This video shows that I've connected the USB cable of the device to the blue colored SS USB3.0 port and yet it is shown as no USB3.0 protocols are supported as can be seen in here:

                    usb30.mp4
                    4MB

                  Any comments, opinions are truly appreciated.

                  Thanks
                  Cem

                  Hi jakaskerl

                  everytime I use dai.Device(pipeline), so it boots for sure.

                  When I run bandwidth test, I've got 337 mbps Downlink and 241 mbps Uplink.

                  That certainly means there is no USB3.0 connection here. Since I have used different USB3.0 ports to connect with the device, I think the cable or even device might not be acting as USB3.0 for some reason. So I will go with changing the cables.

                  A quick question is, can I also use male-male C type cable to connect the device to the host computer? Would this also provide a USB3.0 connection?

                  Another question is, do I need to have Y adapter if my host computer does not provide 1A current for the device so it is acting as USB2.0? Could this be the case?

                  Thanks
                  Uce

                    Uce A quick question is, can I also use male-male C type cable to connect the device to the host computer? Would this also provide a USB3.0 connection?

                    Yes.

                    Uce Another question is, do I need to have Y adapter if my host computer does not provide 1A current for the device so it is acting as USB2.0? Could this be the case?

                    You do need Y adapter if the current does not reach 2A, but it shouldn't cause USB2 mode.

                    Thanks,
                    Jaka

                    • Uce likes this.