Ubuntu – How to change the default webcam? Changing defaults in Multimedia selctor not working

12.04webcam

I have Logitech c920 set up. With help from an experienced Ask Ubuntu user, I installed GUVCview, Video4 linux control panel, and QT V4L2 utility tester on here. I am able to change from my Toshiba's built in webcam to my external webcam using GUVCview.

However, when I start a videochat on Google Hangouts, it automatically selects my built in laptop camera as default. I would like to change my default settings to always use external camera, but I can't find where this option is.
I'm running Windows 7 and Ubuntu 12.04 LTS on Toshiba Satellite L755

  • memory: 3.8 Gib
  • processor: Intel® Core™ i5-2410M CPU @ 2.30GHz × 4
  • graphics: Intel® Sandybridge Mobile
  • OS-type 64bit
  • disk: 40.2 GB

EDIT: I tried Gstreamer-properties in terminal and changed default input under video to Logitech external cam. Still no luck. When I "test" I get no picture, and still get laptop cam when I open GUVC.

2nd EDIT: After installing Multi media selector in terminal, I was still not able to find it in Dash. Here's the readout after running command:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
gconf-service is already the newest version.
gconf-service set to manually installed.
gconf2 is already the newest version.
gconf2 set to manually installed.
libatk1.0-0 is already the newest version.
libatk1.0-0 set to manually installed.
libgconf-2-4 is already the newest version.
libgconf-2-4 set to manually installed.
libgnome-media-profiles-3.0-0 is already the newest version.
libgnome-media-profiles-3.0-0 set to manually installed.
libgstreamer0.10-0 is already the newest version.
libgstreamer0.10-0 set to manually installed.
dpkg is already the newest version.
gnome-media is already the newest version.
gstreamer0.10-gconf is already the newest version.
gstreamer0.10-gconf set to manually installed.
gstreamer0.10-plugins-base is already the newest version.
gstreamer0.10-plugins-base set to manually installed.
gstreamer0.10-plugins-good is already the newest version.
gstreamer0.10-plugins-good set to manually installed.
libc6 is already the newest version.
libglib2.0-0 is already the newest version.
libgstreamer-plugins-base0.10-0 is already the newest version.
libgstreamer-plugins-base0.10-0 set to manually installed.
libgtk-3-0 is already the newest version.
libgtk-3-0 set to manually installed.
x11-utils is already the newest version.
x11-utils set to manually installed.
The following packages were automatically installed and are no longer required:
  gir1.2-ubuntuoneui-3.0 linux-headers-3.2.0-54 libubuntuoneui-3.0-1
  thunderbird-globalmenu linux-headers-3.2.0-54-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

If I run Gstreamer-properties in terminal I get the multimedia selector. I change default input to external,the blue light on external cam lights up(when I press "test"), but no picture.
Here's a screenshot of setings

Gstreamer settings

3rd EDIT:
After running it as root with sudo gstreamer-properties I changed default input to HD webcam (same settings as previous screenshot) and stil when I open GUVC it opens as laptop camera. Here is what the readout was after running SUDO

(gstreamer-properties:15236): Gtk-WARNING **: Unknown property: GtkDialog.has-separator

(gstreamer-properties:15236): Gtk-WARNING **: Unknown property: GtkDialog.has-separator
gstreamer-properties-Message: Skipping unavailable plugin 'artsdsink'
gstreamer-properties-Message: Skipping unavailable plugin 'esdsink'
gstreamer-properties-Message: Skipping unavailable plugin 'sunaudiosink'
gstreamer-properties-Message: Skipping unavailable plugin 'glimagesink'
gstreamer-properties-Message: Skipping unavailable plugin 'sdlvideosink'
gstreamer-properties-Message: Skipping unavailable plugin 'v4lmjpegsrc'
gstreamer-properties-Message: Skipping unavailable plugin 'qcamsrc'
gstreamer-properties-Message: Skipping unavailable plugin 'v4lsrc'
gstreamer-properties-Message: Skipping unavailable plugin 'esdmon'
gstreamer-properties-Message: Skipping unavailable plugin 'sunaudiosrc'

When I tried to close Terminal, it said process still in use.

4TH EDIT, next day:

I followed the link below to Dumindu's

