Framebuffer HOWTO
Alex Buell, alex.buell@tahallah.clara.co.uk
v1.2, 27 Feb 2000
This document describes how to use the framebuffer devices in Linux witha variety of platforms. This also includes how to set up multi-headed displays.
1. History
2. Contributors
3. What is a framebuffer device?
4. What advantages does framebuffer devices have?
5. Using framebuffer devices on Intel platforms
* 5.1 What is vesafb?
* 5.2 How do I activate the vesafb drivers?
* 5.3 What VESA modes are available to me?
* 5.4 Got a Matrox card?
* 5.5 Got a Permedia card?
* 5.6 Got a ATI card?
* 5.7 Which graphic cards are VESA 2.0 compliant?
* 5.8 Can I make vesafb as a module?
* 5.9 How do I modify the cursor?
6. Using framebuffer devices on Atari m68k platforms
* 6.1 What modes are available on Atari m68k platforms?
* 6.2 Additional suboptions on Atari m68k platforms
* 6.3 Using the internal suboption on Atari m68k platforms
* 6.4 Using the external suboption on Atari m68k platforms
7. Using framebuffer devices on Amiga m68k platforms
* 7.1 What modes are available for Amiga m68k platforms?
* 7.2 Additional suboptions on Amiga m68k platforms
* 7.3 Supported Amiga graphic expansion boards
8. Using framebuffer devices on Macintosh m68k platforms
9. Using framebuffer devices on PowerPC platforms
10. Using framebuffer devices on Alpha platforms
* 10.1 What modes are available to me?
* 10.2 Which graphic cards can work with the frambuffer device?
11. Using framebuffer devices on SPARC platforms
* 11.1 Which graphic cards can work with the framebuffer device?
* 11.2 Configuring the framebuffer devices
12. Using framebuffer devices on MIPS platforms
13. Using framebuffer devices on ARM platforms
* 13.1 Netwinders
* 13.2 Acorn Archimedes
* 13.3 Other ARM ports (SA 7110s et. al)
14. Using multi-headed framebuffers
* 14.1 Introduction
* 14.2 Feedback
* 14.3 Contributors
* 14.4 Standard Disclaimer
* 14.5 Copyright Information
* 14.6 What hardware is supported?
* 14.7 Commercial support
* 14.8 Getting all the stuff.
* 14.9 Getting Started
* 14.10 Summary
* 14.11 Other Notes and Problems
15. Using/Changing fonts
16. Changing console modes
17. Setting up the X11 FBdev driver
18. How do I convert XFree86 mode-lines into framebuffer device timings?
19. Changing the Linux logo
20. Looking for further information?
1. History
Revision history
19990607 - Release of 1.0
19990722 - Release of 1.1
20000222 - Release of 1.2
2. Contributors
Thanks go to these people listed below who helped improve the Framebuffer HOWTO.
* Jeff Noxon jeff@planetfall.com
* Francis Devereux f.devereux@cs.ucl.ac.uk
* Andreas Ehliar ehliar@futurniture.se
* Martin McCarthy marty@ehabitat.demon.co.uk
* Simon Kenyon simon@koala.ie
* David Ford david@kalifornia.com
* Chris Black cblack@cmpteam4.unil.ch
* N Becker nbecker@fred.net
* Bob Tracy rct@gherkin.sa.wlk.com
* Marius Hjelle marius.hjelle@roman.uib.no
* James Cassidy jcassidy@misc.dyn.ml.org
* Andreas U. Trottmann andreas.trottmann@werft22.com
* Lech Szychowski lech7@lech.pse.pl
* Aaron Tiensivu tiensivu@pilot.msu.edu
* Jan-Frode Myklebust for his info on permedia cards janfrode@ii.uib.no
* Many others too numerous to add, but thanks!
Thanks go to Rick Niles frederick.a.niles@gsfc.nasa.gov who has very kindly handed over his Multi-Head Mini-HOWTO for inclusion in this HOWTO.
Thanks to these people listed below who built libc5/glibc2 versions of theXF86_FBdev X11 framebuffer driver for X11 on Intel platforms:
* Brion Vibber brion@pobox.com
* Gerd Knorr kraxel@cs.tu-berlin.de
and of course the authors of the framebuffer devices:
* Martin Schaller - original author of the framebuffer concept
* Roman Hodek Roman.Hodek@informatik.uni-erlangen.de
* Andreas Schwab schwab@issan.informatik.uni-dortmund.de
* Guenther Kelleter
* Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be
* Roman Zippel roman@sodom.obdg.de
* Pavel Machek pavel@atrey.karlin.mff.cuni.cz
* Gerd Knorr kraxel@cs.tu-berlin.de
* Miguel de Icaza miguel@nuclecu.unam.mx
* David Carter carter@compsci.bristol.ac.uk
* William Rucklidge wjr@cs.cornell.edu
* Jes Sorensen jds@kom.auc.dk
* Sigurdur Asgeirsson
* Jeffrey Kuskin jsk@mojave.stanford.edu
* Michal Rehacek michal.rehacek@st.mff.cuni.edu
* Peter Zaitcev zaitcev@lab.ipmce.su
* David S. Miller davem@dm.cobaltmicro.com
* Dave Redman djhr@tadpole.co.uk
* Jay Estabrook
* Martin Mares mj@ucw.cz
* Dan Jacobowitz dan@debian.org
* Emmanuel Marty core@ggi-project.org
* Eddie C. Dost ecd@skynet.be
* Jakub Jelinek jj@ultra.linux.cz
* Phil Blundell philb@gnu.org
* Anyone else, stand up and be counted. :o)
3. What is a framebuffer device?
A framebuffer device is an abstraction for the graphic hardware. Itrepresents the frame buffer of some video hardware, and allows applicationsoftware to access the graphic hardware through a well-defined interface,so that the software doesn't need to know anything about the low-levelinterface stuff [Taken from Geert Uytterhoeven's framebuffer.txt in thelinux kernel sources]
4. What advantages does framebuffer devices have?
Penguin logo. :o) Seriously, the major advantage of the framebuffer drivesis that it presents a generic interface across all platforms. It was thecase until late in the 2.1.x kernel development process that the Intelplatform had console drivers completely different from the other consoledrivers for other platforms. With the introduction of 2.1.109 all thishas changed for the better, and introduced more uniform handling of theconsole under the Intel platforms and also introduced true bitmappedgraphical consoles bearing the Penguin logo on Intel for the first time,and allowed code to be shared across different platforms. Note that 2.0.xkernels do not support framebuffer devices, but it is possible somedaysomeone will backport the code from the 2.1.x kernels to 2.0.x kernels.There is an exception to that rule in that the v0.9.x kernel port for m68kplatforms does have the framebuffer device support included.
With the release of the 2.2.x kernel, framebuffer device support is very solidand stable. You should use the framebuffer device if your graphic card supportsit, if you are using 2.2.x kernels. Older 2.0.x kernels does not support framebufferdevices, at least on the Intel platform.
* 0.9.x (m68k) - introduced m68k framebuffer devices. Note that m68k 0.9.xis functionally equivalent to Intel 1.0.9 (plus 1.2.x enhancements)
* 2.1.107 - introduced Intel framebuffer/new console devices andadded generic support, without scrollback buffer support.
* 2.1.113 - scrollback buffer support added to vgacon.
* 2.1.116 - scrollback buffer support added to vesafb.
* 2.2.x - includes matroxfb(Matrox) and atyfb(ATI).
There are some cool features of the framebuffer devices, in that you cangive generic options to the kernel at bootup-time, including optionsspecific to a particular framebuffer device. These are:
* video=xxx:off - disable probing for a particular framebufferdevice
* video=map:octal-number - maps the virtual consoles (VCs) toframebuffer (FB) devices
o video=map:01 will map VC0 to FB0, VC1 to FB1, VC2 to FB0, VC3to FB1..
o video=map:0132 will map VC0 to FB0, VC1 to FB1, VC2 to FB3, VC4to FB2, VC5 to FB0..
Normally framebuffer devices are probed for in the order specified in thekernel, but by specifying the video=xxx option, you can add thespecific framebuffer device you want probed before the others specified inthe kernel.
5. Using framebuffer devices on Intel platforms
5.1 What is vesafb?
Vesafb is a framebuffer driver for Intel architecture that works withVESA 2.0 compliant graphic cards. It is closely related to the framebufferdevice drivers in the kernel.
vesafb is a display driver that enables the use of graphical modes on yourIntel platform for bitmapped text consoles. It can also display a logo,which is probably the main reason why you'd want to use vesafb :o)
Unfortunately, you can not use vesafb successfully with VESA 1.2 cards.This is because these 1.2 cards do not use linear frame buffering.Linear frame buffering simply means that the system's CPU is able toaccess every bit of the display. Historically, older graphic adapterscould allow the CPU to access only 64K at a time, hence the limitations ofthe dreadful CGA/EGA graphic modes! It may be that someone will write avesafb12 device driver for these cards, but this will use up preciouskernel memory and involve a nasty hack.
There is however a potential workaround to add VESA 2.0 extensions foryour legacy VESA 1.2 card. You may be able to download a TSR type programthat will run from DOS, and used in cojunction with loadlin, can helpconfigure the card for the appropriate graphic console modes. Note thatthis will not always work, as an example some Cirrus Logic cards such asthe VLB 54xx series are mapped to a range of memory addresses (forexample, within the 15MB-16MB range) for frame bu