UPDATE: 10th April 2012. The following FAQ refers to the "generic", binary-only
driver, which I don't actively support anymore. For the less generic opensource
SN9C1xx driver see the download section.

                        Frequently Asked Questions
GENERIC Video4Linux & Video4Linux2 Microdia-SN9CXXX DRIVER FOR LINUX
SN9C101, SN9C102, SN9C102P, SN9C103, SN9C105, SN9C110, SN9C120, SN9C201, SN9C202

Author & Final contact: Luca Risolia, homepage: http://www.linux-projects.org
-------------------------------------------------------------------------------

1. Q. What hardware does this driver support?
   A. This driver attempts to support all the webcams based on the Microdia
      SN9C101, SN9C102, SN9C102P, SN9C103, SN9C105, SN9C110, SN9C120, SN9C201 and
      SN9C202 video controllers ("SN9CXXX" for short) , which can be found in
      a lot of many recent USB and/or USB2 webcams, embedded in laptops or sold
      as stand-alone devices.

2. Q: Which SN9CXXX webcams does the driver support exactly?
   A: I can't mention all the models and brands of devices with a SN9CXXX
      inside. There are "zillions" of them. If you already have a webcam, the
      simplest way to see if your webcam will be working with the driver is to
      install the driver itself (choose the latest available free package for
      your system). Once loaded, the driver automatically recognizes all the
      SN9CXXX-based devices attached for sure, although not all of them might
      be actually supported and ready to use. Kernel messages will always tell
      you yes or no.

3.Q: Can you suggest at least one application to try the driver?
   A: The short answer is: you can use whatever video application you
      prefer, be it V4L1 or V4L2. Just hope it has not too many bugs.

      Below is a list of applications which are known to work. If you know
      one not listed or not working properly, let me know:

      - videoview, its front-end is far from perfect, but has a good
      back-end. It has a GUI. You can do video previewing, recording, playbacking
      and control all the image properties. You can use some external applications
      such as "alltray" to minimize videoview onto the system tray and use it as
      "panel" application for changing the image properties while using another
      preferred application for video streaming.

      - Skype for Linux
      Skype works perfectly. Make sure to use the SN9CXXX v. 2.11 or greater and
      Skype BETA 2.0.0.27 or greater.
      
      - WengoPhone
        It's a multiprotocol (ICQ, MSN, AIM..) Istant Messanger and VoIP/SIP
        client. It seems it works perfectly. However, make sure to use the
        LATEST version available.

      - Ekiga
      Another VoIP client (working with V4L1 and V4L2).
      At the moment of writing, in Ekiga the V4L2 plugin is
      partially broken somewhere. Although ekiga can show the video, it does
      not query and set the image controls (exposure, red, green, blue) as
      expected - also, the interface for the controls when the V4L2 plugin is
      used seems to be the old one used for the old V4l1.

      - VideoLan VLC
      Nice application, you can do about everything with this swiss knife,
      from recording to real-time post-processing and streaming on the net,
      even both at the same time, etc..

      - xawtv

      - mplayer and mencoder, for example, to show a 320x240 video run:
        mplayer tv:// -tv driver=v4l:width=320:height=240:device=/dev/video0
        To record (one line,replace , ,  with values):
        mencoder tv:// -tv driver=v4l:width=:height=:\
        device=/dev/video0 -nosound -ovc lavc -o .avi

      - gqcam. For example:
        gqcam -v /dev/video0 , I suggest that you disable the "Auto brightness"
        option in the menu.

      - camstream

      - sn-webcam

      - palantir

      - aMSN (you must load the SN9CXXX driver with "force_v4lx=1" parameter,
                as at the moment of writing, the V4L2 support in aMSN is not
                complete yet)

      - linphone
        Another VoIP/SIP Client for Audio & Video Conferences.

      - Kopete - Multiprotocol Istant Messanger for the KDE Desktop

      - transcode
      Useful for recording audio and video and do any sort of filtering and
      processing on-the-fly. The v4l1 plugin is not flawless: just make sure
      to record from a supported resolution (width, height must be multiple
      of 16).
      Example (on one line command):
      transcode -z -M 2 -x v4l,v4l -i /dev/video0 --import_v4l 0,38 \
      -p /dev/dsp -y xvid -o test.avi -w 1500 -e 32000 -E 44100 -b 96 -s 7 \
      -c 0-250 -g 320x240 -j 0,4

      - ttv
        ttv displays TV/video on a terminal, rendering the images using aalib.

      - ucview, from the unicap project
        Partially working. Use the latest version available.
        The V4L1 plugin of ucview prior to v0.17 does not seem to show
        the video smoothly and only work with RGB32 bpp and GREY, while the V4L2
        plugin does not support the formats from the webcam. Keep an eye
        on this library, the situation may change in the near future.

      - motion, a software motion detector.

      - vgrabbj
        It takes a v4l device as input to put it into an jpeg, pnm, or
        png file.
        You can add a timestamp into the image. You can also make it
        automagically upload it to your website via ftp.

      - Streamer is a versatile program that allows a capture from a
         webcam or video device using only the command line. It may be
         offered in your Linux distribution's Xawtv package, or may need
         to be fetched separately as in Debian.
         To make an .avi file with streamer: 
         streamer -q -c /dev/video0 -f rgb24 -r 3 -t 00:1:00 -o outfile.avi

      - effectv
         EffecTV is a real-time video effector. You can watch TV or video
         through amazing effectors.

      - freej

      - Flash player 9. It works perfectly, try this page to test.

      - camorama - works perfectly since SN9CXXX version 2.08

      - fswebcam
      
      - luvcview

      - webcam-server
      
      - camgrab

      - wxcam (fixing planned)

      - Picasa
      
      - cheese
      
      - motv
      
      - vidcat
 
      - v4l2ucp
      
      - cameramonitor

      - webcam
      
      - dov4l - Set parameters on a video4linux1 device

      - xsane, quiteinsane, xscanimage, gimp - Graphical scanning frontends

