This document, (which cannot be compared with any other "offical Linux HOWTO") is meant to help folks who are disillusioned by HOWTO's and other rather vague documents. Of course i mean to offend no one by that statement, if that is the case please accept my humble appol's. What is a DXR3 MPEG Decoder card, well if you dont know then this document is not going to help you in the slightest fashion please leave now. A full explanation of what the card is, can be found at the following URL
This document refers to the Creative Labs DXR3, details of the card can be found at the following URL.
I always use /usr/local/src for unarchiving tar archives, you can of course use what you want. I also have my Linux Kernel sources in /usr/src/linux, it is of great importance with some tar archives as to where you have the kernel sources placed.
Now lets say you have retrieved all archives needed and you placed them in /home/ftp/pub/dvd/ All commands used are shown inside of a pair of ' marks, thus showing at a glance what command i used, you ignore the ' when executing the command yourself of course. Follow the commands below. Login as root or use 'su -' to gain root priv's. 'cd /usr/local/src' 'tar xvzf /home/ftp/pub/dvd/em8300-0.12.0.tar.gz' 'cd em8300' RTFM (means Read The Flipping Manual's) ie; 'less INSTALL' 'less README' './configure' 'make' 'make install' Most people now think thats it, i did it, HOWEVER those who think that did NOT RTFM, you need now to compile the modules in ./em8300/modules 'cd modules' 'make' 'make install' Now you also need to make sure that the "device files" are created correctly. There is a small script included to create them, you can manually run the script or type; 'make devices' Afterwards 'ls -al' /dev/em* should show lrwxrwxrwx 1 root root 13 Sep 6 15:34 /dev/em8300 -> /dev/em8300-0 crw-rw-rw- 1 root root 121, 0 Jul 14 12:25 /dev/em8300-0 lrwxrwxrwx 1 root root 16 Sep 6 15:34 /dev/em8300_ma -> /dev/em8300_ma-0 crw-rw-rw- 1 root root 121, 2 Jul 14 12:25 /dev/em8300_ma-0 lrwxrwxrwx 1 root root 16 Sep 6 15:34 /dev/em8300_mv -> /dev/em8300_mv-0 crw-rw-rw- 1 root root 121, 1 Jul 14 12:25 /dev/em8300_mv-0 lrwxrwxrwx 1 root root 16 Sep 6 15:34 /dev/em8300_sp -> /dev/em8300_sp-0 crw-rw-rw- 1 root root 121, 3 Jul 14 12:25 /dev/em8300_sp-0 A small note here about the permissions of devices, in general you will use your DVD under your user account, one needs to change permissions of the files because root, is the only one allowed to use them by default, i prefer to use; 'chown pa3gcu /dev/em*' You can use 'chmod' as well, to be honest the real and proper way is to do it via /etc/group but i will not go into that, its up to you how you do it. Now we have compiled the whole archive and compiled the modules, created the devices, changed permissions of the devices, but we are not there yet. When you obtained your DXR3 card you received a CDrom with it and a very large book in many languages, now the book shows howto install the card in your computer and connect it, there are different ways to connect it, read the book carefully. On the CDrom there is a file called "ENC2DEV.VXD" to be found in /Drivers/WIN9X copy this file to /usr/local/src/em8300/scripts 'cd ../scripts' './microcode_extract.pl ENC2DEV.VXD .' You will now have 2 more files called, microcode0.bin microcode1.bin You need one or the other, i needed microcode1.bin to get best results. That does not mean your system needs microcode1.bin try them both and see what happens. You now have everything in place to use you card.
Now i am presuming your DVDrom is recognised by the linux kernel and is in working order, you have placed a DVD in the device and now want to play it. I created a small script too load the driver, microcode and to autocalibrate it, it uses the provided modules scripts in ./em8300/modules and ./em8300/scripts, they are; modules/ldm script for loding the modules. modules/rmm script for unloading them scripts/microcode_upload.pl /usr/local/bin/autocal (installed from em8300 'make install') You can review the scripts at the bottom of this document, just remember that the path's in them are different to what is mentioned here. So review them carefully if you intend to use them. The direct commands are; '/usr/local/src/em8300/modules/ldm' '/bin/echo "1024" > /proc/sys/dev/rtc/max-user-freq' '/usr/local/src/em8300/scripts/microcode_upload.pl /usr/local/src/em8300/scripts/microcode0.bin' '/usr/local/bin/autocal' You now have a configured and hopefully working dxr3 card. In a nutshell the following command will play your dvd with output to the TV screen. 'mplayer -alang en -ao oss:/dev/em8300_ma-0 -vo dxr3 -vc mpegpes -dvd 1' Output to monitor; 'xvattr -a XV_DOUBLE_BUFFER -v 0' 'ogle -u cli /dev/dvd'
My card gave best results when the modules were loaded with default values, see ./em8300/modules/README-modoptions about loading the modules with different values. There is also another source of information about what to do if you get funny colors when loading the modules, it is to be found at;
THATS IT, now i think you will understand why folks have so much trouble getting this critter to work under linux. As a matter of fact mine refuses to work under Windows XP, not that it worries me of course ;-)
The scripts. This one i call rc.dvd and its is placed into /etc/rc.d If you decide to use it then create /etc/rc.d/dxr3 and copy the microcodeX.bin files to it. It needs to be run under root priv's. #!/bin/sh DVDDIR="/usr/local/src/em8300/modules" LSMOD="`/sbin/lsmod | grep -w '^em8300' | wc -l`" case "$1" in start) # Load driver if it hasn't been loaded already: if [ $LSMOD -eq 0 ] ; then (cd $DVDDIR; ./ldm) /bin/echo "1024" > /proc/sys/dev/rtc/max-user-freq /usr/local/share/em8300/microcode_upload.pl /etc/rc.d/dxr3/microcode1.bin /usr/local/bin/autocal fi ;; stop) if [ $LSMOD -eq 1 ] ; then (cd $DVDDIR; ./rmm) fi ;; *) /bin/echo "USAGE| ./rc.dvd start | stop..." esac # EOF This one starts playing the dvd and can be placed anywhere, i have it in my home dir. It does not need root priv's. #!/bin/sh LSMOD="`/sbin/lsmod | grep -w '^em8300' | wc -l`" if [ $LSMOD -eq 0 ] ; then /bin/echo "You need to get root to run /etc/rc.d/rc.dvd start first..." exit fi case "$1" in ogle) xvattr -a XV_DOUBLE_BUFFER -v 0 ogle -u cli /dev/dvd ;; mplayer) # mplayer -forceidx -mc 10/10 -alang en -ao oss:/dev/em8300_ma-0 -vo dxr3 -vc mpegpes -dvd 1 # mplayer -alang en -mc 5/10 -ao oss:/dev/em8300_ma-0 -vo dxr3 -vc mpegpes -dvd 1 mplayer -alang en -mc 5/10 -ao oss:/dev/em8300_ma-0 -vo mpegpes -vc mpegpes -dvd 1 ;; *) /bin/echo "USAGE: startdvd ogle | mplayer" esac # EOF If you find spelling mistakes or you think i missed some or another important thing/command out, please write and tell me, there is a mail link in my index page, click below on home to go there.