Brion Vibber's
Frame Buffer Stuff


The Framebuffer

As you may be aware, recent Linux development kernels (2.1.x series) have included graphical framebuffer support for Intel x86-compatible machines that have VESA 2.0-compatible video cards. This can be used to create very very large text-mode consoles (144 columns by 54 rows at 1152x864!) and can be used in conjunction with the XF68_FBDev X server to provide (non-accelerated) X support for some video cards that do not yet have X servers of their own available. (Or for amusement or for the fun of fast switching between X and text VCs.)

If you want to know a little more detail about all this, take a look at the framebuffer HOWTO.

X Maniac

The XF68_FBDev framebuffer X server is part of XFree86 but isn't included in the standard binary distributions of XFree86 for x86 because until recently it wasn't usable on that platform. While it's possible to download the 8 megabytes of compressed sources and compile your own copy, it's slow to download, confusing to configure the sources, and very slow to compile (and takes roughly 80 MB of disk space to compile in!). So, for the convenience of my fellow Linuxers I am putting my own binary up for download. But first a...

Disclaimer

If this doesn't work for you it's not my fault! I made it for my system and have not tested it elsewhere. Your mileage may vary. If it causes any damage to your system or data it's not my fault. I didn't write this thing, I just compiled it! If you have troubles, compile your own - get the sources from ftp.xfree86.org; you want the file X332servonly.tgz.

NOTE NOTE NOTE: Current XFree86 distributions do include the XF86_FBdev server. If you have an old XFree86, I recommend you upgrade it rather than use this buggy server!

System Requirements

This was compiled from the XFree86 3.3.2 sources, so you'll probably need that version of XFree86 on your system to use it. Kernel 2.1.113 was used also but any version with VESA framebuffer support enabled and in use should do. And last of all this is for glibc2 systems only, compiled on my Red Hat 5.1 box. It should work on other glibc2-based distributions (such as Debian 2.0) or another distro upgraded to glibc2, but will not work on a libc5 system. If you need a libc5 version you'll need to compile your own or find another binary.

Testing

While it theoretically should work on any working framebuffer, I have only tested it at 1152x864 in 8-bit color on my Canopus Total3d 128V. It seems to work right and seems to interact well with the other VCs and with the accelerated XF86_SVGA server (except that the accelerated server leaves its mouse cursor on the screen on the other VCs too!). Running multiple servers seems to work. (If it seems that I use the word "seems" too much, it's because 2 minutes of testing isn't exactly exhaustive and I could have missed some glitches...)

I should also mention that the server (and also the fbset program, available from some ftp site somewhere) uses a constant called FB_VISUAL_STATIC_DIRECTCOLOR which is not #defined in the 2.1.113 fb.h. I #defined it to be 6, after FB_VISUAL_STATIC_PSEUDOCOLOR (defined as 5). If this is wrong it could theoretically screw some displays up, but I don't know under what circumstances.

If you get this binary of XF68_FBDev to work on other cards and/or at other resolutions and bit depths, please let me know!

Download

XF68_FBDev.bz2 (795,829 bytes, compressed with bzip2 from 2,173,828 bytes)

Using the thing

For Red Hat 5.1 with XFree86 3.3.2 already installed, the installation and use of this is pretty easy:

  1. Download XF68_FBDev.bz2 into /usr/X11R6/bin
  2. Decompress it like so:
    bzip2 -d XF68_FBDev.bz2
  3. Make sure ownership and permissions are right:
    chown 0:0 XF68_FBDev
    chmod 755 XF68_FBDev
  4. Set the X server link, but backup the old one:
    cd /etc/X11
    mv X X.old
    ln -s ../../usr/X11R6/bin/XF68_FBDev X
  5. Edit your XF86Config and copy a Screen section from another device, changing the Device line to fbdev like this:
    Section "Screen"
        Driver      "fbdev"
        ...
  6. Now, run startx, possibly with a bit depth option to force it to match the bit depth the frame buffer is at:
    startx -- -bpp 8

If you're trying to install this as the only X server on a previously Xless system, try running xf86config; select your card and monitor and such, but specify the XF68_FBDev server when asked which server to use. This ought to work...


Back to my Linux stuff.
Back to my home page.
Send me e-mail.


Linux NOW! The Linux Documentation Project Homepage Graphics by Gimp