uvcc changelog

See full list of commits for details.


  • 8779b90 Target Node.js v16, v18, v19, v20
    • Drop v14 (about two months early), drop v17 (about eight months late), add v19 (about four months late), add v20 (about two months early).
  • 61d8071 Add example output from Elgato Facecam (4057:0120) (#28 by @m0ose)


  • 3a79c54 Add example output from Logitech C922 Pro Stream Webcam (1133:2140)
  • 9342420 Add example output from Microsoft LifeCam Studio Model 1425 (1118:2065) (#17 by @holbrookdev)
  • aebbe71 Update example output from Logitech C920 (1133:2093)
  • 235fe37 Take vendor/product ids into account for examples
    • Relates to #21, where the differences between hardware variations within the same camera “marketing name” are discussed.
  • 999c7d5 Upgrade forked uvc-control v2
  • e5e9748 Target Node.js v14, v16, v17, v18





  • ccf5e05 Fix --version flag




  • e8d7dec Target node.js v12+
  • efde45e Update example output from Logitech C920
  • bed8ac3 Upgrade forked uvc-control v2
    • Swallows errors when discovering/listing USB/UVC devices.
      • Avoids some problems with LIBUSB_ERROR_IO when using uvcc devices. The issue seems to be dependent on the internal (software) state (perhaps the traversal order) of USB drivers/devices (and perhaps on which other USB devices are used) connected to the system. Using sudo does not prevent LIBUSB_ERROR_IO.
      • The change means that uvcc devices can be used without sudo (by swallowing LIBUSB_ERROR_ACCESS thrown when opening some USB devices) even when the user has insufficient privileges, although inaccessible UVC devices will not be listed.
  • e5d9f49 Warn for camera mismatch
    • Fixes part of #10 by warning for unexpected camera results.
  • 526b9f4 Upgrade forked uvc-control v2
    • Fixes part of #10 by allowing filtering by only product id, or only by device address.
  • 7a9dd89 Add some styling to command help
  • 4691cbf Update usage examples
    • Fixes #14 by improving examples.


  • 9f3073e Upgrade forked uvc-control v2
    • Fixes #8, setting absolute_focus.


  • d34da77 Upgrade forked uvc-control v2
    • Fixes #6, setting absolute_exposure_time.


  • 8c24f19 Add compatible cameras and help wanted notes


  • ff28515 Fix broken anchor tag in README.md


⚠ Breaking changes

  • Camera controls changed name in the upstream uvc-control v2, so old exports won’t import without edits.
    • Most changes are from camel-case someCameraControl to snake-case some_camera_control, for example autoExposureMode to auto_exposure_mode.
    • Other controls changed name a bit more, such as autoWhiteBalance to auto_white_balance_temperature.
    • See uvcc controls for your camera.


  • Uses forked uvc-control v2, as breaking bug fixes were not reviewed (not commented, accepted, nor rejected) in time for this release (uvc-control#64).
    • If the equivalent changes are made, uvcc can go back to using the upstream.
    • Below feature changes are a mix of changes in uvc-control and uvcc.
  • Should support additional cameras and camera controls by uvc-control dynamically mapping camera controls.
    • Both uvc-control and uvcc were developed testing (only?) against Logitech C920 cameras.
    • Several users tested previews/manual patches using other cameras (#4).
    • Further changes have only been confirmed using Logitech C920.
  • If a UVC camera is available, it will be autodetected by uvc-control using node-usb.
    • Most users will not need to run uvcc devices to find and configure their camera.
    • Uses the “first” camera, which may depend on the system, drivers, and in which port the cameras are plugged in.
    • If necessary, the vendor/product can still be configured as before.
  • If multiple cameras with the same vendor/product are available, it is possible to distinguish between them using --address.
    • Can also be configured using environment variables or configuration files.
    • See output from uvcc devices.
  • Should work on Linux, by changing how uvc-control targets the USB device (uvc-control#58).
    • Might need to use sudo uvcc devices to access and filter the full list of USB devices.
    • Might need to set up userspace /dev (udev) rules or equivalent to further get/set camera control values.

Other changes

  • d6b4700 Add example output from Logitech C920
  • 80848a6 Make device address configurable
  • 97a34d0 Make vendor/product ids optional
  • 7b334fa Fix devices command
  • b6c191f Target uvc-control v2


  • 51e824c Add find-up


  • a4eb66f Use file-relative path to file in the uvc-control package


  • 047980e Initial public release
  • Thanks you Pawel Szymczykowski for uvc-control for node.js. Without his code I would never have gotten close to automating — or perhaps even being able to — changing camera controls on macOS.

uvcc Copyright © 2018, 2019, 2020, 2021, 2022 Joel Purra. Released under GNU General Public License version 3.0 (GPL-3.0). Your donations are appreciated!