Skip to content

UVC Webcam functional on Control Hub USB 2.0 port but fails to initialize on 3.0 port #1428

Open
@ftc19743

Description

@ftc19743

We have a UVC webcam (ArduCam B0454) we have been using successfully this season on our Control Hub 2.0 port. We would like to move it over to the USB 3.0 port. When we do, the webcam is recognized on the USB bus and can be configured, but the FTC libraries fail to bring it online. Given that USB 3.0 is theoretically backward compatible with USB 2.0 devices, this is surprising. Below is what we see in the log when we try this. Emphasis added on a few lines.

We are keen to make this change to avoid the documented issues with the wifi chip and USB 2.0 port sharing a power supply, leading to disconnects. We had understood that it was also possible to connect a UVC webcam to the control hub USB C port, but cams connected that way are not recognized on the bus during configuration.

We would greatly appreciate any insights on how we might make this work.

Thank you,

2025-01-30 14:48:28.145   983-1527  RobotCore               com.qualcomm.ftcrobotcontroller      I  Attempting to switch to OpMode Examine Cam
2025-01-30 14:48:28.152   983-1527  RobotCore               com.qualcomm.ftcrobotcontroller      I  ******************** START - OPMODE Examine Cam ********************
2025-01-30 14:48:28.341   983-1527  HardwareMap             com.qualcomm.ftcrobotcontroller      D  Clearing which device instances have been retrieved
2025-01-30 14:48:28.344   983-1527  ThreadPool              com.qualcomm.ftcrobotcontroller      V  container(0x0720b30d: OpModeExecutor) added id=240 TID=0 count=1
2025-01-30 14:48:28.346   983-1535  RobotCore               com.qualcomm.ftcrobotcontroller      V  thread: 'OpModeThread' starting...
2025-01-30 14:48:28.348   983-1535  RevBlinkinLedDriver     com.qualcomm.ftcrobotcontroller      V  Pattern: BLACK, 99, 0.747500
2025-01-30 14:48:28.354   983-1535  System.out              com.qualcomm.ftcrobotcontroller      I  OpenCvCameraBase ctor: EasyOpenCV version 1.7.3
2025-01-30 14:48:28.364   983-1181  Robocol                 com.qualcomm.ftcrobotcontroller      V  sending CMD_NOTIFY_INIT_OP_MODE(11732), attempt: 0
2025-01-30 14:48:28.365   983-1181  Robocol                 com.qualcomm.ftcrobotcontroller      V  sending CMD_STREAM_CHANGE(11733), attempt: 0
2025-01-30 14:48:28.368   983-1536  CameraManager           com.qualcomm.ftcrobotcontroller      D  doOpenCamera()...
2025-01-30 14:48:28.369   983-1536  CameraManager           com.qualcomm.ftcrobotcontroller      D  requesting permission for camera: Webcam(YL20230518V0)
2025-01-30 14:48:28.382   983-1536  WebcamNameImpl          com.qualcomm.ftcrobotcontroller      D  requesting permission for /dev/bus/usb/001/004
2025-01-30 14:48:28.382   983-1536  WebcamNameImpl          com.qualcomm.ftcrobotcontroller      V  asyncRequestUsbPermission()...
2025-01-30 14:48:28.387   983-1536  WebcamNameImpl          com.qualcomm.ftcrobotcontroller      D  permission already available for /dev/bus/usb/001/004
2025-01-30 14:48:28.389   983-1536  ThreadPool              com.qualcomm.ftcrobotcontroller      V  container(0x0eecb4b2: default threadpool) added id=242 TID=0 count=1
2025-01-30 14:48:28.389   983-1536  WebcamNameImpl          com.qualcomm.ftcrobotcontroller      V  ...asyncRequestUsbPermission()
2025-01-30 14:48:28.390   983-1536  Continuati...nchronizer com.qualcomm.ftcrobotcontroller      D  awaiting(camera open)...
2025-01-30 14:48:28.391   983-1537  WebcamNameImpl          com.qualcomm.ftcrobotcontroller      D  permission for /dev/bus/usb/001/004=true
2025-01-30 14:48:28.391   983-1537  CameraManager           com.qualcomm.ftcrobotcontroller      D  permission granted for camera: Webcam(YL20230518V0)
2025-01-30 14:48:28.392   983-1537  CameraManager           com.qualcomm.ftcrobotcontroller      D  asyncOpenCamera(Webcam(YL20230518V0))...
**2025-01-30 14:48:28.393   983-1537  CameraManager           com.qualcomm.ftcrobotcontroller      D  asyncOpenWebcam(Webcam(YL20230518V0))...**
2025-01-30 14:48:28.393   983-1537  UsbResiliantWebcam      com.qualcomm.ftcrobotcontroller      V  construct(0x0d0f193c)
2025-01-30 14:48:28.394   983-1537  UsbResiliantWebcam      com.qualcomm.ftcrobotcontroller      D  openAssumingPermission()...
**2025-01-30 14:48:28.401   983-1537  UvcContext              com.qualcomm.ftcrobotcontroller      D  found webcam: usbPath=/dev/bus/usb/001/004 vid=0x1BCF pid=0x284C serial=YL20230518V0 product=Arducam 5MP Camera Module**
2025-01-30 14:48:28.401   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [jni_context.cpp:120] Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcContext_nativeCreateUvcDevice()...
2025-01-30 14:48:28.401   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      V  API: Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcContext_nativeCreateUvcDevice: enter...
2025-01-30 14:48:28.402   983-1537  libusb                  com.qualcomm.ftcrobotcontroller      D  [800.162842] [00000601] libusb: debug [op_create] op_create: szUsbPath=/dev/bus/usb/001/004 szSysfsDir=1-1
2025-01-30 14:48:28.402   983-1537  libusb                  com.qualcomm.ftcrobotcontroller      D  [800.163085] [00000601] libusb: debug [initialize_device] initialize_device(szUsbPath=/dev/bus/usb/001/004 szSysfsDir=1-1)
2025-01-30 14:48:28.403   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:613] uvc_create_uvc_device()...
2025-01-30 14:48:28.403   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:347] uvc_device::uvc_device()...
2025-01-30 14:48:28.403   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:376] acquired vid=7119 & pid=10316
2025-01-30 14:48:28.403   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:347] ...uvc_device::uvc_device()
2025-01-30 14:48:28.404   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:613] ...uvc_create_uvc_device() rc=0
2025-01-30 14:48:28.404   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      V  API: Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcContext_nativeCreateUvcDevice: ...exit
2025-01-30 14:48:28.404   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [jni_context.cpp:120] ...Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcContext_nativeCreateUvcDevice()
2025-01-30 14:48:28.404   983-1537  UvcDevice               com.qualcomm.ftcrobotcontroller      V  construct(pointer=0x7e69fb48c0|null)
2025-01-30 14:48:28.405   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [jni_device.cpp:108] Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcDevice_nativeGetLibUsbDevice()...
2025-01-30 14:48:28.405   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [jni_device.cpp:108] ...Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcDevice_nativeGetLibUsbDevice()
2025-01-30 14:48:28.405   983-1537  LibUsbDevice            com.qualcomm.ftcrobotcontroller      V  construct(pointer=0x7e672a1340)
**2025-01-30 14:48:28.406   983-1537  UvcContext              com.qualcomm.ftcrobotcontroller      D  usb device is *not* UVC compatible, /dev/bus/usb/003/003**
2025-01-30 14:48:28.410   983-1537  UvcDevice               com.qualcomm.ftcrobotcontroller      D  open()...
2025-01-30 14:48:28.495   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [jni_device.cpp:50] Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcDevice_nativeSetUsbDeviceInfo()...
2025-01-30 14:48:28.495   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [jni_device.cpp:50] ...Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcDevice_nativeSetUsbDeviceInfo()
2025-01-30 14:48:28.495   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [jni_device.cpp:233] Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcDevice_nativeOpenDeviceHandle()...
2025-01-30 14:48:28.495   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      V  API: Java_org_firstinspires_ftc_robotcore_internal_camera_libuvc_nativeobject_UvcDevice_nativeOpenDeviceHandle: enter...
2025-01-30 14:48:28.495   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:279] uvc_open()...
2025-01-30 14:48:28.495   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:357] uvc_device::open()...
2025-01-30 14:48:28.495   983-1537  libusb                  com.qualcomm.ftcrobotcontroller      D  [800.255892] [00000601] libusb: debug [op_open] op_open: szUsbPath=/dev/bus/usb/001/004
2025-01-30 14:48:28.495   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:357] ...uvc_device::open() rc=0
2025-01-30 14:48:28.495   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:295] calling libusb_reset_device()...
2025-01-30 14:48:28.504   425-519   EventHub                system_server                        I  Removing device Arducam 5MP Camera Module due to epoll hang-up event.
2025-01-30 14:48:28.504   425-519   EventHub                system_server                        I  Removed device: path=/dev/input/event2 name=Arducam 5MP Camera Module id=8 fd=178 classes=0x80000401
2025-01-30 14:48:28.547   425-510   WiredAccessoryManager   system_server                        V  Headset UEVENT: {SUBSYSTEM=switch, SEQNUM=1929, ACTION=change, SWITCH_STATE=0, SWITCH_NAME=usb_audio, DEVPATH=/devices/virtual/switch/usb_audio}
2025-01-30 14:48:28.547   425-510   WiredAccessoryManager   system_server                        V  newName=usb_audio newState=0 headsetState=0 prev headsetState=4
2025-01-30 14:48:28.547   425-510   WiredAccessoryManager   system_server                        I  MSG_NEW_DEVICE_STATE
2025-01-30 14:48:28.548   425-425   WiredAccessoryManager   system_server                        V  headsetName:  disconnected
2025-01-30 14:48:28.549   425-510   WiredAccessoryManager   system_server                        V  Headset UEVENT: {SUBSYSTEM=switch, SEQNUM=1933, ACTION=change, SWITCH_STATE=-1, SWITCH_NAME=usb_audio_capture, DEVPATH=/devices/virtual/switch/usb_audio_capture}
2025-01-30 14:48:28.550   425-491   UsbAlsaManager          system_server                        D  ALSA device removed: AlsaDevice: [card: 3, device: 0, type: 2]
**2025-01-30 14:48:28.563   425-519   EventHub                system_server                        I  Removing device '/dev/input/event2' due to inotify event
2025-01-30 14:48:28.563   425-519   InputReader             system_server                        I  Device removed: id=8, name='Arducam 5MP Camera Module', sources=0x00002103**
2025-01-30 14:48:28.795   425-519   EventHub                system_server                        D  No input device configuration file found for device 'Arducam 5MP Camera Module'.
2025-01-30 14:48:28.801   425-519   EventHub                system_server                        W  Unable to disable kernel key repeat for /dev/input/event2: Function not implemented
2025-01-30 14:48:28.801   425-519   EventHub                system_server                        I  New device: id=9, fd=88, path='/dev/input/event2', name='Arducam 5MP Camera Module', classes=0x80000401, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false, wakeMechanism=EPOLLWAKEUP, usingClockIoctl=true
2025-01-30 14:48:28.801   425-519   InputReader             system_server                        I  Device added: id=9, name='Arducam 5MP Camera Module', sources=0x00002103
2025-01-30 14:48:33.368   983-1536  Continuati...nchronizer com.qualcomm.ftcrobotcontroller      E  deadline expired during await()
2025-01-30 14:48:33.368   983-1536  Continuati...nchronizer com.qualcomm.ftcrobotcontroller      D  ...awaiting(camera open)
2025-01-30 14:48:33.368   983-1536  CameraManager           com.qualcomm.ftcrobotcontroller      D  ...doOpenCamera()
2025-01-30 14:48:33.368   983-1536  VisionPortalImpl        com.qualcomm.ftcrobotcontroller      E  Camera opening failed.
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:303] ...libusb_reset_device() called
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:311] libusb_open() = 0
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:733] uvc_device_handle::uvc_device_handle()...
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:733] ...uvc_device_handle::uvc_device_handle()
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:386] uvc_get_device_info()...
2025-01-30 14:48:35.000   983-1537  libusb                  com.qualcomm.ftcrobotcontroller      D  [806.761196] [00000601] libusb: debug [op_get_config_descriptor] op_get_config_descriptor: config_index=0
2025-01-30 14:48:35.000   983-1537  libusb                  com.qualcomm.ftcrobotcontroller      D  [806.761233] [00000601] libusb: debug [op_get_config_descriptor] op_get_config_descriptor: config_index=0
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:986] uvc_scan_control()...
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1041] uvc_parse_vc_header()...
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1284] uvc_scan_streaming()...
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1340] uvc_parse_vs_input_header()...
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1340] ...uvc_parse_vs_input_header() rc=0
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1449] uvc_parse_vs_format_mjpeg()...
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1449] ...uvc_parse_vs_format_mjpeg() rc=0
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      V  [device.cpp:1630] unsupported descriptor subtype: 3 UVC_VS_STILL_IMAGE_FRAME
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      V  [device.cpp:1630] unsupported descriptor subtype: 13 UVC_VS_COLORFORMAT
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1389] uvc_parse_vs_format_uncompressed()...
2025-01-30 14:48:35.000   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1389] ...uvc_parse_vs_format_uncompressed() rc=0
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      V  [device.cpp:1630] unsupported descriptor subtype: 3 UVC_VS_STILL_IMAGE_FRAME
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      V  [device.cpp:1630] unsupported descriptor subtype: 13 UVC_VS_COLORFORMAT
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1284] ...uvc_scan_streaming() rc=0
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1041] ...uvc_parse_vc_header() rc=0
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1083] uvc_parse_vc_input_terminal()...
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1083] ...uvc_parse_vc_input_terminal() rc=0
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1156] uvc_parse_vc_processing_unit()...
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:1156] ...uvc_parse_vc_processing_unit() rc=0
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:986] ...uvc_scan_control() rc=0
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:386] ...uvc_get_device_info() rc=0
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:326] claiming control interface 0
2025-01-30 14:48:35.001   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:771] uvc_device_handle::claimInterface(idx=0)...
2025-01-30 14:48:35.001   425-510   WiredAccessoryManager   system_server                        V  Headset UEVENT: {SUBSYSTEM=switch, SEQNUM=1941, ACTION=change, SWITCH_STATE=30, SWITCH_NAME=usb_audio_capture, DEVPATH=/devices/virtual/switch/usb_audio_capture}
2025-01-30 14:48:35.001   425-491   UsbAlsaManager          system_server                        D  Adding ALSA device AlsaDevice: [card: 3, device: 0, type: 2]
2025-01-30 14:48:35.001   425-510   WiredAccessoryManager   system_server                        V  Headset UEVENT: {SUBSYSTEM=switch, SEQNUM=1942, ACTION=change, SWITCH_STATE=1, SWITCH_NAME=usb_audio, DEVPATH=/devices/virtual/switch/usb_audio}
2025-01-30 14:48:35.001   983-1537  UvcDevice               com.qualcomm.ftcrobotcontroller      D  claimInterface(0)
2025-01-30 14:48:35.002   425-510   WiredAccessoryManager   system_server                        V  newName=usb_audio newState=4 headsetState=4 prev headsetState=0
2025-01-30 14:48:35.002   425-510   WiredAccessoryManager   system_server                        I  MSG_NEW_DEVICE_STATE
2025-01-30 14:48:35.002   425-425   WiredAccessoryManager   system_server                        V  headsetName:  connected
2025-01-30 14:48:35.003   197-197   APM_AudioPolicyManager  audioserver                          D  setDeviceConnectionState() could not find HW module for device 00000800
2025-01-30 14:48:35.003   425-539   AudioService            system_server                        E  not connecting device 0x800 due to command error 1
2025-01-30 14:48:35.004   425-519   EventHub                system_server                        I  Removing device Arducam 5MP Camera Module due to epoll hang-up event.
2025-01-30 14:48:35.004   425-519   EventHub                system_server                        I  Removed device: path=/dev/input/event2 name=Arducam 5MP Camera Module id=9 fd=88 classes=0x80000401
2025-01-30 14:48:35.056   425-519   InputReader             system_server                        I  Device removed: id=9, name='Arducam 5MP Camera Module', sources=0x00002103
2025-01-30 14:48:35.057   425-519   EventHub                system_server                        I  Removing device '/dev/input/event2' due to inotify event
2025-01-30 14:48:35.082   983-1537  UvcDevice               com.qualcomm.ftcrobotcontroller      D  claimInterface(0) succeeded
2025-01-30 14:48:35.082   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:784] claimInterface(0) succeeded
2025-01-30 14:48:35.082   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [libuvc/libuvc_internal.h:771] ...uvc_device_handle::claimInterface() rc=0
2025-01-30 14:48:35.082   983-1537  Uvc                     com.qualcomm.ftcrobotcontroller      D  [device.cpp:279] ...uvc_open() rc=0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions