Logitech webcams
I’ve read that the C920 is an old, but fairly stable choice. The C922 is supposed to be the successor to it but at ~33-50% more cost and with varying degrees of success. I’ve not tried either model but with your stated budget, the C920 would likely work for you with its current sale at 54.99 USD (at the time of writing, otherwise 69.99 USD regular price).
Webcam with a hardware switch
I don’t think you’ll find one with a hardware switch. The most you’ll likely find are ones with camera covers, which aren’t the same thing.
Assuming that unplugging the device when it’s not in use is not practical (for example, it may be mounted behind a television or monitor on the wall), what you can try instead is to get a USB extension cable with a switch (For example, this Cable Matters USB 3 type A cable (Amazon) – I have not tried this myself). Just make sure it supports both power and data throughput.
DSLR or mirrorless camera as a webcam
If you have a DSLR or mirrorless camera, you may be able to set it up to work as a webcam.
The following links are what I used to make it work:
Here’s what that looks like in Mpv (on the right):
I tested this method with a Fujifilm X-T3 on PureOS Byzantium with the latest system updates (as of 2025-02-27) on a Librem 14 connected over USB C on the left port.
The screenshot is from a different computer with an Ubuntu derivative distro, but the result is the same.
Note: One caveat is that only one program can access the device at a time. For example, if Mpv is accessing it, your web browser will be unable to use it. If this does happen, just close the program claiming the device and that should free it up for the other program.
Troubleshooting
If you find that gphoto2
is unable to claim the device with the following command and error message:
$ gphoto2 --get-config /main/capturesettings/liveviewsize && gphoto2 --set-config-index liveviewsize="0" && gphoto2 --get-config /main/capturesettings/liveviewsize
*** Error ***
An error occurred in the io-library ('Could not claim the USB device'): Could not claim interface 0 (Device or resource busy). Make sure no other program (gvfs-gphoto2-volume-monitor) or kernel module (such as sdc2xx, stv680, spca50x) is using the device and you have read/write access to the device.
*** Error ***
An error occurred in the io-library ('Could not claim the USB device'): Could not claim interface 0 (Device or resource busy). Make sure no other program (gvfs-gphoto2-volume-monitor) or kernel module (such as sdc2xx, stv680, spca50x) is using the device and you have read/write access to the device.
*** Error (-53: 'Could not claim the USB device') ***
For debugging messages, please use the --debug option.
Debugging messages may help finding a solution to your problem.
If you intend to send any error or debug messages to the gphoto
developer mailing list <gphoto-devel@lists.sourceforge.net>, please run
gphoto2 as follows:
env LANG=C gphoto2 --debug --debug-logfile=my-logfile.txt --get-config /main/capturesettings/liveviewsize
Please make sure there is sufficient quoting around the arguments.
then you should run the following to get the gphoto2
processes claiming the device:
$ ps aux | grep gphoto
pureosuser 2814 0.0 0.0 256016 10068 ? SNsl 13:24 0:00 /usr/libexec/gvfs-gphoto2-volume-monitor
pureosuser 40924 0.5 0.0 597328 13748 ? SNl 16:35 0:00 /usr/libexec/gvfsd-gphoto2 --spawner :1.17 /org/gtk/gvfs/exec_spaw/5
pureosuser 40984 0.0 0.0 19016 2304 pts/9 SN+ 16:35 0:00 grep --color=auto gphoto
The process IDs are what you need here, which are 2814
and 40924
in this case. These numbers will likely not be the same for you as these are “randomly” generated.
You need to kill these processes and then re-run the previous gphoto2
command.
$ kill -9 2814 40924
$ gphoto2 --get-config /main/capturesettings/liveviewsize && gphoto2 --set-config-index liveviewsize="0" && gphoto2 --get-config /main/capturesettings/liveviewsize