I recently got a new Dell XPS 13 (9360) laptop for work and it’s running Fedora pretty much perfectly.
However, when I load up Cheese (or some other webcam program) the video from the webcam flickers. Given that I live in Australia, I had to change the powerline frequency from 60Hz to 50Hz to fix it.
sudo dnf install v4l2-ctl
v4l2-ctl --set-ctrl power_line_frequency=1
I wanted this to be permanent each time I turned my machine on, so I created a udev rule to handle that.
cat << EOF | sudo tee /etc/udev/rules.d/50-dell-webcam.rules
SUBSYSTEM=="video4linux", \
SUBSYSTEMS=="usb", \
ATTRS{idVendor}=="0c45", \
ATTRS{idProduct}=="670c", \
PROGRAM="/usr/bin/v4l2-ctl --set-ctrl \
power_line_frequency=1 --device /dev/%k", \
SYMLINK+="dell-webcam"
EOF
It’s easy to test. Just turn flicker back on, reload the rules and watch the flicker in Cheese automatically disappear 🙂
v4l2-ctl --set-ctrl power_line_frequency=0
sudo udevadm control --reload-rules && sudo udevadm trigger
Of course I also tested with a reboot.
It’s easy to do with any webcam, just take a look on the USB bus for the vendor and product IDs. For example, here’s a Logitech C930e (which is probably the nicest webcam I’ve ever used, and also works perfectly under Fedora).
Bus 001 Device 022: ID 046d:0843 Logitech, Inc. Webcam C930e
So you would replace the following in your udev rule:
- ATTRS{idVendor}==“046d”
- ATTRS{idProduct}==“0843”
- SYMLINK+=“c930e”
Note that SYMLINK is not necessary, it just creates an extra /dev entry, such as /dev/c930e, which is useful if you have multiple webcams.