The primary function of the eBox is to play DVDs and movies encoded in the DivX MPEG-4 format.
For the eBox's graphics card I chose an Asus V7100 Magic TV, based on the nVidia GeForce 2 MX200 graphics chip. I'm not yet fully convinced it's the best card for the job, but it does have one feature I have found very useful (at least for testing) - TV out with TwinView. This means that graphics can be displayed on the monitor and the TV at the same time, and without forcing the monitor down to the same refresh rate as the TV. It was pretty much pure chance that I got a card that had it since I wasn't aware that such a feature existed on nVidia cards (I have never owned an nVidia graphics card newer than a TNT - my other machines have ATI cards of one sort or another). Of course, since the eBox is intended to go in a lounge, it won't be connected to a monitor 90% of the time, and fortunately it seems to work just fine without a monitor connected.
The Creative Dxr3 is a hardware MPEG/MPEG-2 PCI decoder card, used to enable slower PCs to play DVDs. It also has some nice features that make it attractive for newer machines, apart from reducing the CPU load, including a Dolby Digital 5.1 surround output, an additional analogue audio output, and fairly high quality Composite/S-Video TV outputs. I had this lying around unused, so I decided to put it into the eBox in the event that I had any trouble with DVD performance, which turned out to be the case (at least initially, anyway). It appears that its TV out is slightly better than the video out on my GeForce2 as well - both in quality and because it fills the entire screen instead of having big black borders around the image (this can be fixed on nVidia cards with the nvtv application, see below). NOTE: I am no longer using the Dxr3, but this information remains here in case it is useful.
Currently I have a CyberDrive DM-168D DVD-ROM drive in the eBox, which is of the tray-loading rather than slot-loading type. This is the fourth DVD drive I've had, and is a little less noisy than others I've used. The third was a Pioneer DVD-117 DVD-ROM, and was pretty noisy but otherwise fine. The second drive was an AOpen DVD-1648 which I couldn't possibly recommend (the first one I got had to be replaced due to it refusing to even spin up some DVDs; the second still fails to read at certain points in quite a few of my DVDs, and it's also really noisy). The first drive was another Pioneer drive, a DVD-103S, but it seems to be failing now (slow reading, probably due to frequent retries).
It's interesting to note that Linux players (those that use libdvdcss at any rate, that is to say almost all of them) seem to care not one iota about what region your drive is set to, or whether it's RPC-1 or RPC-2. So far I haven't had to flash either of my RPC-2 drives and I can play any region disc with Xine or Mplayer. This is the way it should be, of course.
See the Music page. Note that I have discovered that onboard sound (at least of the Via variety) causes serious problems for playing DVDs, so don't skip buying a real sound card. You'll get better sound quality as well as (possibly) better performance.
The nVidia Linux drivers are closed-source, which unfortunately means that the community doesn't get to work on them. In terms of the end user this doesn't make too much of a difference, apart from the fact that development is slower than it could be, and compatibility issues do occasionally arise. The drivers and full instructions are available on nVidia's site here. If you have trouble, try searching through the posts (or posting a question yourself) on the NVnews.net Linux discussion forum.
Setting up XFree86 with TwinView can be a bit tricky, but I found the instructions and files on Primer's app page useful. You should have XFree86 4.1 or later installed. On the eBox, X starts on boot, but not in the normal fashion (where you get a login box). Instead, I made a script which contains the following:
#!/bin/sh startx ~/.xinitrc-tv -- -layout TV &> /tmp/xfreetv.log &
This script is run from the
/etc/rc.d/rc.local script, so it is run on boot-up. The .xinitrc-tv file is a modified version of .xinitrc available in my files section, which starts eboxy. From the menu system displayed by eboxy, I can then run various other useful applications that require X such as Xine, XawTV and XMMS.
Things to watch out for when setting up nVidia video cards:
alias char-major-10-175 agpgart options agpgart agp_try_unsupported=1
nvtv -mto the end of your
xinitrcscript will re-enable the monitor when X quits (otherwise it just stays black, which is not very useful if you want to use the console afterwards).
NOTE: I am no longer using the Dxr3, but this information remains here in case it is useful. It may be outdated.
Setting up the Dxr3 was very easy. All I had to do was download the source tarball from dxr3.sourceforge.net, unpack, cd into the
modules directory (you do not need to run make in the main em8300-xx directory), run
make install devices , and then set up the system so that the modules get loaded
on booting. To do this, I added the following lines to
/etc/rc.d/rc.local: (# comments optional)
# Load drivers and initialise DXR3 ldm em8300init # Display nice logo on the DXR3 decoder output :) cat /usr/local/share/mplayer/dvdlogoscreen.m1v > /dev/em8300_mv &
ldm is a script provided with the dxr3 driver package that loads the kernel modules for the card (em8300, bt865, and adv717x). Copy it and the rmm script from the modules subdirectory of the em8300 source to somewhere suitable, eg. /usr/local/bin. You will need to tweak it a bit: remove the
.o from the end of each insmod line, and add the option
use_bt865=1 to the end of the
insmod em8300 line. You will have to move this script into a suitable location, eg.
em8300init initialises the card. The last line is not necessary - it's a touch of my own. What I'm doing here is reading a single-frame MPEG of the DVD logo into the
Dxr3's video output character device, which causes it to be played on the Dxr3's TV out (note that this trick only works for MPEG files without sound). After a few seconds the MPEG finishes but the image stays on screen.
Note: the Dxr3 driver page talks about installing libdxr3, but so far I haven't needed it at all. It seems that there are a lot of old instructions on that page, so just follow what's here first and you should be OK. Of course I haven't tried setting up the VGA overlay, but as far as I've concerned that's not necessary because the eBox is meant to be used with a TV.
This is just a standard IDE device, so no special drivers are required (well, none that require your attention anyway). However, you may get increased read performance by running the following command (Note: please read the relevant parts of the
hdparm manual page (
man hdparm) before doing this, since a few odd hardware
combinations don't like these options):
hdparm -u1 -d1 -a8 dvddevice
dvddevice is the block device for your DVD drive (if it's on the secondary IDE channel, it's usually
/dev/hdc, and on a lot of systems
it gets automatically linked via
/dev/dvd). This turns on the unmask IRQ flag (-u1), fast DMA transfers (-d1), and filesystem readahead (-a8).
Most people find that this increases performance significantly. NOTE: Depending on your distribution, there may be an easier way to enable DMA on your DVD drive - see the documentation for your distribution).
If you have trouble with DMA turning itself off, and you are getting "DriveReady SeekComplete error" multiple times in your
dmesg output, then it's possible that your drive, your IDE controller, or the drive's IDE cable (most likely) is faulty. Try using a different IDE cable and see if this fixes it - it did for me.
Xine is probably the most polished movie player available for Linux at the moment. It performs well, has excellent support for DVD menus, a fully-customisable skinned GUI, good Dxr3 support, and control via LIRC. Xine also supports playing other video formats, and current versions do this very well (QuickTime support now works, so you can play all your favourite movie trailers). If you want a good video player for your Linux desktop machine and/or you want to play DVDs, this is the player to use.
MPlayer, when finally configured and installed, is quite a good video player. It plays just about every video format and codec under the sun (including QuickTime and Real!), and supports a multitude of video output methods and devices. MPlayer's GUI is only partially functional, but I haven't found this to be a big problem on the eBox. However, DVD menu support is experimental (in fact nonexistent, unless you enable it) at this time, which is more of an issue for me.
On the eBox, I have used MPlayer for playing non-DVD movies, such as DivX, Windows Media and other formats, since it handles these well, but now that xine's support for other formats has improved this may come to an end. MPlayer supports LIRC for remote control.
VideoLAN is a very promising project that not only attempts to provide a standalone player, but also a server that allows you to stream video over a network. I haven't tried recent versions of the VideoLAN client (vlc) but I understand it now has DVD menu support and has improved a lot over the past year.
I have not tried Ogle at all, but some people swear by it as a DVD player application. The code used to play DVDs in xine originated with the Ogle project (Ogle was the first to support DVD menus), though it has been improved since then.