6. Video

The VIA EPIA M series use the CLE266 video chip. The VESA generic driver included with Red Hat 8 works with the CLE266 chip but doesn't support any of the CLE266 advanced features such as 2d/3d hardware acceleration, TVOUT, video capture and direct rendering.

6.1. VIA XFree86 Driver

The XFree86 VESA driver will work with the PLE133 and CLE266 graphics processors, but VIA provides an accelerated XFree86 "via" driver from their www.viarena.com downloads area. There are different downloads for the PLE133 and CLE266 chips. I will describe the procedures for the CLE266 chip. The drivers are distributed in binary format. The download site lists different packages for different distributions but those packages just contain distribution-specific documentation. The binary drivers for all distributions are contained in the same file. Go to the viaarena CLE266 driver download page and scroll to the bottom. You will see two sections: Full Binary and Lite Binary. As far as I can tell, the only difference between the Full and Lite versions is that the Full version contains the MPEG2 decoding library but the Lite version does not.

The video driver packages prepared by VIA include short scripts that will copy the drivers to the appropriate location. But sometimes it might be important for you to know which files go where. For instance, if you download the fedora binary drivers you must manually copy them to their destinations. Here is a list of the important files contained in the packages and where they go.

FilenameX or KernelInstall path
via_v4l_drv.oKernel/lib/modules/$KERNELVERSION/kernel/drivers/media/video
videodev.oKernel/lib/modules/$KERNELVERSION/kernel/drivers/media/video
via_drv.oX/usr/X11R6/lib/modules/drivers
via.oKernel/lib/modules/$KERNELVERSION/kernel/drivers/char/drm
via_dri.soX/usr/X11R6/lib/modules/dri
libddmpeg.soX/usr/X11R6/lib

FilenameX or KernelInstall path
libGL.so.1.2X/usr/X11R6/lib
libdri.aX/usr/X11R6/lib/modules/extensions
libglut.so.3.7.0X/usr/lib

You should read a little bit of the document, but you will get to a sentence that says "This package contains two files ...". No it didn't, it just contained one file. So go back to the viaarena.com linux CLE266 driver page, scroll to the bottom, and download the file named clexf40030-bin.zip. Make a new directory, and unzip and extract all the files:

(in the temp directory)

bash# cp ../CLEXF40030-bin.zip .
bash# cd CLEXF40030-bin
bash# tar -xzvf CLEXF40030.tgz 
bash# tar -xzvf DRI.tgz
bash# cd XLEXF40030
bash# less Installation.txt

The pdf file will tell you to read the Installation.txt file. Basically, the installation.txt file tells you to run two shell scripts, as follows:

bash# ./vinstall

To use the vinstall script the /sbin directory must be in the path. In some distros this may not be true. You can add /sbin to the path using this command:

bash# export PATH=$PATH:/sbin

Also, the vinstall script expects the kernel version which came on the CD-ROM. If your distro includes a tool, like Red Hat Network, which updated your kernel to a new release, then the vinstall script will fail. Downgrading a kernel package can be tricky. You might have to reinstall from CD.

Once you run the vinstall script it will ask which CPU you use - the M10k (Nehemiah) uses the C3-2 CPU, all others use the C3. Then change to the DRI directory and install the DRI libraries

bash# cd ../DRI
bash# ./minstall

Finally, you should edit the /etc/X11/XF86Config file. Here is an example Device section:

Section "Device"
    Identifier "VIA cle266"
    Driver     "via"
    VendorName "Via"
    BoardName  "cle266"
    VideoRam   32768
    Option     "ActiveDevice" "CRT,TV"
    Option     "TVType" "NTSC"
    Option     "TVOutput" "S-Video"
    Option     "PciRetry" "true"
EndSection

You can use whatever identifier string you want, as long as you use the same string later in the Screen section. Notice that the Driver is "via" - that is important. The VendorName and BoardName properties are purely informational. In theory, the VideoRam property should not be required - X should auto-detect the BIOS value. But sometimes the auto-detection doesn't work, so you should include the command. And be sure to check the BIOS Video RAM value! It should be set to 32768. X should auto-detect whether the TV and/or CRT are working but sometimes the auto-detection doesn't work. And a user has reported that the active device property might be non-volatile. So it is best to explicitly define the ActiveDevice property. The via driver supports four devices: CRT, TV, LCD, and DFP. If you use LDC or DFP then you must read the Installation.txt file included in the CLEXF driver package. The next two options are only required if you use a TV set with your EPIA board. "TVType" option may be either "NTSC" or "PAL". The "TVOutput" option may be "Composite" "S-Video", "RGB", or "YCbCr". The PciRetry value is supposed to prevent some audio problems.

By default the CLE266 supports common VESA modes. It also has some "non-standard" modes. These unusual modes are optional - if you really want to use them then add these lines to the "Monitor" section of your /etc/X11/XF86Config file:

          #Refresh Rate 60Hz
          ModeLine "720x480" 26.7 720 736 808 896 480 481 484 497
          ModeLine "720x576" 32.7 720 744 816 912 576 577 580 597
          ModeLine "848x480" 31.5 848 864 952 1056 480 481 484 497
          ModeLine "856x480" 31.7 856 872 960 1064 480 481 484 497
          ModeLine "1024x512" 41.3 1024 1056 1160 1296 512 513 516 531
          ModeLine "1280x768" 80.1 1280 1344 1480 1680 768 769 772 795
          ModeLine "1440x1050" 126.2 1440 1536 1688 1936 1050 1051 1054 1087
          #Refresh Rate 75Hz
          ModeLine "720x480" 34.9 720 752 824 928 480 481 484 502
          ModeLine "720x576" 42.6 720 760 832 944 576 577 580 602
          ModeLine "848x480" 41.0 848 880 968 1088 480 481 484 502
          ModeLine "856x480" 41.3 856 888 976 1096 480 481 484 502
          ModeLine "1024x512" 53.3 1024 1072 1176 1328 512 513 516 535
          ModeLine "1280x768" 103.0 1280 1360 1496 1712 768 769 772 802
          ModeLine "1440x1050" 160.0 1440 1536 1696 1952 1050 1051 1054 1096
          #Refresh Rate 85Hz
          ModeLine "1280x768" 118.5 1280 1368 1504 1728 768 769 772 807
          ModeLine "1440x1050" 184.5 1440 1544 1704 1968 1050 1051 1054 1103
          ModeLine "848x480" 47.4 848 888 976 1104 480 481 484 505

If you want to use your monitor's DPMS features, make sure that you have added the line

                 Option  "dpms"

To the "Monitor" section. Then create a new "ServerFlags" section, like this:

Section "ServerFlags"
        Option "BlankTime" "0"
        Option "StandbyTime" "5"
        Option "SuspendTime" "0"
        Option "OffTime" "15"
EndSection

Finally, your screen section should look something like this (of course, Monitor will be your monitor Identifier, and the modes might be different):

Section "Screen"
        Identifier "Screen0"
        Device     "VIA cle266"
#       Device     "VESA driver (generic)"
        Monitor    "ViewSonic PS790"
        DefaultDepth    16 
        SubSection "Display"
                Depth    24
                Modes    "1280x1024" "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth     16
                Modes     "1280x1024" "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
EndSection

Notice that I have commented out the VESA driver. You can keep the old VESA device section if you want, just comment out the line in the Screen section. You never know, you might want to use the VESA driver some day.

To use DRI you must load the dri and glx modules, so your Modules section must include the Load "dri" and Load "glx" commands. And you should include a DRI section, as shown below.

Section "Module"
        Load  "dbe"
        Load  "extmod"
        Load  "fbdevhw"
        Load  "dri"
        Load  "glx"
        Load  "record"
        Load  "freetype"
        Load  "type1"
EndSection

Section "DRI"
    Mode 0666
EndSection

The vinstall script will add some lines to /etc/rc.d/rc.local. These lines should load the agpgart, via and via_v4l_drv kernel modules when you boot your computer. But sometimes it doesn't work right. If you can use DRI in superuser (i.e. root) mode but not as user, then you have a module loading problem. You can try loading the modules manually with these commands:

