VIA EPIA Console Framebuffer Toolkit

This sourceforge project comprises a bunch of useful console stuff for VIA's EPIA mini-ITX motherboard.


The VIA EPIA is a mini-ITX form factor motherboard. It uses the Apollo PLE133 chipset, which includes the VT8601A Northbridge chip. This chip has an embedded Trident CyberBladei1 graphics controller.


I'm using a VIA EPIA board as an in-car computer. The idea is for it to play mp3s, DVDs, and maybe do satnav and some other stuff. Whilst the VIA has excellent XFree86 support, I'm really rather keen on minimising the delay between climbing into my car and listening to my sweet MP3s, and sadly X is not a part of that picture.

Consequently I'm left with the console. The VESA framebuffer lacks hardware acceleration. The tridentfb isn't (yet) suitable for the EPIA. Hence the need to come up with something new.

What's here?

Currently, I envisage this project containing three separate components:


First versions of the framebuffer driver and tvout utility are ready to go. I'm about to start on the DirectFB driver.


Download the source release here.

Here's the README from this archive:

epiafb 0.1 : VIA EPIA console framebuffer driver

(c) 2002 Ant Skelton

This is a preliminary release of a console framebuffer driver 
for VIA's EPIA mini-ITX motherboard. This board uses the 
Apollo PLE133 chipset, including the VT8601A Northbridge chip
which has an embedded Trident CyberBladei1 core.

This driver was originally realised as a set of modifications
to Jani Monoses' tridentfb driver. However, tridentfb is a
very generic driver principally aimed at the LCD crowd, and 
in the interests of getting the EPIA stuff up and running as 
quickly as possible, I decided to release this separate driver.
It is not inconceivable however that a tridentfb driver will
shortly emerge with at least some of the support for the EPIA.

Building epiafb as a module

Make sure you have the kernel sources in /usr/src/linux.
Change to the epiafb directory and type 'make'. The result will
be an object file called 'epiafb.o'.

Using the epiafb module

First, you need the 'fbgen' generic framebuffer module. If it
isn't already loaded, type 'insmod fbgen'.
Then, in the epiafb directory, type 'insmod epiafb.o'.

Module options

epiafb takes a number of options which can be used on the
insmod command line, e.g "insmod epiafb.o accel=0 pci_retry=1"

mode: specify a start up mode. Not currently supported.

bpp: specify a start up bpp. Not currently supported.

accel: disable acceleration with "accel=0"

memsize: manually specify VGA memory size (in Kb) - 
         normally this is autodetected.
		 e.g. "memsize=8192"

memdiff: am adjustment (in Kb) to use if your VGA reports more
         memory than it actually has.
         e.g. "memdiff=1024"

pci_retry: enable PCI retries with "pci_retry=1". 
           May improve performance with some soundcards. 
           (Disabled by default)

pci_burst: disable PCI bursting with "pci_burst=0".
		   (Enabled by default)

hsync_fix: Perform overscan timing corrections for 'broken'
           VGA adaptors - called "KGAs" in XFree86. This is
		   enabled by default, disable with "hsync_fix=0".

vsync_fix: See hsync_fix. Similar sort of thing for the
           vertical timings.

Building epiafb as part of the kernel

Coming soon!

TV out support

EPIA motherboards have a VT1621 TV encoder on them. Currently
you can download my command line utility "tvout" to enable
TV display. I aim to fold this code into this driver soon.

AJS 23/10/2002


Download the source release here.

Here's the README from this archive:

VIA EPIA TV-out utility

(c) 2002 Ant Skelton

This command line utility can be used to control the TV output
on VIA EPIA motherboards, which ahve the VT1621 encoder chip.
It will also control other boards with the Chrontel CH7005C.

In order to use this utility, you need the 'epiafb' framebuffer
driver. It may work with the 'tridentfb' driver provided you
have a version of tridentfb later than '0.72-fs2', and that
Jani has incorporated my changes ;)

tvout will read your framebuffer's current resolution and
colourdepth, and attempt to enable that for TV out. If it can't,
it will complain. In this case you may need to change mode with
'fbset' to a more suitable resolution. Use 'tvout -m' for hints
on good modes.

Note that not all resolutions are supported - currently this
utility supports 640x480 and 800x600 at various colour depths.

tvout takes a number of options:

-s    : save all VGA params to  before overwriting
              them. This is so that they may be later restored
			  with the -r option.

-r    : restore VGA settings from a file stored previously
              with -s option.

-f     : specify an alternate framebuffer device. The default
              is '/dev/fb0'

-c  : specify a chipset, can be 'vt1621' or 'ch7005c'.
               Default is 'vt1621'.

-b  : specify a broadcast format, can be 'pal' or 'ntsc'.
              Default is 'pal'.

-m          : display a list of modes which this util supports

-v          : be verbose

-h          : print help summary

Since I don't have access to the vt1621 datasheet, there is currently
no clean way to disable TV output. The best way is to use the -s
option to save your settings before the TV out is enabled, and then
to use -r later to restore them, thereby disabling TV output.

Building TV out

Ensure you have kernel sources in /usr/src/linux.
Change to the tvout directory and type 'make'.

AJS 23/10/2003

Links project page for epiafb

epiafb forums at

epiafb mailing lists at

SourceForge Logo