User Tools

Site Tools


knus:knus

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)

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.

Remote control mapping

VLC for DVD menus

knus/knus.txt · Last modified: 2009/11/26 21:28 by deva