Luc Verhaegen | 16 Mar 18:17 2007

linuxbios + xf86-video-unichrome: no VGA BIOS needed.

Yes, you read that correctly.

You can run X on your CLE266 based EPIA without having to depend on any
non-free software whatsoever.

No non-free drivers. No non-free BIOS. And now no VGA BIOS :)

If you have an EPIA-M, then things are very easy. Well, relatively easy.
Well easier than trying to include a VGA ROM in linuxbios anyway :)

X bit:

My X driver has been able to run as a non-Primary VGA device for years.
All it needed was to become (bios-initialised) scratch register
independant, which is something i did late last year, early this year.
There was a single, highly trivial bug in the way, and it was something
i broke late last year, but now it's just fine.

So just get my driver from git:
git-clone git://

* Build it; there's a README in there for manual builds (it's backwards
compatible all the way to debian sarge's xfree86-4.3.0), or if you're
on debian or ubuntu (with a modular X) then you can just
dpkg-buildpackage it.
* Install it.
* Test it.

* You do want to test X and verify that it's the latest version. The
log echoes the git SHA-ID. grep for "SHA-ID" and match it with your
git tree.
* You do want X to start automatically, or you will have to have some
other means of logging in (serial, network).
* Don't depend on X as your only way in. The driver was written only
with "bail out cleanly if something fails" in mind. If it fails, it
will restore the console cleanly. But the snag there is that we didn't
have a console to begin with (but hang on, i'll get you one ASAP). :)
* The driver will complain when trying to parse the scratch registers.
But all the necessary ones are handled properly now, and the rest are
configurable. So the driver is just whining, nothing more.

BIOS bit (for original 256kB rom):

Linuxbios already had all the bits necessary to get this working.
There's no more voodoo involved anywhere.

* Just use whatever payload you require (normal use will probably be
filo), but make sure that this is solid.
* Just buildtarget via/epia-m with the standard config, which should
only be adjusted for your payload.
* flash your rom with the created linuxbios.rom, but do store the old
image first, as that takes only a few seconds.

Do not bother with any of the VGA things, as, for X only, they are not
necessary, and most of the documentation out there is outdated anyway :)

* you do want serial (test this before rebooting), as you don't get a
VGA console. If you, for instance, want to touch what filo is booting
for you, then you do need serial.
* you probably do want to be able to ssh in, this means that you 
pretty much need to get to the end of the booting process already.

I have deliberately kept the above guide short. Read through the
documentation of what you're doing, this will help ensure that you don't
get an unbootable machine. But this is not rocket science, there is no 
voodoo involved.

If you're careful, and spend a bit of time and thought on setting up
the payload and linuxbios, then the chance of bricking your EPIA-M is
small. But if you do brick it, you will have to find a way to flash your
rom from another board (hotswapping) or with a prommer. Nothing lethal,
but a rather major inconvenience if you're not prepared for it.

For absolute peace of mind, you might just want to get a PLCC extractor 
(~5-10EUR) and a 5V PLCC rom (~5EUR) and keep the original rom as is. If 
you then bugger up, you can just insert the old rom again, edit your
BIOS config (CMOS got incompatible changes now), and it'll boot up just


Now, if both bits have been done, do some ritual of your own choosing 
and reboot.

You do want to powercycle to get rid of the original VGA BIOS that's
still loaded at 0x000C0000, which doesn't get run at all but just sits
there. Also, if you don't powercycle, console will also just keep on 
existing as if nothing happened, as no registers from the unichrome will 
get touched in a significant way.

After a short while, X should come up as if nothing's changed :)

And that's it. You've rid yourself of all non-free software. Now you get
to trump pretty much everybody who claims to be all free software :)

There is of course no warranty that all of this will not brick your
motherboard. If it does, then i'm sorry, but then you've probably done
something wrong, as it's all pretty happy here. But it's nothing lethal 
anyway, just inconvenient :)

The only time i did brick it here is when i did try to run a VGA BIOS
(at a wrong, hardcoded offset), so don't worry too much, just be very
careful :)

Oh well, true free software geekdom is only for the brave.

Luc Verhaegen.


linuxbios mailing list
linuxbios <at>