uvcc demo video showing rubber ducks and a candle with varying camera settings


USB Video Class (UVC) device configurator


  • Fine-tune camera controls on the fly, such as brightness, contrast, saturation, gain, white balance/color temperature, zoom.
  • Export/import of settings makes it easy to reliably configure one or more cameras for various situations.
  • Command line interface (CLI) with JSON input/output for automation and repeatability.

Compatible cameras

Do you have another UVC-compatible camera?


Requires Node.js (node and npm commands). Published on npm as uvcc.

npm install --global uvcc

Or use npx to execute with npx uvcc.

On Linux, you may need to change device access permissions.


  • List available UVC cameras and camera controls.
  • Get/set individual camera controls.
  • Export/import full JSON control snapshots using stdout/stdin.
  • Per-user/per-directory/custom configuration files to handle multiple cameras.

Short usage example

First start a program which shows a camera preview, such as Photo Booth on macOS or Cheese on Linux.

# Display commands and options.
uvcc --help

# Export current configuration. You can save it to a file, modify, and import later.
uvcc export

# Turn off automatic white balance to manually set the white balance.
uvcc set auto_white_balance_temperature 0

# Set the white balance temperature to 2000.
# NOTE: the white_balance_temperature range for Logitech C920 is 2000-6500.
uvcc set white_balance_temperature 2000

# Set the contrast to 192.
# NOTE: the contrast range for Logitech C920 is 0-255, default value 128.
uvcc set contrast 192

See also

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!