|  | The README file from the original package from Micronas appears below. Only | 
|  | the part about the firmware redistribution in section 0 is relevant, all | 
|  | other sections are completely obsolete. | 
|  |  | 
|  | --------------------------------------------------------------------------- | 
|  | WIS GO7007SB Public Linux Driver | 
|  | --------------------------------------------------------------------------- | 
|  |  | 
|  |  | 
|  | *** Please see the file RELEASE-NOTES for important last-minute updates *** | 
|  |  | 
|  |  | 
|  | 0. OVERVIEW AND LICENSING/DISCLAIMER | 
|  |  | 
|  |  | 
|  | This driver kit contains Linux drivers for the WIS GO7007SB multi-format | 
|  | video encoder.  Only kernel version 2.6.x is supported.  The video stream | 
|  | is available through the Video4Linux2 API and the audio stream is available | 
|  | through the ALSA API (or the OSS emulation layer of the ALSA system). | 
|  |  | 
|  | The files in kernel/ and hotplug/ are licensed under the GNU General Public | 
|  | License Version 2 from the Free Software Foundation.  A copy of the license | 
|  | is included in the file COPYING. | 
|  |  | 
|  | The example applications in apps/ and C header files in include/ are | 
|  | licensed under a permissive license included in the source files which | 
|  | allows copying, modification and redistribution for any purpose without | 
|  | attribution. | 
|  |  | 
|  | The firmware files included in the firmware/ directory may be freely | 
|  | redistributed only in conjunction with this document; but modification, | 
|  | tampering and reverse engineering are prohibited. | 
|  |  | 
|  | MICRONAS USA, INC., MAKES NO WARRANTIES TO ANY PERSON OR ENTITY WITH | 
|  | RESPECT TO THE SOFTWARE OR ANY DERIVATIVES THEREOF OR ANY SERVICES OR | 
|  | LICENSES AND DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION | 
|  | WARRANTIES OF MERCHANTABILITY, SUPPORT, AND FITNESS FOR A PARTICULAR | 
|  | PURPOSE AND NON-INFRINGEMENT. | 
|  |  | 
|  |  | 
|  | 1. SYSTEM REQUIREMENTS | 
|  |  | 
|  |  | 
|  | This driver requires Linux kernel 2.6.  Kernel 2.4 is not supported.  Using | 
|  | kernel 2.6.10 or later is recommended, as earlier kernels are known to have | 
|  | unstable USB 2.0 support. | 
|  |  | 
|  | A fully built kernel source tree must be available.  Typically this will be | 
|  | linked from "/lib/modules/<KERNEL VERSION>/build" for convenience.  If this | 
|  | link does not exist, an extra parameter will need to be passed to the | 
|  | `make` command. | 
|  |  | 
|  | All vendor-built kernels should already be configured properly.  However, | 
|  | for custom-built kernels, the following options need to be enabled in the | 
|  | kernel as built-in or modules: | 
|  |  | 
|  | CONFIG_HOTPLUG           - Support for hot-pluggable devices | 
|  | CONFIG_MODULES           - Enable loadable module support | 
|  | CONFIG_KMOD              - Automatic kernel module loading | 
|  | CONFIG_FW_LOADER         - Hotplug firmware loading support | 
|  | CONFIG_I2C               - I2C support | 
|  | CONFIG_VIDEO_DEV         - Video For Linux | 
|  | CONFIG_SOUND             - Sound card support | 
|  | CONFIG_SND               - Advanced Linux Sound Architecture | 
|  | CONFIG_USB               - Support for Host-side USB | 
|  | CONFIG_USB_DEVICEFS      - USB device filesystem | 
|  | CONFIG_USB_EHCI_HCD      - EHCI HCD (USB 2.0) support | 
|  |  | 
|  | Additionally, to use the example application, the following options need to | 
|  | be enabled in the ALSA section: | 
|  |  | 
|  | CONFIG_SND_MIXER_OSS     - OSS Mixer API | 
|  | CONFIG_SND_PCM_OSS       - OSS PCM (digital audio) API | 
|  |  | 
|  | The hotplug scripts, along with the fxload utility, must also be installed. | 
|  | These scripts can be obtained from <http://linux-hotplug.sourceforge.net/>. | 
|  | Hotplugging is used for loading firmware into the Cypruss EZ-USB chip using | 
|  | fxload and for loading firmware into the driver using the firmware agent. | 
|  |  | 
|  |  | 
|  | 2. COMPILING AND INSTALLING THE DRIVER | 
|  |  | 
|  |  | 
|  | Most users should be able to compile the driver by simply running: | 
|  |  | 
|  | $ make | 
|  |  | 
|  | in the top-level directory of the driver kit.  First the kernel modules | 
|  | will be built, followed by the example applications. | 
|  |  | 
|  | If the build system is unable to locate the kernel source tree for the | 
|  | currently-running kernel, or if the module should be built for a kernel | 
|  | other than the currently-running kernel, an additional parameter will need | 
|  | to be passed to make to specify the appropriate kernel source directory: | 
|  |  | 
|  | $ make KERNELSRC=/usr/src/linux-2.6.10-custom3 | 
|  |  | 
|  | Once the compile completes, the driver and firmware files should be | 
|  | installed by running: | 
|  |  | 
|  | $ make install | 
|  |  | 
|  | The kernel modules will be placed in "/lib/modules/<KERNEL VERSION>/extra" | 
|  | and the firmware files will be placed in the appropriate hotplug firmware | 
|  | directory, usually /lib/firmware.  In addition, USB maps and scripts will | 
|  | be placed in /etc/hotplug/usb to enable fxload to initialize the EZ-USB | 
|  | control chip when the device is connected. | 
|  |  | 
|  |  | 
|  | 3. PAL/SECAM TUNER CONFIGURATION (TV402U-EU only) | 
|  |  | 
|  |  | 
|  | The PAL model of the Plextor ConvertX TV402U may require additional | 
|  | configuration to correctly select the appropriate TV frequency band and | 
|  | audio subchannel. | 
|  |  | 
|  | Users with a device other than the Plextor ConvertX TV402U-EU should skip | 
|  | this section. | 
|  |  | 
|  | The wide variety of PAL TV systems used in Europe requires that additional | 
|  | information about the local TV standards be passed to the driver in order | 
|  | to properly tune TV channels.  The two necessary parameters are (a) the PAL | 
|  | TV band, and (b) the audio subchannel format in use. | 
|  |  | 
|  | In many cases, the appropriate TV band selection is passed to the driver | 
|  | from applications.  However, in some cases, the application only specifies | 
|  | that the driver should use PAL but not the specific information about the | 
|  | appropriate TV band.  To work around this issue, the correct TV band may be | 
|  | specified in the "force_band" parameter to the wis-sony-tuner module: | 
|  |  | 
|  | TV band           force_band | 
|  | -------           ---------- | 
|  | PAL B/G                B | 
|  | PAL I                  I | 
|  | PAL D/K                D | 
|  | SECAM L                L | 
|  |  | 
|  | If the "force_band" parameter is specified, the driver will ignore any TV | 
|  | band specified by applications and will always use the band provided in the | 
|  | module parameter. | 
|  |  | 
|  | The other parameter that can be specified is the audio subchannel format. | 
|  | There are several stereo audio carrier systems in use, including NICAM and | 
|  | three varieties of A2.  To receive audio broadcast on one of these stereo | 
|  | carriers, the "force_mpx_mode" parameter must be specified to the | 
|  | wis-sony-tuner module. | 
|  |  | 
|  | TV band           Audio subcarrier       force_mpx_mode | 
|  | -------           ----------------       -------------- | 
|  | PAL B/G            Mono (default)               1 | 
|  | PAL B/G                  A2                     2 | 
|  | PAL B/G                 NICAM                   3 | 
|  | PAL I              Mono (default)               4 | 
|  | PAL I                   NICAM                   5 | 
|  | PAL D/K            Mono (default)               6 | 
|  | PAL D/K                 A2 (1)                  7 | 
|  | PAL D/K                 A2 (2)                  8 | 
|  | PAL D/K                 A2 (3)                  9 | 
|  | PAL D/K                 NICAM                  10 | 
|  | SECAM L            Mono (default)              11 | 
|  | SECAM L                 NICAM                  12 | 
|  |  | 
|  | If the "force_mpx_mode" parameter is not specified, the correct mono-only | 
|  | mode will be chosen based on the TV band.  However, the tuner will not | 
|  | receive stereo audio or bilingual broadcasts correctly. | 
|  |  | 
|  | To pass the "force_band" or "force_mpx_mode" parameters to the | 
|  | wis-sony-tuner module, the following line must be added to the modprobe | 
|  | configuration file, which varies from one Linux distribution to another. | 
|  |  | 
|  | options wis-sony-tuner force_band=B force_mpx_mode=2 | 
|  |  | 
|  | The above example would force the tuner to the PAL B/G TV band and receive | 
|  | stereo audio broadcasts on the A2 carrier. | 
|  |  | 
|  | To verify that the configuration has been placed in the correct location, | 
|  | execute: | 
|  |  | 
|  | $ modprobe -c | grep wis-sony-tuner | 
|  |  | 
|  | If the configuration line appears, then modprobe will pass the parameters | 
|  | correctly the next time the wis-sony-tuner module is loaded into the | 
|  | kernel. | 
|  |  | 
|  |  | 
|  | 4. TESTING THE DRIVER | 
|  |  | 
|  |  | 
|  | Because few Linux applications are able to correctly capture from | 
|  | Video4Linux2 devices with only compressed formats supported, the new driver | 
|  | should be tested with the "gorecord" application in the apps/ directory. | 
|  |  | 
|  | First connect a video source to the device, such as a DVD player or VCR. | 
|  | This will be captured to a file for testing the driver.  If an input source | 
|  | is unavailable, a test file can still be captured, but the video will be | 
|  | black and the audio will be silent. | 
|  |  | 
|  | This application will auto-detect the V4L2 and ALSA/OSS device names of the | 
|  | hardware and will record video and audio to an AVI file for a specified | 
|  | number of seconds.  For example: | 
|  |  | 
|  | $ apps/gorecord -duration 60 capture.avi | 
|  |  | 
|  | If this application does not successfully record an AVI file, the error | 
|  | messages produced by gorecord and recorded in the system log (usually in | 
|  | /var/log/messages) should provide information to help resolve the problem. | 
|  |  | 
|  | Supplying no parameters to gorecord will cause it to probe the available | 
|  | devices and exit.  Use the -help flag for usage information. | 
|  |  | 
|  |  | 
|  | 5. USING THE DRIVER | 
|  |  | 
|  |  | 
|  | The V4L2 device implemented by the driver provides a standard compressed | 
|  | format API, within the following criteria: | 
|  |  | 
|  | * Applications that only support the original Video4Linux1 API will not | 
|  | be able to communicate with this driver at all. | 
|  |  | 
|  | * No raw video modes are supported, so applications like xawtv that | 
|  | expect only uncompressed video will not function. | 
|  |  | 
|  | * Supported compression formats are: Motion-JPEG, MPEG1, MPEG2 and MPEG4. | 
|  |  | 
|  | * MPEG video formats are delivered as Video Elementary Streams only. | 
|  | Program Stream (PS), Transport Stream (TS) and Packetized Elementary | 
|  | Stream (PES) formats are not supported. | 
|  |  | 
|  | * Video parameters such as format and input port may not be changed while | 
|  | the encoder is active. | 
|  |  | 
|  | * The audio capture device only functions when the video encoder is | 
|  | actively capturing video.  Attempts to read from the audio device when | 
|  | the encoder is inactive will result in an I/O error. | 
|  |  | 
|  | * The native format of the audio device is 48Khz 2-channel 16-bit | 
|  | little-endian PCM, delivered through the ALSA system.  No audio | 
|  | compression is implemented in the hardware.  ALSA may convert to other | 
|  | uncompressed formats on the fly. | 
|  |  | 
|  | The include/ directory contains a C header file describing non-standard | 
|  | features of the GO7007SB encoder, which are described below: | 
|  |  | 
|  |  | 
|  | GO7007IOC_S_COMP_PARAMS, GO7007IOC_G_COMP_PARAMS | 
|  |  | 
|  | These ioctls are used to negotiate general compression parameters. | 
|  |  | 
|  | To query the current parameters, call the GO7007IOC_G_COMP_PARAMS ioctl | 
|  | with a pointer to a struct go7007_comp_params.  If the driver is not | 
|  | set to MPEG format, the EINVAL error code will be returned. | 
|  |  | 
|  | To change the current parameters, initialize all fields of a struct | 
|  | go7007_comp_params and call the GO7007_IOC_S_COMP_PARAMS ioctl with a | 
|  | pointer to this structure.  The driver will return the current | 
|  | parameters with any necessary changes to conform to the limitations of | 
|  | the hardware or current compression mode.  Any or all fields can be set | 
|  | to zero to request a reasonable default value.  If the driver is not | 
|  | set to MPEG format, the EINVAL error code will be returned.  When I/O | 
|  | is in progress, the EBUSY error code will be returned. | 
|  |  | 
|  | Fields in struct go7007_comp_params: | 
|  |  | 
|  | __u32                        The maximum number of frames in each | 
|  | gop_size                   Group Of Pictures; i.e. the maximum | 
|  | number of frames minus one between | 
|  | each key frame. | 
|  |  | 
|  | __u32                        The maximum number of sequential | 
|  | max_b_frames               bidirectionally-predicted frames. | 
|  | (B-frames are not yet supported.) | 
|  |  | 
|  | enum go7007_aspect_ratio     The aspect ratio to be encoded in the | 
|  | aspect_ratio               meta-data of the compressed format. | 
|  |  | 
|  | Choices are: | 
|  | GO7007_ASPECT_RATIO_1_1 | 
|  | GO7007_ASPECT_RATIO_4_3_NTSC | 
|  | GO7007_ASPECT_RATIO_4_3_PAL | 
|  | GO7007_ASPECT_RATIO_16_9_NTSC | 
|  | GO7007_ASPECT_RATIO_16_9_PAL | 
|  |  | 
|  | __u32                        Bit-wise OR of control flags (below) | 
|  | flags | 
|  |  | 
|  | Flags in struct go7007_comp_params: | 
|  |  | 
|  | GO7007_COMP_CLOSED_GOP       Only produce self-contained GOPs, used | 
|  | to produce streams appropriate for | 
|  | random seeking. | 
|  |  | 
|  | GO7007_COMP_OMIT_SEQ_HEADER  Omit the stream sequence header. | 
|  |  | 
|  |  | 
|  | GO7007IOC_S_MPEG_PARAMS, GO7007IOC_G_MPEG_PARAMS | 
|  |  | 
|  | These ioctls are used to negotiate MPEG-specific stream parameters when | 
|  | the pixelformat has been set to V4L2_PIX_FMT_MPEG. | 
|  |  | 
|  | To query the current parameters, call the GO7007IOC_G_MPEG_PARAMS ioctl | 
|  | with a pointer to a struct go7007_mpeg_params.  If the driver is not | 
|  | set to MPEG format, the EINVAL error code will be returned. | 
|  |  | 
|  | To change the current parameters, initialize all fields of a struct | 
|  | go7007_mpeg_params and call the GO7007_IOC_S_MPEG_PARAMS ioctl with a | 
|  | pointer to this structure.  The driver will return the current | 
|  | parameters with any necessary changes to conform to the limitations of | 
|  | the hardware or selected MPEG mode.  Any or all fields can be set to | 
|  | zero to request a reasonable default value.  If the driver is not set | 
|  | to MPEG format, the EINVAL error code will be returned.  When I/O is in | 
|  | progress, the EBUSY error code will be returned. | 
|  |  | 
|  | Fields in struct go7007_mpeg_params: | 
|  |  | 
|  | enum go7007_mpeg_video_standard | 
|  | mpeg_video_standard        The MPEG video standard in which to | 
|  | compress the video. | 
|  |  | 
|  | Choices are: | 
|  | GO7007_MPEG_VIDEO_MPEG1 | 
|  | GO7007_MPEG_VIDEO_MPEG2 | 
|  | GO7007_MPEG_VIDEO_MPEG4 | 
|  |  | 
|  | __u32                        Bit-wise OR of control flags (below) | 
|  | flags | 
|  |  | 
|  | __u32                        The profile and level indication to be | 
|  | pali                       stored in the sequence header.  This | 
|  | is only used as an indicator to the | 
|  | decoder, and does not affect the MPEG | 
|  | features used in the video stream. | 
|  | Not valid for MPEG1. | 
|  |  | 
|  | Choices for MPEG2 are: | 
|  | GO7007_MPEG2_PROFILE_MAIN_MAIN | 
|  |  | 
|  | Choices for MPEG4 are: | 
|  | GO7007_MPEG4_PROFILE_S_L0 | 
|  | GO7007_MPEG4_PROFILE_S_L1 | 
|  | GO7007_MPEG4_PROFILE_S_L2 | 
|  | GO7007_MPEG4_PROFILE_S_L3 | 
|  | GO7007_MPEG4_PROFILE_ARTS_L1 | 
|  | GO7007_MPEG4_PROFILE_ARTS_L2 | 
|  | GO7007_MPEG4_PROFILE_ARTS_L3 | 
|  | GO7007_MPEG4_PROFILE_ARTS_L4 | 
|  | GO7007_MPEG4_PROFILE_AS_L0 | 
|  | GO7007_MPEG4_PROFILE_AS_L1 | 
|  | GO7007_MPEG4_PROFILE_AS_L2 | 
|  | GO7007_MPEG4_PROFILE_AS_L3 | 
|  | GO7007_MPEG4_PROFILE_AS_L4 | 
|  | GO7007_MPEG4_PROFILE_AS_L5 | 
|  |  | 
|  | Flags in struct go7007_mpeg_params: | 
|  |  | 
|  | GO7007_MPEG_FORCE_DVD_MODE   Force all compression parameters and | 
|  | bitrate control settings to comply | 
|  | with DVD MPEG2 stream requirements. | 
|  | This overrides most compression and | 
|  | bitrate settings! | 
|  |  | 
|  | GO7007_MPEG_OMIT_GOP_HEADER  Omit the GOP header. | 
|  |  | 
|  | GO7007_MPEG_REPEAT_SEQHEADER Repeat the MPEG sequence header at | 
|  | the start of each GOP. | 
|  |  | 
|  |  | 
|  | GO7007IOC_S_BITRATE, GO7007IOC_G_BITRATE | 
|  |  | 
|  | These ioctls are used to set and query the target bitrate value for the | 
|  | compressed video stream.  The bitrate may be selected by storing the | 
|  | target bits per second in an int and calling GO7007IOC_S_BITRATE with a | 
|  | pointer to the int.  The bitrate may be queried by calling | 
|  | GO7007IOC_G_BITRATE with a pointer to an int where the current bitrate | 
|  | will be stored. | 
|  |  | 
|  | Note that this is the primary means of controlling the video quality | 
|  | for all compression modes, including V4L2_PIX_FMT_MJPEG.  The | 
|  | VIDIOC_S_JPEGCOMP ioctl is not supported. | 
|  |  | 
|  |  | 
|  | ---------------------------------------------------------------------------- | 
|  | Installing the WIS PCI Voyager Driver | 
|  | --------------------------------------------------------------------------- | 
|  |  | 
|  | The WIS PCI Voyager driver requires several patches to the Linux 2.6.11.x | 
|  | kernel source tree before compiling the driver.  These patches update the | 
|  | in-kernel SAA7134 driver to the newest development version and patch bugs | 
|  | in the TDA8290/TDA8275 tuner driver. | 
|  |  | 
|  | The following patches must be downloaded from Gerd Knorr's website and | 
|  | applied in the order listed: | 
|  |  | 
|  | http://dl.bytesex.org/patches/2.6.11-2/i2c-tuner | 
|  | http://dl.bytesex.org/patches/2.6.11-2/i2c-tuner2 | 
|  | http://dl.bytesex.org/patches/2.6.11-2/v4l2-api-mpeg | 
|  | http://dl.bytesex.org/patches/2.6.11-2/saa7134-update | 
|  |  | 
|  | The following patches are included with this SDK and can be applied in any | 
|  | order: | 
|  |  | 
|  | patches/2.6.11/saa7134-voyager.diff | 
|  | patches/2.6.11/tda8275-newaddr.diff | 
|  | patches/2.6.11/tda8290-ntsc.diff | 
|  |  | 
|  | Check to make sure the CONFIG_VIDEO_SAA7134 option is enabled in the kernel | 
|  | configuration, and build and install the kernel. | 
|  |  | 
|  | After rebooting into the new kernel, the GO7007 driver can be compiled and | 
|  | installed: | 
|  |  | 
|  | $ make SAA7134_BUILD=y | 
|  | $ make install | 
|  | $ modprobe saa7134-go7007 | 
|  |  | 
|  | There will be two V4L video devices associated with the PCI Voyager.  The | 
|  | first device (most likely /dev/video0) provides access to the raw video | 
|  | capture mode of the SAA7133 device and is used to configure the source | 
|  | video parameters and tune the TV tuner.  This device can be used with xawtv | 
|  | or other V4L(2) video software as a standard uncompressed device. | 
|  |  | 
|  | The second device (most likely /dev/video1) provides access to the | 
|  | compression functions of the GO7007.  It can be tested using the gorecord | 
|  | application in the apps/ directory of this SDK: | 
|  |  | 
|  | $ apps/gorecord -vdevice /dev/video1 -noaudio test.avi | 
|  |  | 
|  | Currently the frame resolution is fixed at 720x480 (NTSC) or 720x576 (PAL), | 
|  | and the video standard must be specified to both the raw and the compressed | 
|  | video devices (xawtv and gorecord, for example). | 
|  |  | 
|  |  | 
|  | -------------------------------------------------------------------------- | 
|  | RELEASE NOTES FOR WIS GO7007SB LINUX DRIVER | 
|  | --------------------------------------------------------------------------- | 
|  |  | 
|  | Last updated: 5 November 2005 | 
|  |  | 
|  | - Release 0.9.7 includes new support for using udev to run fxload.  The | 
|  | install script should automatically detect whether the old hotplug | 
|  | scripts or the new udev rules should be used.  To force the use of | 
|  | hotplug, run "make install USE_UDEV=n".  To force the use of udev, run | 
|  | "make install USE_UDEV=y". | 
|  |  | 
|  | - Motion detection is supported but undocumented.  Try the `modet` app | 
|  | for a demonstration of how to use the facility. | 
|  |  | 
|  | - Using USB2.0 devices such as the TV402U with USB1.1 HCDs or hubs can | 
|  | cause buffer overruns and frame drops, even at low framerates, due to | 
|  | inconsistency in the bitrate control mechanism. | 
|  |  | 
|  | - On devices with an SAA7115, including the Plextor ConvertX, video height | 
|  | values of 96, 128, 160, 192, 256, 320, and 384 do not work in NTSC mode. | 
|  | All valid heights up to 512 work correctly in PAL mode. | 
|  |  | 
|  | - The WIS Star Trek and PCI Voyager boards have no support yet for audio | 
|  | or the TV tuner. |