4. Q: Do I need to remove the default SN9C1XX kernel driver to install the
       SN9CXXX ?
    A: Unless you know what you are doing, yes. All the SN9C1XX's are
       supported by the SN9CXXX with more features, so you won't lost any
       functionalities. Whenever possible, the installation process will ask
       you whether you wish to remove the SN9C1XX (sn9c102.ko module) to
       avoid any possible conflicts with the SN9CXXX.

5. Q: The image from my webcam is upside down. What can I do?
    A: It happens with some webcams. The SN9CXXX driver has a module parameter
       named "vflip". Try to load the driver with "vflip=1" to solve the problem.

6. Q: What are the features of the SN9CXXX driver?
    A: Some of the features of the driver are:
       - transparent and full compliance with both the Video4Linux1
         and Video4Linux2 API;
       - working with all the existing video applications under linux;
       - multiple opens;
       - available mmap or read/poll methods for video streaming;
       - automatic detection of image sensor;
       - support for built-in microphone interface;
       - support for any window resolutions and optional panning within
         the pixel area of the image sensor;
       - image downscaling with arbitrary scaling factors from 1, 2 and 4
         in both directions;
       - two different video formats for uncompressed or compressed video data
         in low or high compression quality;
       - full support for the capabilities of many of the possible image sensors
         that can be connected to the SN9Cxxx bridges, including, for instance,
         red, green, blue and global gain adjustments, exposure, etc..;
       - use of default color settings for sunlight conditions;
       - dynamic I/O interface for both SN9Cxxx and image sensor control and
         monitoring (only with source code);
       - dynamic driver control thanks to various module parameters;
       - up to 64 cameras can be handled at the same time;
       - no known bugs.

You may contact me for claryfing this FAQ, if necessary.