sudo apt-get install gstreamer-dbus-media-service gstreamer-tools gstreamer0.10-alsa gstreamer0.10-buzztard gstreamer0.10-buzztard-doc gstreamer0.10-crystalhd gstreamer0.10-doc gstreamer0.10-ffmpeg gstreamer0.10-ffmpeg-dbg gstreamer0.10-fluendo-mp3 gstreamer0.10-gconf gstreamer0.10-gnomevfs gstreamer0.10-gnonlin gstreamer0.10-gnonlin-dbg gstreamer0.10-gnonlin-doc gstreamer0.10-hplugins gstreamer0.10-nice gstreamer0.10-packagekit gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-doc gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-base gstreamer0.10-plugins-base-apps gstreamer0.10-plugins-base-dbg gstreamer0.10-plugins-base-doc gstreamer0.10-plugins-cutter gstreamer0.10-plugins-good gstreamer0.10-plugins-good-doc gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-doc gstreamer0.10-pocketsphinx gstreamer0.10-pulseaudio gstreamer0.10-qapt gstreamer0.10-sdl gstreamer0.10-tools gstreamer0.10-vaapi gstreamer0.10-vaapi-doc gstreamer0.10-x

and ran that through terminal. After a few minutes, the script was done and I did not notice any failures or errors. However, when I then ran sudo gstreamer-properties I got the same "Skipping unavailable plugin" messages as above^. The default input on Multimedia systems selector is set to c920 HD cam, yet I just opened up GUVC and it opens laptop camera. Here's the readout after sudo apt get install…. TOO MANY CHARACTERS, couldn't post. Here's half:

