M HYPE SPLASH
// updates

Using DSLR camera as a webcam

By Abigail Rogers

I am trying to use my Canon DSLR as a webcam, on an Ubuntu machine. The camera does not show up as /dev/video*.

The camera shows up in hwinfo --usb:

19: USB 00.0: 10f01 WebCam [Created at usb.122] Unique ID: R8DB._ROX1vreGqF Parent ID: FKGF.4Nx_qoDfSd7 SysFS ID: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0 SysFS BusID: 2-1.1:1.0 Hardware Class: camera Model: "Canon EOS 100D" Hotplug: USB Vendor: usb 0x04a9 "Canon" Device: usb 0x3270 "EOS 100D" Revision: "0.02" Driver: "usbfs" Driver Modules: "usbcore" Speed: 480 Mbps Module Alias: "usb:v04A9p3270d0002dc00dsc00dp00ic06isc01ip01in00" Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #4 (Hub)

USB-related lsmod shows this:

$ lsmod | grep usb
wusbcore 45056 0 # I activated this manually, shot in the dark
uwb 73728 1 wusbcore
snd_usb_audio 204800 4
snd_usbmidi_lib 32768 1 snd_usb_audio
snd_hwdep 20480 2 snd_usb_audio,snd_hda_codec
btusb 45056 0
btrtl 16384 1 btusb
btbcm 16384 1 btusb
btintel 16384 1 btusb
bluetooth 548864 46 btrtl,hidp,btintel,btbcm,bnep,btusb,rfcomm
snd_pcm 98304 5 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
snd_rawmidi 32768 2 snd_seq_midi,snd_usbmidi_lib
snd 81920 34 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
usbhid 49152 0
hid 118784 3 hidp,usbhid,hid_generic

Here is the tail of dmesg:

[ 530.523684] media: Linux media interface: v0.10
[ 530.530299] Linux video capture interface: v2.00
[ 530.540171] usbcore: registered new interface driver uvcvideo
[ 530.540172] USB Video Class driver (1.1.1)
[ 878.930024] usb 2-1.1: USB disconnect, device number 6
[ 973.616657] usb 2-1.1: new high-speed USB device number 7 using ehci-pci
[ 973.818855] usb 2-1.1: New USB device found, idVendor=04a9, idProduct=3270
[ 973.818859] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 973.818861] usb 2-1.1: Product: Canon Digital Camera
[ 973.818862] usb 2-1.1: Manufacturer: Canon Inc.

Trying to find something about usbcore to modprobe:

$ ls -R /lib/modules/$(uname -r)/kernel | grep usbcor
wusbcore
/lib/modules/4.15.0-91-generic/kernel/drivers/usb/wusbcore:
wusbcore.ko

As said before, the camera does not show up as /dev/video*, and I don't know what I should do next!

1 Answer

I got it working thanks to this:

$ sudo apt-get install gphoto2 v4l2loopback-utils ffmpeg
$ sudo modprobe v4l2loopback exclusive_caps=1 max_buffers=2
(some advice there as how to make this more automatic)

Then some running process needs to get killed:

$ ps aux|grep gphoto
$ kill <the PID for the process gvfsd-gphoto2, or something like that>

And running this in the background:

$ gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video

All this makes the /dev/video0 appear, and work as a video input. Although right now, I'm getting poor fps.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy