Closed Jip-Hop closed 4 years ago
@Jip-Hop: unfortunately I don't have that camera model available for testing, but let's see if it can be figured out.
The LIBUSB_TRANSFER_OVERFLOW
error hints at the issue being upstream, in this case meaning uvc-control
which contains the configuration for how many bytes to read for each type of UVC control. I see that you also opened a similar issue in that library, and it might be better to solve it there and then update uvcc
when a new version is ready.
Some suggestions:
Some questions:
uvcc
before reading the current white balance temperature? (The camera might not report the "current" value as expected, or the value set on the camera might actually be out of the expected range.)range
of the gain
in uvcc
? My Logitech C920 reports a gain range of 0-255, so 2306 seems way too high. (See some debugging output in a separate comment.)gain
through uvcc
?uvcc
/uvc-control
branches and see if it fixes the problem? See instructions in this uvc-control
issue.Will post another comment with some camera configuration readouts for reference.
To confirm the expected/allowed ranges of a UVC camera control, here's some sample output from v4l-utils
, found in the Video4Linux set of software. While it's not a macOS utility, it might give some guidance from a well-known UVC-capable implementation.
Note for example gain
which shows min=0 max=255 step=1 default=0 value=0
for me.
v4l2-ctl --all
Driver Info:
Driver name : uvcvideo
Card type : HD Pro Webcam C920
Bus info : usb-0000:01:00.0-10.4.4
Driver version : 5.3.18
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 1280
Size Image : 614400
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Limited Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 640, Height 480
Default : Left 0, Top 0, Width 640, Height 480
Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 640, Height 480, Flags:
Selection: crop_bounds, Left 0, Top 0, Width 640, Height 480, Flags:
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 30.000 (30/1)
Read buffers : 0
brightness 0x00980900 (int) : min=0 max=255 step=1 default=128 value=128
contrast 0x00980901 (int) : min=0 max=255 step=1 default=128 value=128
saturation 0x00980902 (int) : min=0 max=255 step=1 default=128 value=128
white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1
gain 0x00980913 (int) : min=0 max=255 step=1 default=0 value=0
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=2 value=2
white_balance_temperature 0x0098091a (int) : min=2000 max=6500 step=1 default=4000 value=4000 flags=inactive
sharpness 0x0098091b (int) : min=0 max=255 step=1 default=128 value=128
backlight_compensation 0x0098091c (int) : min=0 max=1 step=1 default=0 value=0
exposure_auto 0x009a0901 (menu) : min=0 max=3 default=3 value=3
exposure_absolute 0x009a0902 (int) : min=3 max=2047 step=1 default=250 value=250 flags=inactive
exposure_auto_priority 0x009a0903 (bool) : default=0 value=1
pan_absolute 0x009a0908 (int) : min=-36000 max=36000 step=3600 default=0 value=0
tilt_absolute 0x009a0909 (int) : min=-36000 max=36000 step=3600 default=0 value=0
focus_absolute 0x009a090a (int) : min=0 max=250 step=5 default=0 value=0 flags=inactive
focus_auto 0x009a090c (bool) : default=1 value=1
zoom_absolute 0x009a090d (int) : min=100 max=500 step=1 default=100 value=100
led1_mode 0x0a046d05 (menu) : min=0 max=3 default=0 value=3
led1_frequency 0x0a046d06 (int) : min=0 max=255 step=1 default=0 value=0
Hey, thanks for replying!
This is the output on Ubuntu:
ubuntu@ubuntu:~$ v4l2-ctl --all
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : UVC Camera (046d:0825)
Bus info : usb-0000:00:1d.0-1.8
Driver version: 5.3.13
Capabilities : 0x84A00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV'
Field : None
Bytes per Line : 1280
Size Image : 614400
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Limited Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 640, Height 480
Default : Left 0, Top 0, Width 640, Height 480
Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 640, Height 480
Selection: crop_bounds, Left 0, Top 0, Width 640, Height 480
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 30.000 (30/1)
Read buffers : 0
brightness 0x00980900 (int) : min=0 max=255 step=1 default=128 value=128
contrast 0x00980901 (int) : min=0 max=255 step=1 default=32 value=32
saturation 0x00980902 (int) : min=0 max=255 step=1 default=32 value=32
white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1
gain 0x00980913 (int) : min=0 max=255 step=1 default=0 value=0
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=2 value=2
white_balance_temperature 0x0098091a (int) : min=0 max=10000 step=10 default=4000 value=4000 flags=inactive
sharpness 0x0098091b (int) : min=0 max=255 step=1 default=24 value=24
backlight_compensation 0x0098091c (int) : min=0 max=1 step=1 default=1 value=1
exposure_auto 0x009a0901 (menu) : min=0 max=3 default=3 value=3
exposure_absolute 0x009a0902 (int) : min=1 max=10000 step=1 default=166 value=166 flags=inactive
exposure_auto_priority 0x009a0903 (bool) : default=0 value=1
Will also try out the experimental branch :)
Here's some test output from node-uvc-control-master after freshly connecting the webcam.
UVCControl {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
options: { vid: 1133 },
device: Device {
busNumber: 20,
deviceAddress: 11,
deviceDescriptor: {
bLength: 18,
bDescriptorType: 1,
bcdUSB: 512,
bDeviceClass: 239,
bDeviceSubClass: 2,
bDeviceProtocol: 1,
bMaxPacketSize0: 64,
idVendor: 1133,
idProduct: 2085,
bcdDevice: 16,
iManufacturer: 0,
iProduct: 0,
iSerialNumber: 2,
bNumConfigurations: 1
},
portNumbers: [ 1 ],
interfaces: [ [Interface], [Interface], [Interface], [Interface] ],
_configDescriptor: {
bLength: 9,
bDescriptorType: 2,
wTotalLength: 2469,
bNumInterfaces: 4,
bConfigurationValue: 1,
iConfiguration: 0,
bmAttributes: 128,
bMaxPower: 250,
extra: <Buffer 08 0b 00 02 0e 03 00 00>,
interfaces: [Array]
}
},
videoControlInterfaceNumber: 0,
ids: { processingUnit: 2, cameraInputTerminal: 1 },
supportedControls: [
'auto_exposure_mode',
'auto_exposure_priority',
'absolute_exposure_time',
'brightness',
'contrast',
'saturation',
'sharpness',
'white_balance_temperature',
'backlight_compensation',
'gain',
'power_line_frequency',
'auto_white_balance_temperature'
],
[Symbol(kCapture)]: false
}
auto_exposure_mode setting: { bAutoExposureMode: -128 }
auto_exposure_priority setting: { bAutoExposurePriority: 32 }
absolute_exposure_time setting: { dwExposureTimeAbsolute: 0 }
brightness setting: { wBrightness: 128 }
contrast setting: { wContrast: 32 }
saturation setting: { wSaturation: 32 }
sharpness setting: { wSharpness: 24 }
white_balance_temperature setting: { wWhiteBalanceTemperature: 4000 }
backlight_compensation setting: { wBacklightCompensation: 1 }
gain setting: { wGain: 0 }
power_line_frequency setting: { bPowerLineFrequency: 2 }
auto_white_balance_temperature setting: { bWhiteBalanceTemperatureAuto: 1 }
absolute_exposure_time range: { min: 0, max: 255 }
brightness range: { min: 0, max: 255 }
contrast range: { min: 0, max: 255 }
saturation range: { min: 0, max: 255 }
sharpness range: { min: 0, max: 255 }
white_balance_temperature range: { min: 0, max: 10000 }
backlight_compensation range: { min: 0, max: 1 }
gain range: { min: 0, max: 255 }
Used code:
const UVCControl = require("../index");
const vid = parseInt(process.argv[2]) || 1133;
const cam = new UVCControl({
vid: vid
});
if (cam.device.deviceDescriptor.idVendor !== vid)
console.error(
`Input vendor ID (${vid}) does not match device vendor ID (${cam.device.deviceDescriptor.idVendor})`
);
console.log(cam);
cam.supportedControls.forEach(name => {
cam
.get(name)
.then(value => console.log(name, "setting:", value))
.catch(e => console.log(e));
try {
cam
.range(name)
.then(range => console.log(name, "range:", range))
// .catch(e => console.log(e));
} catch (e) {
// console.log(e);
}
});
I'm not sure what to look for exactly but to me it seems like it doesn't match up too well to the Ubuntu reference output.
uvcc-feature-uvc-control-v1-next apple$ ./index.js --vendor 0x46d --product 0x825 --verbose export
Parsed arguments: {
"_": [],
"version": false,
"verbose": true,
"help": false,
"vendor": 1133,
"product": 2085,
"$0": "index.js",
"cmd": "export"
}
Error getting value, ignoring. autoExposureMode [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. autoExposurePriority [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. absoluteExposureTime [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. absoluteFocus [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. absoluteZoom [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. absolutePanTilt [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. autoFocus [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. brightness [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. contrast [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. saturation [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. sharpness [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. whiteBalanceTemperature [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. backlightCompensation [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. gain [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting value, ignoring. autoWhiteBalance [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
{}
uvcc-feature-uvc-control-v1-next apple$ ./index.js --vendor 0x46d --product 0x825 --verbose ranges
Parsed arguments: {
"_": [],
"version": false,
"verbose": true,
"help": false,
"vendor": 1133,
"product": 2085,
"$0": "index.js",
"cmd": "ranges"
}
Error getting range, ignoring. autoExposureMode [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. autoExposurePriority [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. absoluteExposureTime [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. absoluteFocus [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. absoluteZoom [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. absolutePanTilt [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. autoFocus [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. brightness [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. contrast [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. saturation [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. sharpness [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. whiteBalanceTemperature [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. backlightCompensation [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. gain [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
Error getting range, ignoring. autoWhiteBalance [OperationalError: LIBUSB_TRANSFER_STALL] {
cause: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 },
isOperational: true,
errno: 4
}
{}
uvcc-feature-uvc-control-v2-next apple$ ./index.js --vendor 0x46d --product 0x825 --verbose export
Parsed arguments: {
"_": [],
"version": false,
"verbose": true,
"help": false,
"vendor": 1133,
"product": 2085,
"$0": "index.js",
"cmd": "export"
}
Error getting value, ignoring. absolute_exposure_time {
id: 'absolute_exposure_time',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. absolute_focus {
id: 'absolute_focus',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. absolute_iris {
id: 'absolute_iris',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. absolute_pan_tilt {
id: 'absolute_pan_tilt',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. absolute_roll {
id: 'absolute_roll',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. absolute_zoom {
id: 'absolute_zoom',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. analog_lock_status {
id: 'analog_lock_status',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. analog_video_standard {
id: 'analog_video_standard',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. auto_exposure_mode {
id: 'auto_exposure_mode',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. auto_exposure_priority {
id: 'auto_exposure_priority',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. auto_focus {
id: 'auto_focus',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. auto_hue { id: 'auto_hue', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting value, ignoring. auto_white_balance_component {
id: 'auto_white_balance_component',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. auto_white_balance_temperature {
id: 'auto_white_balance_temperature',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. backlight_compensation {
id: 'backlight_compensation',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. brightness {
id: 'brightness',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. contrast { id: 'contrast', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting value, ignoring. digital_multiplier {
id: 'digital_multiplier',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. digital_multiplier_limit {
id: 'digital_multiplier_limit',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. gain { id: 'gain', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting value, ignoring. gamma { id: 'gamma', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting value, ignoring. hue { id: 'hue', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting value, ignoring. power_line_frequency {
id: 'power_line_frequency',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. privacy { id: 'privacy', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting value, ignoring. relative_exposure_time {
id: 'relative_exposure_time',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. relative_focus {
id: 'relative_focus',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. relative_iris {
id: 'relative_iris',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. relative_pan_tilt {
id: 'relative_pan_tilt',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. relative_roll {
id: 'relative_roll',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. relative_zoom {
id: 'relative_zoom',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. saturation {
id: 'saturation',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. scanning_mode {
id: 'scanning_mode',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. sharpness { id: 'sharpness', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting value, ignoring. white_balance_component {
id: 'white_balance_component',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting value, ignoring. white_balance_temperature {
id: 'white_balance_temperature',
error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
{}
uvcc-feature-uvc-control-v2-next apple$ ./index.js --vendor 0x46d --product 0x825 --verbose ranges
Parsed arguments: {
"_": [],
"version": false,
"verbose": true,
"help": false,
"vendor": 1133,
"product": 2085,
"$0": "index.js",
"cmd": "ranges"
}
Error getting range, ignoring. absolute_exposure_time [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. absolute_focus [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. absolute_iris [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. absolute_pan_tilt [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. absolute_roll [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. absolute_zoom [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. backlight_compensation [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. brightness [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. contrast [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. digital_multiplier [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. digital_multiplier_limit [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. gain [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. gamma [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. hue [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. relative_focus [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. relative_pan_tilt [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. relative_roll [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. relative_zoom [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. saturation [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. sharpness [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. white_balance_component [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
Error getting range, ignoring. white_balance_temperature [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
{}
@Jip-Hop: thanks for testing the branches!
I note that your c270's v4l2-ctl
output shows that exposure_absolute
and white_balance_temperature
have wider ranges than my c920. The gain
has the same range though, so the value 2306
you showed before should not be possible. It also seems the c920 have 7 additional controls, but that shouldn't be a problem (at least when using uvc-control
v2-next as it dynamically retrieves the list of controls).
Even though control endpoints do not halt, a completed control transfer may have a
LIBUSB_TRANSFER_STALL
status code. This indicates the control request was not supported.
I tried your test code and get similar output. That should mean that master
(https://github.com/makenai/node-uvc-control/commit/ca1e2c963e98b309ad3b65c5fc538f052ea5fd64) of uvc-control
works at least. Wonder why uvcc
doesn't.
It seems LIBUSB_TRANSFER_STALL
can be ignored; it's just a "not supported" message. (Which might be a bit strange when reading the setting, given that the list of supported controls lists them. Not all controls support ranges though.) I get a bunch of those, but not for all controls like you.
You get no output at all (just the empty object {}
on the last line) using uvcc
, but at least some settings/ranges when using uvc-control
directly. You wrote that you unplugged the camera before the first debug run, but did you unplug it before the subsequent runs? (For the sake of debugging, please also double-check if any other camera-related program might be running.)
Strangely enough, I get more readouts for uvcc export
and uvcc ranges
for the v1
branch than on the v2
branch, even though the latter should dynamically support all controls/ranges. Didn't diff the output, but it seems consistent between macOS and linux. Did you try uvcc
on linux? (Note that uvc-control
gives LIBUSB_ERROR_IO
on linux without the control transfer fixes in my fork.) Perhaps there's something in the UVC-specific constants sent to libusb
that needs to be fixed?
Sorry, no real fixes for now. Without your particular camera (not to mention system setup) it's hard to find the exact cause. Do you have any ideas? I don't want to go as far as suggesting that you format your (macOS) computer ;)
Thanks for looking into it :)
I bought another webcam: ELP USBFHD06H-SFV(2.8-12mm). Tried out to set manual exposure with the node-uvc-control-master webgui, but it wouldn't disable auto exposure properly.
The Webcam Settings app from the Mac App Store supports my new ELP camera and Logitech C270 perfectly, so I'm going to have to go that route for now.
Webcam Settings looks pretty nice. It seems to add support for different manufacturers/cameras one by one, according to the most version history -- wonder if that's also necessary for uvc-control
/uvcc
. In that case, more hardware is needed.
Closing this issue for now. If you get around to test the new camera as well, please reopen!
I downloaded the repository and installed with
npm install
. Running it on macOS 10.14.6. But I can't get it to work with my Logitech C270.Listing the devices only shows my internal trackpad. Checking
chrome://usb-internals
in Chrome gives me vendor and product ids, so I tried using them. But I still can't control the webcam...I am able to turn off Auto Exposure on the C270 webcam on MacOS using the sample application on this page: https://phoboslab.org/log/2009/07/uvc-camera-control-for-mac-os-x So at least I know it's possible... I tried adjusting the gain in this app, and then checking again with uvcc to see if it changed, but uvcc returned the same gain value.
I was hoping to use uvcc so I can control the exposure of my C270 cross platform. Also the exposure range slider in the example app from phoboslab.org doesn't work properly for the C270, so I was hoping to fix that too using uvcc.