bash# /sbin/modprobe agpgart agp_try_unsupported=1
bash# /sbin/modprobe via_v4l_drv
bash# /sbin/modprobe via

It might also help to add this line to your /etc/modules.conf file:

options agpgart agp_try_unsupported=1

If the binary XFree86 drivers do not work for you then you might have to use the source drivers. See the Building XFree86 from Source section for more details.

6.2. Frame Buffer

There are two frame buffer drivers that work with the EPIA boards: the VESA frame buffer and VIA's CLE266 frame buffer. In addition, the DirectFB Project supports CLE266 hardware acceleration. Remember that the frame buffer drivers are intended for use with the console. If you boot in graphical login mode then you should open an xterm, switch to superuser, and execute the telinit 3 command to shut down X and switch to console mode.

6.2.1. VESA Frame Buffer

The VESA frame buffer works well with the CLE266 graphics adapter. You can start the workstation in frame buffer mode by booting the linux kernel with the vga=mode_number option. The linux mode numbers are described in the linux kernel source at Documentation/fb/vesafb.txt and are shown in the following table. Notice that the frame buffer numbers are given in hexadecimal notation, so the 0x is important (e.g. vga=0x318). You can use the decimal equivalents, if you wish (e.g. vga=792).

Table 5. Linux Frame Buffer Mode Numbers

Color Depth640x480800x6001024x7681280x1024
8 bpp0x3010x3030x3050x307
15 bpp0x3100x3130x3160x319
16 bpp0x3110x3140x3170x31A
24 bpp0x3120x3150x3180x31B

Once the frame buffer is running on the console you can start xfree86 using the fbdev X server - but it doesn't make much sense. In most cases the xfree86 VESA server will work faster and will allow screen size changing. The fbdev server is usually slower and you may only use the screen size of the VESA console frame buffer.

The VESA frame buffer driver provides a large console (128 columns and 48 lines of text at 1024x768, more at 1280x1024). But the VESA driver has some limitations - namely, you cannot change modes and cle266 specific graphics functions are unsupported.

6.2.2. VIA CLE266 Frame Buffer

VIA has provided a CLE266 frame buffer driver in source code format. In order to compile and install the driver you must have a recent development environment (gcc >= 2.96) and the kernel headers installed. First, download the source code package from VIA Arena. Extract and unzip the package, then build and install the driver. Before inserting the viafb module you must insert the fbgen module (or you can use the modprobe viafb command). You can confirm that the viafb module is running using the fbset -i command. Then you can change the frame buffer mode using the fbset command. Here is an example of the commands used and typical output:

bash# make
cc -D__KERNEL__ -DMODULE -O2 -DDEBUG=0 -I/usr/src/linux-2.4/include \
  -include /usr/src/linux-2.4/include/linux/modversions.h   -c \
  -o via_fbobj.o via_fbobj.c
cc -D__KERNEL__ -DMODULE -O2 -DDEBUG=0 -I/usr/src/linux-2.4/include \
  -include /usr/src/linux-2.4/include/linux/modversions.h   -c -o via_i2c.o via_i2c.c
ld -r via_fbobj.o via_i2c.o -o viafb.o 
bash# make install
`viafb.o' -> `/lib/modules/2.4.18-14/kernel/drivers/video/viafb.o'
bash# modprobe viafb
viafb: VIA CLE266 framebuffer 0.8 initializing
viafb: framebuffer size = 32 Mb
viafb: mode=640  bpp=8  refresh=255  TVon=0  TVtype=1
Console: switching to colour frame buffer device 80x30
viafb: fb0: Via frame buffer device 640x480-8bpp
bash# fbset -i

mode "640x480-73"
    # D: 30.720 MHz, H: 36.923 kHz, V: 73.260 Hz
    geometry 640 480 640 480 8
    timings 32552 80 32 16 4 80 4
    rgba 6/0,6/0,6/0,0/0
endmode

Frame buffer device information:
    Name        : Via
    Address     : 0xe0000000
    Size        : 33554432
    Type        : PACKED PIXELS
    Visual      : PSEUDOCOLOR
    XPanStep    : 0
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 640
    Accelerator : No
bash# fbset "1024x768-75"
bash# fbset -depth 24

