Table of Contents
Knus
Date: 26th of December 2007
Project goals
- Make a computer look like a media player.
- Make its primary output be a TV monitor
- Make it usable only by remote control.
- Make it able to play anything!
TODO
- Figure out how to use cvidix (nVidia console output).
- Figure out how to use
splashy
or equals to remove text boot screen. - Look at
setterm
command (-blank 0) for disabling the blanking of the screen during playback. - Use Qingy for login (autologin)
- Parse and play on-demand tv.
- Use mplayer menu for program browsing.
- Create image viewer
- Make DVD menus work. (http://wonkabar.org/archives/405)
- Make 'save checkpoint' function (http://www.mplayerhq.hu/DOCS/HTML/en/edl.html)
Links
Kernel
I'm using the gentoo modified kernel version 2.6.23.
uvesafb
Framebuffer
First of all we must make sure we have framebuffer support. My box is running with an nVidia GF4 MX card, so I'll be using the nVidia framebuffer driver alongside the VESA one.
Device Drivers ---> Graphics support ---> <*> Support for frame buffer devices --- Frame buffer hardware drivers <*> Userspace VESA VGA graphics support [*] VESA VGA graphics support <*> nVidia Framebuffer Support [*] Enable DDC Support [*] Lots of debug output [*] Support for backlight control < > nVidia Riva support Console display driver support ---> --- VGA text console [*] Enable Scrollback Buffer in System RAM (1024) Scrollback Buffer Size (in KB) --- Video mode selection support <*> Framebuffer Console support
More info on the Framebuffer subject can be found at http://gentoo-wiki.com/HOWTO_Framebuffer_Support.
RAM disk
Furthermore I'll be using a graphical boot splash screen, so I'll need RAM disk support (initrd) for gensplash to work properly.
General setup ---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support (4096) Initramfs source file(s) (0) User ID to map to 0 (user root) (NEW) (0) Group ID to map to 0 (group root) (NEW) Device Drivers ---> [*] Block devices ---> --- Block devices <*> RAM disk support (16) Default number of RAM disks (4096) Default RAM disk size (kbytes) (1024) Default RAM disk block size (bytes)
The rest of the system will be using ALSA for the sound card (with oss simulation), and the proper CPU, IDE, etc drivers.
System
A basis Gentoo without X.
/etc/make.conf:
CFLAGS="-O2 -march=i686 -pipe" CXXFLAGS="${CFLAGS}" CHOST="i686-pc-linux-gnu" USE="-X mmx sse sse2 unicode a52 aac aalib alsa cddb -doc dv \ dvd encode ftp gif jpeg lirc live mmxext mp2 mp3 png pnm quicktime \ radio rar rtc srt tga theora v4l v4l2 vorbis win32codecs x264 xvid \ mpeg flac mp3rtp jpeg2k tiff ogg truetype fbcon ggi" MAKEOPTS="-j2" GENTOO_MIRRORS="http://mirror.uni-c.dk/pub/gentoo/" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" VIDEO_CARDS="vesa nvidia" LIRC_DEVICES="mceusb mceusb2"
====SVGALib====
svgalib-1.9.25 only works with the 2.6.22 kernel, not the 2.6.23.
A fix is in the pipeline (as of Dec. 17th 2007) but not in the ebuild yet.
<code>
emerge -va svgalib
</code>
LIRC
The
LIRC_DEVICES="mceusb mceusb2"
from the make.conf
file defines which IR receiver to use.
emerge -va lirc rc-update add lircd default irw # Run this and press the remote to test the settings.
The lirc deamon only seem to work with the 2.6.23 kernel, not the 2.6.22!
MPlayer
Compile it with fbcon, directfb and svga and ggi useflags.
Remember the fbcon useflag in DirectFB.
The ggi useflag enables vesa outputmode.
emerge -va mplayer
Connect mplayer and irc with commands like this:
begin button = VolUp prog = mplayer config = volume 1 repeat = 1 end
See lirc capable events in http://www.mplayerhq.hu/DOCS/tech/slave.txt.
Autologin
Autologin with mingetty.
emerge -va mingetty
Change the /etc/inittab
to
# TERMINALS #c1:12345:respawn:/sbin/agetty 38400 tty1 linux c1:12345:respawn:/sbin/mingetty --noclear --autologin root tty1 c2:2345:respawn:/sbin/agetty 38400 tty2 linux c3:2345:respawn:/sbin/agetty 38400 tty3 linux c4:2345:respawn:/sbin/agetty 38400 tty4 linux c5:2345:respawn:/sbin/agetty 38400 tty5 linux c6:2345:respawn:/sbin/agetty 38400 tty6 linux
irexec
To be able to use the ir when not in mplayer, use and start the irexec service (comes with the lirc package). This is a dummy host that can be use to trigger events just like any other app.
This example cathes the key One
and runs the script dr1
.
begin prog = irexec button = One repeat = 0 config = dr1 end
Speed down cdrom/dvd drive
When playing a movie or some music a high speed cdrom/dvd drive ca be pretty annoying.
A simple eject -x 4 /dev/cdrom
will try to set the speed of the drive after a mount has occurred. If no medium is present, the command will fail.