makenai / node-uvc-control

Control UVC compliant USB webcams from node
80 stars 28 forks source link

LIBUSB_TRANSFER_STALL on some controls #52

Open positlabs opened 5 years ago

positlabs commented 5 years ago

These controls are listed as supported in the camera terminal descriptor, but they are stalling out when I try to get info or defaults for them.

{ id: 'absolute_focus',
  error: { Error: LIBUSB_TRANSFER_STALL errno: 4 } }
{ id: 'absolute_zoom',
  error: { Error: LIBUSB_TRANSFER_STALL errno: 4 } }
{ id: 'absolute_pan_tilt',
  error: { Error: LIBUSB_TRANSFER_STALL errno: 4 } }
{ id: 'auto_focus',
  error: { Error: LIBUSB_TRANSFER_STALL errno: 4 } }
ECMAScript3 commented 4 years ago

Getting the exact same error, with every control option.

uvcc --vendor 61447 --product 42598 get power_line_frequency
{
  id: 'power_line_frequency',
  error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}

I'm thinking it could be camera specific, I haven't looked enough into source yet.

joelpurra commented 4 years ago

@ECMAScript3: can you try uvcc --verbose export and show the output?

Just to check: are you using uvcc v2.0.0, which was released just a few hours ago? Check with uvcc --version.

ECMAScript3 commented 4 years ago
╭─    ~/Tools/rand ──────────────────────────────────────────────── 1 ✘ 
╰─ uvcc --version
2.0.0

╭─    ~/Tools/rand ────────────────────────────────────────────────── ✔ 
╰─ uvcc --vendor 61447 --product 42598 --verbose export
Parsed arguments: {
  "address": 0,
  "cmd": "export",
  "product": 42598,
  "values": [],
  "vendor": 61447,
  "verbose": true
}
Error getting settable value, ignoring. auto_exposure_mode {
  id: 'auto_exposure_mode',
  error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting settable value, ignoring. auto_white_balance_temperature {
  id: 'auto_white_balance_temperature',
  error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting settable value, ignoring. backlight_compensation {
  id: 'backlight_compensation',
  error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting settable value, ignoring. brightness {
  id: 'brightness',
  error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting settable value, ignoring. contrast { id: 'contrast', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting settable value, ignoring. gain { id: 'gain', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting settable value, ignoring. gamma { id: 'gamma', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting settable value, ignoring. hue { id: 'hue', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting settable value, ignoring. power_line_frequency {
  id: 'power_line_frequency',
  error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting settable value, ignoring. saturation {
  id: 'saturation',
  error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}
Error getting settable value, ignoring. sharpness { id: 'sharpness', error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 } }
Error getting settable value, ignoring. white_balance_temperature {
  id: 'white_balance_temperature',
  error: [Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
}

I apologize for the formatting, I use a fancy terminal I'm going to clone the repo and build manually, try to start messing around under the hood

ECMAScript3 commented 4 years ago

Okay, so I got node-uvc-control working independently, I just modified the example to get it working with safari and after minimal troubleshooting I'm able to read and modify controls. This camera should support resolution adjustment, which isn't showing up in the controls list, but at least I'm able to use UVC features on a MacBook now.

It seems this issue is with the wrapper, uvcc, rather than with node-uvc-control itself. I'd recommend opening a new issue on uvcc and closing this one.

>  node server.js
Example app listening on port 3000!
setting absolute_exposure_time [ '5' ]
setting absolute_exposure_time [ '8' ]
setting absolute_exposure_time [ '2' ]
setting brightness [ '30' ]
setting brightness [ '-52' ]
setting absolute_exposure_time [ '2' ]
setting absolute_exposure_time [ '2' ]
setting brightness [ '-52' ]
setting absolute_exposure_time [ '1' ]
setting brightness [ '-45' ]
setting auto_exposure_mode [ '2' ]
[Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
setting absolute_exposure_time [ '5' ]
setting absolute_exposure_time [ '6' ]
setting absolute_exposure_time [ '8' ]
setting absolute_exposure_time [ '3' ]
setting absolute_exposure_time [ '8' ]
setting brightness [ '38' ]
setting brightness [ '-4' ]
setting brightness [ '-28' ]
setting brightness [ '-49' ]
setting brightness [ '-64' ]
setting contrast [ '68' ]
setting contrast [ '85' ]
setting absolute_exposure_time [ '4' ]
setting absolute_exposure_time [ '3' ]
setting contrast [ '0' ]
setting hue [ '1246' ]
setting hue [ '-1702' ]
setting hue [ '-684' ]
setting hue [ '-298' ]
setting saturation [ '5' ]
setting saturation [ '100' ]
setting saturation [ '64' ]
setting sharpness [ '4' ]
setting sharpness [ '5' ]
setting gamma [ '251' ]
setting gamma [ '90' ]
setting gamma [ '198' ]
setting white_balance_temperature [ '5380' ]
[Error: LIBUSB_TRANSFER_STALL] { errno: 4 }
setting backlight_compensation [ '117' ]
setting gain [ '7' ]
setting gain [ '4' ]
setting backlight_compensation [ '98' ]
setting backlight_compensation [ '49' ]
setting backlight_compensation [ '8' ]
setting backlight_compensation [ '96' ]
setting gain [ '2' ]
setting power_line_frequency [ '2' ]
joelpurra commented 4 years ago

@ECMAScript3: good news =)

Hope to see a new issue in uvcc, looking forward to your findings!

joelpurra commented 4 years ago

@ECMAScript3: oh, and which changes did you do to make it work in your previous comment? Do you have a patch?