HOWTO-vesafb v0.2

Alex Buell (
Wed, 29 Jul 1998 22:02:32 -0400 (EWT)

Hi guys,

Thanks for all the input; most useful indeed. Here's the next revision of
the HOWTO-vesafb. Enjoy, and do email me privately if you want to comment
on it.

How to use the vesafb device

Version 0.2 (Last revised 29 July 1998 by Alex Buell)

Released under the terms of the GNU LGPL version 2.

Alex Buell's email address is <>

Thanks go to these people listed below who helped improve the HOWTO

Jeff Noxon <>
Francis Devereux <>
Andreas Ehliar <>
Martin McCarthy <>
Simon Kenyon <>
David Ford <>

and of course the authors of the framebuffer devices:

Geert Uytterhoeven <>
Martin Mares <?TBA?>
Anyone else, stand up and be counted. :o)


1. What is vesafb?
2. What is a framebuffer device?
3. How do I activate the vesafb drivers?
4. What VESA modes are available to me?
5. Miscellaneous/Caveats


1. What is vesafb?

Vesafb is a framebuffer driver for Intel architecture that works with
VESA 2.0 compliant graphic cards. It is closely related to the framebuffer
device drivers in the kernel.

Unfortunately, you can not use vesafb successfully with VESA 1.2 cards.
This is because these 1.2 cards do not use framebuffering. It may be that
someone will write a vesafb12 device driver for these cards, but this will
use up precious kernel memory. :o(

There is however a potential workaround to add VESA 2.0 extensions for
your legacy VESA 1.2 card. You may be able to download a TSR type program
that will run from DOS, and used in cojunction with loadlin, can help
configure the card for the appropriate graphic console modes. Note that
this will not always work, as an example some Cirrus Logic cards such as
the VLB 54xx series are mapped to a range of memory addresses (for
example, within the 15MB-16MB range) for frame buffering which preludes
these from being used successfully with systems that have more than 32MB
of memory. If you wish to experiment with this option, there are plenty of
TSR style programs available, a prime example is UNIVBE, which can be
found on the Internet.

2. What is a framebuffer device?

A framebuffer device is an abstraction for the graphic hardware. It
represents the frame buffer of some video hardware, and allows application
software to access the graphic hardware through a well-defined interface,
so that the software doesn't need to know anything about the low-level
interface stuff [Taken from Geert Uytterhoeven's framebuffer.txt in the
linux kernel sources]

3. How do I activate the vesafb drivers?

[Note: The information is based on what I know and have achieved using the
Linux kernel v2.1.111 on a P75+ with an ATI VideoExpress 2MB graphic card.
Feel free to email me with information/special cases for different graphic

Assuming you are using menuconfig, you will need to do the following

Go into the Code Maturity Level menu, and enable the prompt for
development and/or incomplete drivers [note this may change for future
kernels - when this happens, this HOWTO will be revised]

Go into the Console Drivers menu, and enable the following:

VGA Text Console
Video Selection Support
Support for frame buffer devices (experimental)
VGA Chipset support (text only)
VESA VGA Graphic console
Advanced Low Level Drivers
Select Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp and 32bpp packed
pixel drivers
VGA character/attributes support

Ensure that the Mac variable bpp packed pixel support is not enabled. [As
of 2.1.111, this seems to get enabled if Advanced Low Level Drivers is
initally selected]

Make sure these aren't going to be modules. [Not sure if it's possible to
build them as modules yet - please correct me on this]

Then rebuild the kernel, modify /etc/lilo.conf to include the VGA=ASK
parameter, and run lilo, this is required in order for you to be able to
select the modes you wish to use.

Reboot the kernel, and as a simple test, try entering 0301 at the VGA
prompt (this will give you 640x480 @ 256), and you should be able to see a
cute little Penguin logo.

Once you can see that's working well, you can explore the various VESA
modes (see below) and decide on the one that you like the best, and
hardwire that into the "VGA=x" parameter in lilo.conf. When you have
chosen the one you like the best, look up the decimal equivalent from the
tables below and use the corresponding decimal number (i.e. for 1280x1024
@ 256, you just use "VGA=775"), and re-run lilo. That's all there it is to
it. For further references, read the LoadLin/LILO HOWTOs.

4. What VESA modes are available to me?

This really depends on the type of VESA 2.0 compliant graphic card that
you have in your system, and the amount of video memory available. This is
just a matter of testing which modes work best for your graphic card.

The following table shows the mode numbers you can input at the VGA prompt
(actually these numbers are plus 0x200 to make it easier to refer to the

bpp 640x480 800x600 1024x768 1280x1024 1600x1200
256 | 0301 0303 0305 0307 031C
32k | 0310 0313 0316 0319 031D
64k | 0311 0314 0317 031A 031E
16M | 0312 0315 0318 031B 031F

For convienence, here is the same table in decimal terms

bpp 640x480 800x600 1024x768 1280x1024 1600x1200
256 | 769 771 773 775 796
32k | 784 787 790 793 797
64k | 785 788 791 794 798
16M | 786 789 792 795 799

[The author would be happy if you could supply him with additional 03xx
numbers for additional modes i.e 1152x900?]

5. Miscellaneous/Caveats

This is current only for v2.1.112 of the Linux kernel. This HOWTO will be
constantly updated as kernel development progresses. Feel free to email
the author with information/flames :o)

There have been reports that X11 is non functional on certain graphic
cards with this vesafb feature enabled, if this is happening, try the new
XF86_FBdev driver for X11, it can be downloaded from

This driver, along with vesafb can also help run X11 in higher graphic
resolutions with certain graphic chipsets which are not supported by any
of the current X11 drivers. Examples are MGA G-200 et. al.

Hopefully the X11 problems with supported graphic cards will be fixed in
future releases.

Another gotcha is that scrollback buffering does not work yet. May be
fixed in future releases.


 /\_/\  Legalise cannabis now! 
( o.o ) Grow some cannabis today!
 > ^ <  Peace, Love, Unity and Respect to all.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to Please read the FAQ at