Notice that the frame buffer mode name is composed of the horizontal resolution, vertical resolution, and refresh rate. The /etc/fb.modes file contains the list of valid frame buffer modes. Of course, your monitor must have high enough bandwidth to support the mode - don't try 1280x1024-74 on a 800x600 monitor. The bandwidth You can change color depths using the fbset -depth number command, where number is 8, 16 ,24 or 32.

The viafb module has eight command-line parameters: mode, bpp, refresh, noaccel, TVon, TVtype, TVoverscan, and memsize. Here is an example of installing the driver with all parameters:

bash# modprobe viafb mode=1024x768 bpp=16 refresh=75 noaccel=0 \
  TVon=1 TVtype=1 TVoverscan=1 memsize=32

You don't need to specify all these parameters. The default mode is 640x480 and the default depth is 8 bpp. The default refresh rate is 60. The noaccel option turns 2d hardware accleration off - typically you wouldn't use this parameter. In the same way, you typically wouldn't use the memsize parameter - the driver will auto-detect the correct memory size. Be default TVout is disable, so if you want to turn on TVout you must specify TVon=1 and the TVtype (NTSC=1, PAL=2). Note that TV-out supports only a limited number of resolutions: 640x480, 720x480 (NTSC only), 720x576 (PAL only), 800x600, 848x480, and 1024x768.

mplayer can use the VIA CLE266 FB driver in console mode. Run mplayer with the -vo fbdev option. Note that the frame buffer color depth must be set to the correct value for whatever media is being displayed.

The VIA CLE266 frame buffer can be used with xfree86 - if you are careful. You must set xfree86 to the same resolution and bit depth as the frame buffer. For instance, suppose the frame buffer driver is running at 1024x768 and 16 bpp, as was done using the previous modprobe command. Then here is an appropriate configurations from /etc/XF86Config :

Section "Device"
        Identifier "frame buffer"
        Driver     "fbdev"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "frame buffer"
        Monitor    "ViewSonic PS790"
        DefaultDepth    16
        SubSection "Display"
                Depth     16
                Modes    "1024x768"
        EndSubSection
EndSection

The VIA frame buffer driver has a few advantages over the VESA driver: mainly that there are more modes and you can control the refresh rate and bit depth. Also, the VIA driver supports video capture - read the VIA documentation for more info on that feature. The VIA driver also has some drawbacks. Console scrolling is very slow in 24 and 32 bpp. Setting a viafb mode in one virtual terminal wipes out the displays in the other virtual terminals. And often the virtual terminal will lose its display if you use fbset to reduce the video resolution.

6.2.3. DirectFB

The DirectFB Project supports CLE266.

6.3. Hardware MPEG2 Decoding

Most EPIA models include the CLE266 graphics processor. These boards support Hardware MPEG2 decoding. But the first few EPIA models, for instance, the "EPIA 5000", "EPIA V", use the PLE133 graphics processor. These two models do not support hardware MPEG2 decoding.

The CLE266 graphics processor includes some specialized commands to assist in the playback of DVD mpeg2 streams. X does not use these commands. Instead, video applications such as mplayer or xine use the commands, but these applications require a shared library which converts high level language function calls to the functions provided by the hardware. VIA provides this shared library (libddmpeg.so) as a binary file for certain supported distributions. The Unichrome Project provides a similar library as source code. So if you want to use the Hardware MPEG2 Decoding feature, then you must first decide whether you will use the VIA HW-MPEG decoding library or the unichrome library.

The obvious question is, "Do I need to use hardware decoding at all?" It depends which CPU you have and what video you want to play. In general, if your CPU speed is less that 900 MHz then you will need HW-MPEG decoding to play DVDs. If your CPU is 900 MHz or faster, the it should be powerful enough to decode the DVD in software (realkiwi suggests xine -Vxv). For instance, the M9000 and M10k have been reported OK with DVDs. But boards slower than the M9000 will probably require libddmpeg.so support. For instance, the M6000 plays a DVD under mplayer without libddmpeg at 100% load, with frame skips and a large A-V differential. However using the viaexp application and the VIA libddmpeg library CPU load is only about 40% and playback is near perfect.

