diff --git a/libuvc_camera/src/camera_driver.cpp b/libuvc_camera/src/camera_driver.cpp index 7fee4545668ab6b7cf4824f9ca9b7004a29e9f82..04bffedd22404049d888ebb5d11ab05838c6c123 100644 --- a/libuvc_camera/src/camera_driver.cpp +++ b/libuvc_camera/src/camera_driver.cpp @@ -271,7 +271,29 @@ void CameraDriver::OpenCamera(UVCCameraConfig &new_config) { uvc_error_t open_err = uvc_open(dev_, &devh_); if (open_err != UVC_SUCCESS) { - uvc_perror(open_err, "uvc_open"); + switch (open_err) { + case UVC_ERROR_ACCESS: +#ifdef __linux__ + ROS_ERROR("Permission denied opening /dev/bus/usb/%03d/%03d", + uvc_get_bus_number(dev_), uvc_get_device_address(dev_)); +#else + ROS_ERROR("Permission denied opening device %d on bus %d", + uvc_get_device_address(dev_), uvc_get_bus_number(dev_)); +#endif + break; + default: +#ifdef __linux__ + ROS_ERROR("Can't open /dev/bus/usb/%03d/%03d: %s (%d)", + uvc_get_bus_number(dev_), uvc_get_device_address(dev_), + uvc_strerror(open_err), open_err); +#else + ROS_ERROR("Can't open device %d on bus %d: %s (%d)", + uvc_get_device_address(dev_), uvc_get_bus_number(dev_), + uvc_strerror(open_err), open_err); +#endif + break; + } + uvc_unref_device(dev_); return; }