Your XF86Config
file is now ready to go, with the exception of
complete information on the video card. What we're going to do is
use the X server to probe for the rest of this information, and fill it
into XF86Config
.
Instead of probing for this information with the X server, the
XF86Config
values for many cards are listed in the files
modeDB.txt
, AccelCards
, and Devices
. These files
are all found in /usr/X11R6/lib/X11/doc
. In addition, there
are various README
files for certain chipsets. You should
look in these files for information on your video card, and use
that information (the clock values, chipset type, and any options)
in the XF86Config
file. If any information is missing, you
can probe for it as described here.
In these examples we will demonstrate configuration for a #9 GXE 64
video card, which uses the XF86_S3
chipset.
This card happens to be the one which the author uses, but
the discussion here applies to any video card.
The first thing to do is to determine the video chipset used on the card.
Running SuperProbe
(found in /usr/X11R6/bin
) will tell you
this information, but you need to know the chipset name as it is known to
the X server.
To do this, run the command
X -showconfig
This will give the chipset names known to your X server. (The man pages
for each X server list these as well.) For example, with the
accelerated XF86_S3
server, we obtain:
XFree86 Version 3.1 / X Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux
Configured drivers:
S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
mmio_928, s3_generic
The valid chipset names for this server are mmio_928
and
s3_generic
. The XF86_S3
man page describes these chipsets
and which videocards use them. In the case of the #9 GXE 64 video
card, mmio_928
is appropriate.
If you don't know which chipset to use, the X server can probe it for you. To do this, run the command
X -probeonly > /tmp/x.out 2>&1
if you use bash
as your shell. If you use csh
, try:
X -probeonly &> /tmp/x.out
You should run this command while the system is unloaded, that is, while no other activity is occurring on the system. This command will also probe for your video card dot clocks (as seen below), and system load can throw off this calculation.
The output from the above (in /tmp/x.out
should contain lines such
as the following:
XFree86 Version 3.1 / X Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux
Configured drivers:
S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
mmio_928, s3_generic
...
(--) S3: card type: 386/486 localbus
(--) S3: chipset: 864 rev. 0
(--) S3: chipset driver: mmio_928
Here, we see that the two valid chipsets for this server (in this case,
XF86_S3
) are mmio_928
and s3_generic
. The server
probed for and found a video card using the mmio_928
chipset.
In the Device
section of the XF86Config
file, add a Chipset
line, containing the name of the chipset as determined above. For example,
Section "Device"
# We already had Identifier here...
Identifier "#9 GXE 64"
# Add this line:
Chipset "mmio_928"
EndSection
Now we need to determine the driving clock frequencies used by the video card. A driving clock frequency, or dot clock, is simply a rate at which the video card can send pixels to the monitor. As we have seen, each monitor resolution has a dot clock associated with it. Now we need to determine which dot clocks are made available by the video card.
First you should look into the files (modeDB.txt
, and so forth)
mentioned above and see if your card's clocks are listed there.
The dot clocks will usually be a list of 8 or 16 values, all of which
are in MHz. For example, when looking at modeDB.txt
we see an
entry for the Cardinal ET4000 video board, which looks like this:
# chip ram virtual clocks default-mode flags
ET4000 1024 1024 768 25 28 38 36 40 45 32 0 "1024x768"
As we can see, the dot clocks for this card are 25, 28, 38, 36, 40, 45, 32,
and 0 MHz.
In the Devices
section of the XF86Config
file, you should
add a Clocks
line containing the list of dot clocks for your card.
For example, for the clocks above, we would add the line
Clocks 25 28 38 36 40 45 32 0
to the Devices
section of the file, after Chipset
.
Note that the order of the clocks is important! Don't resort the list
of clocks or remove duplicates.
If you cannot find the dot clocks associated with your card, the X server
can probe for these as well. Using the X -probeonly
command described
above, the output should contain lines which look like the following:
(--) S3: clocks: 25.18 28.32 38.02 36.15 40.33 45.32 32.00 00.00
We could then add a Clocks
line containing all of these values,
as printed. You can use more than one Clocks
line in XF86Config
should all of the values (sometimes there are more than 8 clock values
printed) not fit onto one line. Again, be sure to keep the list of clocks
in order as they are printed.
Be sure that there is no Clocks
line (or that it is commented out)
in the Devices
section of the file when using X -probeonly
to probe for the clocks. If there is a Clocks
line present, the
server will not probe for the clocks---it will use the values
given in XF86Config
.
Note that some accelerated video boards use a programmable clock chip.
(See the XF86_Accel
man page for details; this generally applies
to S3, AGX, and XGA-2 boards.)
This chip essentially allows the X server to tell the card which dot clocks
to use. If this is the case, then you may not find a list of dot clocks
for the card in any of the above files. Or, the list of dot clocks printed
when using X -probeonly
will only contain one or two discrete clock
values, with the rest being duplicates or zero.
For boards which use a programmable clock chip, you would use a
ClockChip
line, instead of a Clocks
line, in your
XF86Config
file. ClockChip
gives the name of the clock chip
as used by the video card; the man pages for each server describe what
these are. For example, in the file README.S3
, we see that
several S3-864 video cards use an ``ICD2061A'' clock chip, and that we
should use the line
ClockChip "icd2061a"
instead of Clocks
in the XF86Config
file. As with Clocks
,
this line should go in the Devices
section, after Chipset
.
Similarly, some accelerated cards require you to specify the RAMDAC chip
type in the XF86Config
file, using a Ramdac
line.
The XF86_Accel
man page describes this option. Usually, the X
server will correctly probe for the RAMDAC.
Some video card types require you to specify several options in the
Devices
section of XF86Config
. These options will be
described in the man page for your server, as well as in the various
files (such as README.cirrus
or README.S3
. These options
are enabled using the Option
line. For example, the #9 GXE 64
card requires two options:
Option "number_nine"
Option "dac_8_bit"
Usually, the X server will work without these options, but they are
necessary to obtain the best performance. There are too many such options
to list here, and they each depend on the particular video card being
used. If you must use one of these options, fear not---the X server
man pages and various files in /usr/X11R6/lib/X11/doc
will
tell you what they are.
So, when you're finished, you should end up with a Devices
section which looks something like this:
Section "Device"
# Device section for the #9 GXE 64 only!
Identifier "#9 GXE 64"
Chipset "mmio_928"
ClockChip "icd2061a"
Option "number_nine"
Option "dac_8_bit"
EndSection
Most video cards will require a Clocks
line, instead of
ClockChip
, as described above. The above Device
entry
is only valid for a particular video card, the #9 GXE 64. It is
given here only as an example.
There are other options that you can include in the Devices
entry. Check the X server man pages for the gritty details, but the
above should suffice for most systems.
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter