Tuesday 10 July 2012

Webcam on Dell Latitude E6520 on Arch linux

On my Dell Latitude E6520, I have a webcam integrated into the front panel. I am not very used to video calls so I hardly use it. However, recently I wanted to talk to my brother using video call on Skype. So, I started digging in so that I can configure it. The first step was to see if it is already configured and works out of the box. I tried getting video to work during a Skype call; but it did not. So, I started looking for the actual model. I got the following output on lsusb.


Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 413c:8187 Dell Computer Corp. DW375 Bluetooth Module
Bus 001 Device 004: ID 05ca:181c Ricoh Co., Ltd
Bus 002 Device 003: ID 0a5c:5800 Broadcom Corp. BCM5880 Secure Applications Processor


I could not figure out which one is the webcam. So, I looked into the output of lspci as well; but nothing there either. So, I was having a hard time figuring out which device is my webcam. The other question running in my head was the rare possibility of my kernel not detecting my webcam. I checked out /var/log/dmesg.log to see if it was detected. I ran the following grep.

grep webcam /var/log/dmesg.log

I was disappointed to find nothing. After some time, I realized my mistake and tried the grep query in case insensitive mode.

grep -i webcam /var/log/dmesg.log

This time I found the device.

uvcvideo: Found UVC 1.00 device Laptop_Integrated_Webcam_FHD (05ca:181c)
input: Laptop_Integrated_Webcam_FHD as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.5/1-1.5:1.0/input/input8


Looking at the output I tried loading the uvcvideo kernel module and tested the webcam with the following vlc self-recording command.

vlc v4l:// :v4l-vdev="/dev/video0"

It worked fine. So, I looked into the Arch wiki for more details. It mentioned that linux-uvc was now in kernel. Looking into a more exhaustive list of devices supported by uvcvideo, I found the following matched my device closely.

05ca:181a
05ca:181b

So, I guessed 05ca:181c should also be supported by uvcvideo but being a new model was not listed there. So, I have reported this to the dev team and added the module uvcvideo the list of modules in my rc.conf.

MODULES=(acpi-cpufreq cpufreq_ondemand cpufreq_powersave uvcvideo)

Interestingly it is a Ricoh device but the driver is not the Ricoh driver [mentioned in the wiki].