Anyway to disable the autofocus for cameras?

Had the same problem with my Logitech C922.

From this post Anyway to disable the autofocus for cameras? I added the two lines to /etc/rc.local instead. Works great after restart.

## Custom hack for webcam focus
sudo v4l2-ctl --set-ctrl=focus_auto=0
sudo v4l2-ctl --set-ctrl=focus_absolute=15
1 Like

@tropic, thanks for the assistance! I will try it today

thanks for the info..
i'll try to do it more "from scratch" for someone who is not so familiar with linux and commands in general, combining all the previous comments:

  1. install putty if you are in windows and this will let you enter the files inside raspberry pi
  2. at tab session and Host Name field add octopi.local or your raspberry ip (you can find this in your router's page 192.168.1.1..and it will be something like 192.168.1.X), choose SSH, port 22, Open
  3. username is default "pi", and password "raspberry"
  4. you have to go to folder mjpg-streamer, so you enter the command cd mjpg-streamer/
  5. now enter sudo v4l2-ctl --set-ctrl=focus_auto=0 to disable auto focus
  6. open a window with your octoprint camera and fine tune the focus..
    so enter sudo v4l2-ctl --set-ctrl=focus_absolute=70 and change the number until the focus is ok
  7. now, you have your two commands that fine tune your camera. In order to run them every time raspberry open, you have to add them to rc.local file:
    a) enter sudo vi /etc/rc.local, then go to line last line "exit 0"
    b) press shift+O and write your two commands (you can copy and paste with left click)..
    if you mess up something press esc and :q! to quit
    if you are fine press esc and :wq to save
    something like this:
    022

some extra info:
if you set focus_auto to 1 and let the webcam focus an object in the center you can take the "perfect" focus value..and then focus_auto to 0..but which is this value?
you run the command sudo v4l2-ctl -l and you will see:
"focus_absolute (int) : min=0 max=250 step=5 default=8189 value=50"
so your "perfect" value is 50..
you can play with the other listed settings also..(like contrast with sudo v4l2-ctl --set-ctrl=contrast=200)


if you want to check that your changes are permanent, do a restart and see the current values with sudo v4l2-ctl -l

3 Likes

I was struggling with this for a while, thanks for this tip!
Also, a different focus value (50) on my side, but that depends on the distance to the printed object.
Got a crispy image using a Logitech C930 :slight_smile:

Do these settings also work for Logitech C922?

A good hint mentioned above, but not very obvious - there's a control panel for your camera at:

http://(local IP address):8080/

From here, you can play with the focus numbers, settings, etc. to test them before committing them to a script or rc.conf - any changes you make will happen in real time, so you can keep the camera view open in another tab and see it as you play with the numbers.

I know this is old, but for my Logitech C922x this is my rc.local.

Hope this helps anyone.

#!/bin/bash

#turn off autofocus
sudo v4l2-ctl --set-ctrl=focus_automatic_continuous=0
#set manual focus
sudo v4l2-ctl --set-ctrl=focus_absolute=60
#turn off auto exposure
sudo v4l2-ctl --set-ctrl=auto_exposure=1
#manually set the exposure
sudo v4l2-ctl --set-ctrl=exposure_time_absolute=125
#turn off the built-in led
sudo v4l2-ctl --set-ctrl=led1_mode=0

how do I turn off auto exposure?

@PrintedVisionz - to turn of auto exposure, see the post just above yours by Jack_1. He has added comments, so you can see what each command is doing.