Of course, if the video stream is less than DVD quality you may not need libddmpeg. For instance the ME6000 can play vcd and svcd at less than 50% load. And you must also consider any other processes running on the machine. If you have a kernel compile running in the background, obviously fewer resources will be available to video decoding.

6.3.1. Fedora Core 3 Unichrome HW Decoding

jwilde posted these instructions to the via forums in Jan 2005:

So after looking around a bunch and being confused with what I was finding, I decided to write this little howto about getting HW decode in Xine working on Fedora Core FC3. This was done yesterday.

  1. Install FC3. I did a clean install with the original release.

  2. up2date everything including the kernel.

  3. Install apt

  4. Use the FC3 ATrpms.net kickstart configuration for apt

    1. wget http://ATrpms.net/RPM-GPG-KEY.atrpms
      rpm --import RPM-GPG-KEY.atrpms
    2. Install the kickstart configs by rpm -i on the i386 links (copy link locaton from the following page and paste after rpm -i): http://www.atrpms.net/dist/fc3/atrpms-kickstart/

  5. Change your /etc/apt/sources.list to use at-bleeding for atrpms. And change ayo.freshrpms.net by adding 'freshrpms' after core and update.

  6. apt-get update && dist-upgrade

    (Side note: at some point I ended up with 2 glibc/glibc-common on my system. To fix this, do rpm -qa glibc or rpm-qa glibc-common and remove the older one (rpm -e). Then reinstall glibc-common by apt-get install --reinstall glibc-common. This will fix a locale error that occurs in yum and perl.)

  7. Download and install DRI:

    bash# cvs -z3 -dserver:anonymous@dri.freedesktop.org:/cvs/dri login #(use Enter for the password)
    bash# cvs -z3 -dserver:anonymous@dri.freedesktop.org:/cvs/dri co drm
    bash# cd drm/linux-2.6; make
    bash# cp via.ko /lib/modules/2.6.8-1.724_FC3/kernel/drivers/char/drm/ (substitute kernel version as appropriate)
    bash# depmod -ae
  8. Install xorg-unichrome:

    1. Add the following to your yum.conf (or put it in it's own /etc/yum.repos.d/epia-xorg.repo file:

      [epia]
      name=RPMs for Via Epia motherboards - Fedora Core $releasever
      baseurl=http://washington.kelkoo.net/epia/FC$releasever
      gpgcheck=0
    2. bash# yum install xorg*
  9. If you like, install synaptic, apt-get install synaptic (requires at-bleeding).

  10. Install the latest xine-lib and xine-ui (version 1.00 release on Jan 4th or newer which includes all necessary stuff), using synaptic or apt-get. You may need/want to install other video/audio libs but should be easy to figure out. libdvdcss would be an obvious one.

  11. Create /etc/X11/XvMCConfig and put one line in it:

    libviaXvMC.so.1
  12. Reboot

  13. Use xine -V xxmc (should only need to do it once with the -V xxmc). You can use -verbose=9 to get a lot of debug output and verify that video_outut_xxmc is using hardware decoding. Also, your /var/log/Xorg.0.log should indicate that via XvMC was initalized and dmesg should indicate that drm was loaded (and should be listed in lsmod drm and via).

You should not need to make any chages to modprobe.conf or xorg.conf (You can add Option "EnableAGPDMA" "true" to your xorg.conf via section for improved performance). agpgart and via_agp are not in my /sbin/lsmod output so they must be built in. If you are Digital Coax output from Alsa, make sure you unmute the master mixer, PCM (and set levels appropriately), 'IEC 958 0' must be turned all the way down as well. Save the state using '/usr/sbin/alsactl -f /etc/asound.state store'. I added a 'restore' version to my /etc/rc.d/rc.local as the settings didn't seem to be getting restored properly on reboot.

I'll update this if I remember anything else, and add to it once I get around to reinstalling MythTV, mplayer-unichrome, ivtv and 3D.

The reason I did the upgrade (from RH9) in the first place was because I was using an old version of Xine that didn't like newer xvids and divxs. And I was usng Ivor's(?) original video_out_viahw proof of concept from a year ago.

Hope this helps someone out.

Jamison

6.4. MPlayer

MPlayer uses the XFree86 accelerated driver, but not the specialized mpeg decoding commands. Mplayer can play vcd files but has problems with dvds. I tested mplayer with the Star Trek II DVD on an ME6000. It ran ok for the credits, but when the movies started CPU utilization jumped to 83% and a audio/video lag started to grow. The lag grew to about 6 seconds in the first minute of the movie. mplayer works reliably with DVDs on the M10k.

Note that mplayer will run better if you run it as root and set the nice level very low. Also, if you install the frame buffer driver then you can run mplayer from a console, avoiding X overhead, i.e.

bash# insmod fbgen
bash# nice -19 mplayer -vo fbdev dvd://

You can define commonly used mplayer options in your ~/.mplayer/config file, for instance:

bash$ cat .mplayer/config
# Write your default config options here!
vo=xv
fs=1
zoom=1
framedrop=1
cache=8192 # this option yields a smoother playback!
# I include options for slang and alang, but those won't increase the
# performance much. I do almost always use subtitles.

6.5. viaexp

The CLE266 chip includes mpeg hardware acceleration to play DVDs. VIA partnered with Xine to bring these special functions into the Xine video player. However these improvements are only available in a special version of xine called viaexp. First, download the most recent version from the viaexp website. I downloaded version 0.99-1.2.1. The project files page provides a source tarball, a Red Hat source rpm and rh8 and rh9 binary rpms tarballs. This section will describe how to install from the source tarball. If you decide to use the rpm packages, read the README file includes in the tarball.

The most recent version of the rpms are available at http://www.bglug.ca/epia.

Download and extract the source tarball. Read the readme.txt file and follow the instructions carefully. It will take 30 to 60 minutes to build and install viaexp.

Make special note of the following:

Note that the viaexp application must be run as root and it only works for dvds. Especially note that you must use the NAV button to watch DVDs. The DVD button does not work.

By default xine installs to /usr/local. So the libraries are in /usr/local/lib. You must add /usr/local/lib to /etc/ld.so.conf. If they don't already exist, you must create a symbolic link from /dev/rdvd to /dev/raw/raw1

# ln -s /dev/raw/raw1 /dev/rdvd

I am a little bit annoyed that VIA included buttons that don't work on their Xine GUI. Fortunately, these buttons can be safely removed by deleting their plug-ins. Here's how to do it:

bash# cd /usr/local/lib/xine/plugins
bash# rm -f *inp_dvd.so *inp_dvd.la *inp_cda* *inp_file* *inp_vcd*

6.6. Hauppage PVR 250

This section is contributed by R.V. Paasen.

To use a PVR-250 in Linux, you you'll need to have installed the kernel 2.4.23-pre7-epia1 and the latest alpha version of ivtv:

  1. download http://ivtv.sf.net/decoder-alpha.tar.gz

  2. gunzip the ivtv package

  3. read the docs in the package about installing firmware, you need the latest from hauppage.com: pvr250_17_21226.exe. There is a perl script in the utils directory to extract the firmware from the windows drivers.

  4. go into the driver dir

  5. copy the videodev2.h from ../utils

  6. make and make install

  7. edit /etc/modules.conf and add:

    alias char-major-81 videodev
    alias char-major-81-0 via_v4l_drv
    alias char-major-81-1 via_v4l_drv
    alias char-major-81-2 via_v4l_drv
    alias char-major-81-3 ivtv
    options ivtv debug=1 mpg_buffers=90
    options tuner type=5 @@ read docs for info on tuners and tv standards@@
    options msp3400 once=1 simple=1
    add below ivtv msp3400 saa7115 tuner
    options agpgart agp_try_unsupported=1
  8. modprobe via_v4l_drv (before ivtv!), /dev/video0,1&2 are used now

  9. modprobe ivtv, /dev/video3 is used now, see also dmesg for messages

  10. go into utils dir and make (if make fails, read docs about compiling videodev2.h in user space)

  11. use utilities to setup the pvr-250 (beware, test_ioctl takes 1 argument at the time). I use:

    ./test_ioctl -d /dev/video3 -u 0xff
    ./test_ioctl -d /dev/video3 -p 4
    ./test_ioctl -d /dev/video3 -f width=720,height=576
    ./test_ioctl -d /dev/video3 -r tuner=0,freq=$1
    ./test_ioctl -d /dev/video3 -c \
    aspect=2,\
    audio=0xE9,\
    bframes=3,\
    bitrate_mode=0,\
    bitrate=9000000,\
    bitrate_peak=16000000,\
    dnr_mode=3,\
    dnr_spatial=0,\
    dnr_temporal=0,\
    dnr_type=0,\
    framerate=1,\
    framespergop=12,\
    gop_closure=1,\
    pulldown=0,\
    stream_type=10

    Warning

    The -u and -p parameters are country-specific, read the docs about it.

  12. cat /dev/video3 > my-first-record

  13. To enable timeshifting in Xine, you should compile the latest Xine version (xine-lib1_rc1 and xine-ui 0.9.22) yourself. In inputs/input_pvr.c, change the hard-coded "/dev/video0" to "/dev/video3" because via_v4l_drv takes 0,1&;2.

  14. xine -V xv --stdctl pvr:///tmp/livepause

You should now be able to play full-screen, 9-16 Mbit PAL streams at 50% CPU usage (measured on Gentoo, kernel 2.4.23-pre7-epia1, XFree 4.3.99-13, no EPIA mpeg decoding). On this machine, mplayer taker 80% CPU, xine performs much better.

Marc de Courville has some PVR250 instructions at his wiki.

6.7. MythTV

MythTV is a PVR project which supports the Hauppage cards and the EPIA hardware MPEG acceleration. I don't know much about MythTV yet, so I'll just point you to this howto written by Torsten Schenkel, which explains how to install MythTV on a debian EPIA board with PVR350 and also Marc de Courville has excellent instructions at his wiki.

6.8. Turn on DMA

To achieve maximum performance you may have to manually activate DMA for you hard drive and/or DVD drive. First you must have the VIA82CXXX IDE chipset support built into your kernel. This should be true of all recent distros, but if you built your own kernel make sure that this line:

CONFIG_BLK_DEV_VIA82CXXX=y

appears in your .config file. Next, some ide-cd drivers require the dma=1 option when they are loaded. So you might need to add this line to /etc/modules.conf:

options ide-cd dma=1  

This command passes the "dma=1" option to the ide-cd driver module when the module loads. I don't know exactly what this option does, but I know that I must use "dma=1" if I want to use DMA on my DVD drive. After editing modules.conf you must reload the ide-cd module. The easiest way to reload that module is to reboot your machine.

Now that you have reloaded the module with the dma=1 option you can activate dma. This command instructs the drive to use DMA:

bash# /sbin/hdparm -d1 /dev/dvd

This command instructs the drive to use DMA mode 2:

bash# /sbin/hdparm -d1 -X34 /dev/dvd

This command instructs the drive to use UDMA:

bash# /sbin/hdparm -d1 -X66 /dev/dvd

You can also restrict the DVD player's speed. Strangely, some DVDs players work better with movies when their speed has been reduced. You might want to experiment with this variable. For instance, to turn UDMA on and set speed to four times, I use this command:

bash# /sbin/hdparm -d1 -X66 -E4 /dev/dvd

And now the warning: the 8235 (and presumably the 8231) may lock up when more than one DMA burst is active. For instance, if you play a DVD and copy large amounts of data from the network at the same time then the EPIA board may lock up. The Hog reported this problem and I have experienced it also. Fortunately, VIA has released a patch which might fix the DMA problem.

6.9. TV Out

TV out has always worked well for me without tweaking. I just connector the TV and the board automatically detects the TV and outputs a signal. If the auto-detection doesn't work, then configure the BIOS settings. You may also need to tweak the XF86Config file. See the documents distributed from viarena.com for all the details, but these are some of the important lines which might appear in your Device section:

   Option      "ActiveDevice" "CRT,TV"
   Option      "TVType" "NTSC"
   Option      "TVOutput" "S-Video"

One EPIA user has reported a weak TV signal. You should test your board with a short S-Video cable, no more than one meter long.