ad-multiverse_0.10.21-1_amd64.deb) ...
Selecting previously unselected package gstreamer0.10-plugins-good-doc.
Unpacking gstreamer0.10-plugins-good-doc (from .../gstreamer0.10-plugins-good-doc_0.10.31-1ubuntu1.2_all.deb) ...
Selecting previously unselected package gstreamer0.10-plugins-ugly-doc.
Unpacking gstreamer0.10-plugins-ugly-doc (from .../gstreamer0.10-plugins-ugly-doc_0.10.18.3-1ubuntu1_all.deb) ...
Selecting previously unselected package libsphinxbase1.
Unpacking libsphinxbase1 (from .../libsphinxbase1_0.4.1-0ubuntu4_amd64.deb) ...
Selecting previously unselected package libpocketsphinx1.
Unpacking libpocketsphinx1 (from .../libpocketsphinx1_0.5.1+dfsg1-0ubuntu3_amd64.deb) ...
Selecting previously unselected package gstreamer0.10-pocketsphinx.
Unpacking gstreamer0.10-pocketsphinx (from .../gstreamer0.10-pocketsphinx_0.5.1+dfsg1-0ubuntu3_amd64.deb) ...
Selecting previously unselected package libattica0.3.
Unpacking libattica0.3 (from .../libattica0.3_0.3.0-0ubuntu2_amd64.deb) ...
Selecting previously unselected package libdlrestrictions1.
Unpacking libdlrestrictions1 (from .../libdlrestrictions1_0.14.2ubuntu5_amd64.deb) ...
Selecting previously unselected package libkdecore5.
Unpacking libkdecore5 (from .../libkdecore5_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkdeui5.
Unpacking libkdeui5 (from .../libkdeui5_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkcmutils4.
Unpacking libkcmutils4 (from .../libkcmutils4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkdeclarative5.
Unpacking libkdeclarative5 (from .../libkdeclarative5_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkpty4.
Unpacking libkpty4 (from .../libkpty4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkdesu5.
Unpacking libkdesu5 (from .../libkdesu5_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libclucene0ldbl.
Unpacking libclucene0ldbl (from .../libclucene0ldbl_0.9.21b-2_amd64.deb) ...
Selecting previously unselected package virtuoso-opensource-6.1-common.
Unpacking virtuoso-opensource-6.1-common (from .../virtuoso-opensource-6.1-common_6.1.4+dfsg1-0ubuntu1_amd64.deb) ...
Selecting previously unselected package libvirtodbc0.
Unpacking libvirtodbc0 (from .../libvirtodbc0_6.1.4+dfsg1-0ubuntu1_amd64.deb) ...
Selecting previously unselected package soprano-daemon.
Unpacking soprano-daemon (from .../soprano-daemon_2.7.5+dfsg.1-0ubuntu1_amd64.deb) ...
Selecting previously unselected package libsoprano4.
Unpacking libsoprano4 (from .../libsoprano4_2.7.5+dfsg.1-0ubuntu1_amd64.deb) ...
Selecting previously unselected package libnepomuk4.
Unpacking libnepomuk4 (from .../libnepomuk4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libsolid4.
Unpacking libsolid4 (from .../libsolid4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libstreams0.
Unpacking libstreams0 (from .../libstreams0_0.7.7-1.1ubuntu3_amd64.deb) ...
Selecting previously unselected package libstreamanalyzer0.
Unpacking libstreamanalyzer0 (from .../libstreamanalyzer0_0.7.7-1.1ubuntu3_amd64.deb) ...
Selecting previously unselected package libkio5.
Unpacking libkio5 (from .../libkio5_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libnepomukquery4a.
Unpacking libnepomukquery4a (from .../libnepomukquery4a_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libnepomukutils4.
Unpacking libnepomukutils4 (from .../libnepomukutils4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkparts4.
Unpacking libkparts4 (from .../libkparts4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkdewebkit5.
Unpacking libkdewebkit5 (from .../libkdewebkit5_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkdnssd4.
Unpacking libkdnssd4 (from .../libkdnssd4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkemoticons4.
Unpacking libkemoticons4 (from .../libkemoticons4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkfile4.
Unpacking libkfile4 (from .../libkfile4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkjsapi4.
Unpacking libkjsapi4 (from .../libkjsapi4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libktexteditor4.
Unpacking libktexteditor4 (from .../libktexteditor4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkhtml5.
Unpacking libkhtml5 (from .../libkhtml5_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkidletime4.
Unpacking libkidletime4 (from .../libkidletime4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkmediaplayer4.
Unpacking libkmediaplayer4 (from .../libkmediaplayer4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libknewstuff3-4.
Unpacking libknewstuff3-4 (from .../libknewstuff3-4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libknotifyconfig4.
Unpacking libknotifyconfig4 (from .../libknotifyconfig4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libnepomukdatamanagement4.
Unpacking libnepomukdatamanagement4 (from .../libnepomukdatamanagement4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libnepomuksync4.
Unpacking libnepomuksync4 (from .../libnepomuksync4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package ntrack-module-libnl-0.
Unpacking ntrack-module-libnl-0 (from .../ntrack-module-libnl-0_016-1ubuntu1_amd64.deb) ...
Selecting previously unselected package libntrack0.
Unpacking libntrack0 (from .../libntrack0_016-1ubuntu1_amd64.deb) ...
Selecting previously unselected package libntrack-qt4-1.
Unpacking libntrack-qt4-1 (from .../libntrack-qt4-1_016-1ubuntu1_amd64.deb) ...
Selecting previously unselected package libqca2.
Unpacking libqca2 (from .../libqca2_2.0.3-2_amd64.deb) ...
Selecting previously unselected package libthreadweaver4.
Unpacking libthreadweaver4 (from .../libthreadweaver4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libplasma3.
Unpacking libplasma3 (from .../libplasma3_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package phonon.
Unpacking phonon (from .../phonon_4%3a4.7.0really4.6.0-0ubuntu1_amd64.deb) ...
Selecting previously unselected package kde-runtime-data.
Unpacking kde-runtime-data (from .../kde-runtime-data_4%3a4.8.5-0ubuntu0.2_all.deb) ...
Selecting previously unselected package libkde3support4.
Unpacking libkde3support4 (from .../libkde3support4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkjsembed4.
Unpacking libkjsembed4 (from .../libkjsembed4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkntlm4.
Unpacking libkntlm4 (from .../libkntlm4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libkrosscore4.
Unpacking libkrosscore4 (from .../libkrosscore4_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package libpolkit-qt-1-1.
Unpacking libpolkit-qt-1-1 (from .../libpolkit-qt-1-1_0.103.0-1_amd64.deb) ...
Selecting previously unselected package kdelibs5-data.
Unpacking kdelibs5-data (from .../kdelibs5-data_4%3a4.8.5-0ubuntu0.2_all.deb) ...
Selecting previously unselected package libxml2-utils.
Unpacking libxml2-utils (from .../libxml2-utils_2.7.8.dfsg-5.1ubuntu4.6_amd64.deb) ...
Selecting previously unselected package kdoctools.
Unpacking kdoctools (from .../kdoctools_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package kdelibs-bin.
Unpacking kdelibs-bin (from .../kdelibs-bin_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package kate-data.
Unpacking kate-data (from .../kate-data_4%3a4.8.5-0ubuntu0.1_all.deb) ...
Selecting previously unselected package libkatepartinterfaces4.
Unpacking libkatepartinterfaces4 (from .../libkatepartinterfaces4_4%3a4.8.5-0ubuntu0.1_amd64.deb) ...
Selecting previously unselected package katepart.
Unpacking katepart (from .../katepart_4%3a4.8.5-0ubuntu0.1_amd64.deb) ...
Selecting previously unselected package kdelibs5-plugins.
Unpacking kdelibs5-plugins (from .../kdelibs5-plugins_4%3a4.8.5-0ubuntu0.2_amd64.deb) ...
Selecting previously unselected package oxygen-icon-theme.
Unpacking oxygen-icon-theme (from .../oxygen-icon-theme_4%3a4.8.3-0ubuntu0.1_all.deb) ...
Selecting previously unselected package shared-desktop-ontologies.
Unpacking shared-desktop-ontologies (from .../shared-desktop-ontologies_0.8.1-1_all.deb) ...

Just wanted to double check in Ubuntu Software Center to make sure Gstreamer was installed, and it shows everything installed Ubuntu Gstreamer installed

mike@Mike-Ubuntu12:~$ 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 04f2:b289 Chicony Electronics Co., Ltd 
Bus 002 Device 003: ID 046d:082d Logitech, Inc. 
mike@Mike-Ubuntu12:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 3, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
        |__ Port 2: Dev 3, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
        |__ Port 2: Dev 3, If 2, Class=audio, Driver=snd-usb-audio, 480M
        |__ Port 2: Dev 3, If 3, Class=audio, Driver=snd-usb-audio, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
        |__ Port 4: Dev 3, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
        |__ Port 4: Dev 3, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M

Well this kind of fell dead in the water. I don't know if I should post another thread or what. I'm simply trying to make my external webcam my default webcam. I have Gstreamer installed (pictured) I have multimedia systems selector installed. I have default settings in Multimedia systems selector to set at Webcam c920, and yet when I open video chat or GUVC, it opens laptop cam.
I got some help on this, and I followed through. But I still can't seem to get it to work. Does anyone have any ideas, or should I post somewhere else? Thanks

Best Answer

Based on the answer from @hopeithelps, it seems that programs take /dev/video0 to be the default webcam. On my system, /dev/video0 is initially the integrated camera, while /dev/video1 appears/disappears automatically when the external webcam is attached/detached.

So I just wrote a simple command to set /dev/video0 to point to the "best available camera" -- the webcam if it's present, and the integrated camera otherwise. At present I have to invoke this script manually after plugging/unplugging the webcam. However, the microphone automatically switches to the "best microphone" because I followed this askUbuntu answer.

Rant: Shouldn't Ubuntu have a unified approach to hot-plugging of display, camera, speaker, microphone (and also keyboard, mouse, MIDI, ...?). All these things seem to require separate tinkering. I think gnome-display-manager has the ideal design: it remembers my old settings when I plug in a display I've used before.

Here's the script:

#!/bin/bash
# Make default camera /dev/video0 point to the "best" camera present.

if [ -h /dev/video0 ]; then 
   sudo rm /dev/video0   # not first run: remove our old symlink
elif [ -e /dev/video0 ]; then
   sudo mv /dev/video0 /dev/video0.original   # first run: rename original video0
fi 
if [ -e /dev/video1 ]; then
   sudo ln -s /dev/video1 /dev/video0   # symlink to video1 since it exists
   echo "Set default camera /dev/video0 --> external camera /dev/video1"
elif [ -e /dev/video0.original ]; then  # symlink to video0.original otherwise
   sudo ln -s /dev/video0.original /dev/video0
   echo "Set default camera /dev/video0 --> integrated camera /dev/video0.original"
else
   echo "Sorry, does this machine have no camera devices?"
   ls -l /dev/video*
fi

Tested with guvcview and Google Hangouts, using two different Logitech webcams. I am running Ubuntu 13.10 (actually Mint Petra) on a Thinkpad T530i.

You may have to edit the script if your webcam appears as /dev/video3 or something, as it does for @hopeithelps. (Perhaps I should have made it choose the /dev/video* device that has the most recent timestamp ...)

Related Question