minsangk.im

Workaround for Logitech C922 Pro Stream webcam not saving video settings

I bought one of these for streaming:

It’s a good webcam, but it turns out the webcam does not remember any of the video settings (the dialog below) — this includes brightness, sharpness, auto white balance, auto focus, gain, auto exposure, etc. If you unplug your webcam and plug it back in, all of these will get reset to default! Same thing if you ever reboot your computer.

This might not be a problem for everyone, but for a “pro streamer” which is apparently the target audience for this (as indicated in its product name), this is a HUGE problem! Most likely, you’d want to keep the auto focus permanently disabled, use a custom white balance, and adjust exposure and gain according to your lighting.

Logitech has indicated that this is indeed by design:

Thankfully, this webcam uses the Windows in-box webcam drivers (KS + USBVideo), which means you can use the standard API set to interact with it. Github user SuslikV has already done most of the work here:

https://github.com/SuslikV/cfg-cam

You can follow these steps:

  1. Download a release of cfg-cam from here. I’m using 1.0.
  2. Extract WebCameraConfig.exe.
  3. Open a command prompt and navigate to where you extracted it.
  4. Open your webcam settings dialog and modify settings as you desire.
  5. Run:
     WebCameraConfig.exe --savedev
    

    It’ll save cam_sett.cfg to the current directory. It looked like this when my Logitech C922 was plugged in:

     / WebCameraConfig settings file
     Device #1
     \\?\usb#vid_046d&pid_085c&mi_00#8&1cce1212&0&0000#{12121212-1212-1212-1212-00a012121212}\global
     C922 Pro Stream Webcam
     VideoProcAmp_BacklightCompensation=0 [Manual]
     VideoProcAmp_Brightness=128 [Manual]
     VideoProcAmp_Contrast=128 [Manual]
     VideoProcAmp_Gain=29 [Manual]
     VideoProcAmp_Saturation=128 [Manual]
     VideoProcAmp_Sharpness=128 [Manual]
     VideoProcAmp_WhiteBalance=4000 [Manual]
     CameraControl_Exposure=-4 [Manual]
     CameraControl_Focus=0 [Manual]
     CameraControl_Pan=0 [Manual]
     CameraControl_Tilt=0 [Manual]
     CameraControl_Zoom=100 [Manual]
     ---end of the device #1
    
  6. Edit cam_sett.cfg as needed. You might have more devices in the file (such as your capture card) — erase them if you want. Make sure to keep the formatting consistent — check the “Device #1” and “–end of the device #1” part.
  7. You’re done! Whenever you want to restore these settings, run WebCameraConfig.exe from command prompt. It’ll read the file you saved and apply the saved settings to your webcam.
  8. You might want to create a small batch script for automating this. Here is mine:
     @echo off
     pushd %~dp0
     .\WebCameraConfig.exe
     popd
    

I have it configured so that this script is called when I launch OBS. Maybe you’ll want to do that, maybe you want to run the script when Windows boots.

Caveats: some settings are not stored or restored – anything that isn’t listed in the file is not saved. For my purposes this wasn’t really a problem.

Please note that this page was migrated from an old Wordpress site; some of the formatting might be messy, and some images have degraded quality and resolution.