SDB:X Server Configuration with SaX2 (8.1 or Higher)
The program SaX2 enables you to configure and tune your X server, Linux graphical interface. This might be necessary when setting up a new graphics card or a monitor in your system, the image is not properly displayed, or you encounter problems when installing/configuring your system.
The following text will provide you not only with an overview of SaX2 functionality but also with instructions for the configuration of your system as well as some background information on XF86Config.
Some problems might arise if you use an old graphics card. If this is the case, you can try to change to XFree86 3.3.6., which can be done by installing SaX and the corresponding packages.
- 1 Starting the Desktop
- 2 Starting from the Boot Prompt
- 3 Preparation
- 4 Sax2 (from XFree 4.0)
- 5 Options
- 6 Manual Modelines
- 7 Start-Up
- 8 SaX2 Main Menu
- 9 Desktop
- 10 Monitor
- 11 Graphics card
- 12 Color and Resolution
- 13 3D acceleration
- 14 Geometry
- 15 Multihead
- 16 Input devices
- 17 Mouse
- 18 Keyboard
- 19 Tablet
- 20 Touchscreen
- 21 AccessX
- 22 Finalize
- 23 Known Problems and Their Solutions
Starting the Desktop
If the X server is already active, SaX2 can also be started from the graphical interface. There is a host of different window managers available for Linux, such as KDE, GNOME, and WindowMaker, and all of them differ in their start and configuration features. Therefore, this article only focuses on how to start SaX2 from KDE. For other window managers, simply start a text console and execute the SaX2 command in it.
Depending on how you start SaX2 (as what kind of user), the language will be selected accordingly. For example, the language variable for root is always English and if you start SaX2 as root, the whole SaX2 environment will be in English. If, on the other hand, you start SaX2 as a normal user, SaX2 will be displayed in the accustomed language after entering root's password. To check the value of the LANG variable, enter in a console:
This variable can be changed temporarily by executing e.g. the following command:
Proceed as follows to start SaX2 from KDE:
and enter the command
Enter your root password when requested then SaX2 starts. Starting SaX2 in such a way implies that you want to change, adapt, or optimize the existing configuration file /etc/X11/XF86Config.
Starting from the Boot Prompt
The following steps may prove very helpful in case of problems after a system reconfiguration (for example, if the monitor displays no image after adjusting the frequencies). When the system is started, the boot screen is displayed. Select the item Linux from the start menu (or the option you want to start) and, under the item boot options, append a 3 to the existing entries (the entry linux is already available). If you require additional start options, refer to the boot prompt howto to find out what options can be passed to the kernel. To start a system with LILO, enter:
With GRUB, the item boot options already includes several parameters. Simply append 3 to the existing list. For example:
root=/dev/hda3 vga=791 3
Current SUSE LINUX systems use the boot option showopts. As a result, all the boot options listed before this parameter in /etc/lilo.conf or /boot/grub/menu.lst are no longer visible. Once the boot screen is displayed, simply press 3 and then Enter to start the system.
Finally, the system starts in runlevel 3 and you can log in as root.
- Once you reach runlevel 3, you can start with the configuration.
- Determine the chipset of your graphics cards by entering the following command:
- Search the output of this command for the line beginning with VGA compatible controller:
01:00.0 VGA compatible controller: nVidia Corporation NV11 (rev a1)
- In this example, the card has a Nvidia chipset. If you want even more information, you may also use the command:
This command produces the following output:
Chip: 0 is -> Nvidia GeForce 2 MX 1:0:0 0x10de 0x0110 AGP nv
- In this way you can obtain detailed information about the graphics card. An explanation of the output details follows:
Chip: 0 = First encountered graphics chipset Nvidia GeForce 2 MX = Graphics card model. Under certain circumstances, unknown may be displayed here. If fbdev is placed in the last position, your card has been classified as not supported and the system tries to set up the framebuffer. 1:0:0 = Describes in which slot the card is inserted. This is only relevant if you plan a configuration with several graphics cards. Installation support does not cover such issues. 0x10de 0x0110 = Manufacturer and card number AGP = This is an AGP card nv = The driver module with which SaX starts if no other parameters are assigned
Sax2 (from XFree 4.0)
The configuration file /etc/X11/XF86Config for XFree 4.x.x is stored in /etc/X11/.
- To start the configuration of the graphical user interface with Sax2, execute the command
Sax2 will then be started.
Sax2 offers a number of possibilities to circumvent possible problems with various parameters. The most important options are as follows:
sax2 -p = Interprets the Bus and lists all cards recognized as graphics cards. sax2 -b = Batch mode. /usr/X11R6/lib/sax/profile/ contains a series of profiles you can use to start SaX2. To select the profile, you must enter the complete path, e.g.: sax2 -b /usr/X11R6/lib/sax/profile/kyro sax2 -r = It reads all hardware again. sax2 -l = Starts Sax2 with 640*480@60Hz. DDC probing is disabled. This option is very helpful in case your monitor shuts down as Sax2 starts or your screen is black. sax2 -m 0= = This option chain informs SaX2 which module to use at start-up for addressing the graphics card. For example: sax2 -m 0=r128 loads the module for ATI Rage-128 cards. All modules available for XFree 4.x.x are listed under /usr/X11R6/lib/modules/drivers/ apm ark ati atimisc chips cirrus_alpine cirrus cirrus_laguna cyrix dummy fbdev glide glint i128 i740 i810 imstt mga mga_hal neomagic nv powervr r128 radeon rendition s3 s3virge savage siliconmotion sis tdfx tga trident tseng vesa vga vmware sax2 -c CHIP = If your system contains several graphics cards or several graphics cards are detected, this option enables you to define the chipset to configure when you do not want to configure a dual or multihead system. For example: The output of sax2 -p is: Chip: 0 is -> ATI Rage 128 PF 01:00:0 0x1002 0x5046 AGP r128 Chip: 1 is -> ATI Rage 128 PF 01:01:0 0x1002 0x5046 AGP r128 To perform the configuration, start SaX2 as follows: sax2 -c 0 sax2 -n -t = If the mouse detection causes any problem, you can start SaX2 with certain parameters that determine the mouse device and its protocol. These are defined with the options -n (node) and -t (protocol). A sample command could be: sax2 -n /dev/usbmouse -t ps/2 sax2 --vesa = Starting from version sax2-4.7-237, SaX2 enables you to use the option --vesa to directly start SaX2 with any resolution with VESA frequencies. For example: sax2 --vesa 0:1024x768@85 The screen to be configured is defined by 0:. When combined with -a, it provides an XF86Config within a few seconds. sax2 -a = The option -a or --auto generates an automatic configuration under consideration of all hardware data automatically detected by SaX2. Following the launch of "sax2 -a", you can start the graphical user interface immediately and adjust the image with xfine or restart SaX2 to modify the existing configuration. xfine requires root permissions. You can also combine options, for example: sax2 -m 0=r128 -n /dev/psaux -t imps/2 -a
It is also possible that a driver included in your SUSE LINUX version can support certain graphics card types but cannot recognize the graphics card ID. In this case, execute the command
echo "Device->[X]->Raw->0->ChipID=0x4966" > /tmp/sax2.batch
When executing this command, do not forget to replace ChipID with your own. Then start SaX2 with
sax2 -m 0=DRIVER -b /tmp/sax2.batch
DRIVER must also be replaced with the module supporting your graphics card.
If you want to calculate and enter your modelines yourself instead of using the ones in /etc/X11/XF86Config, you can use the command xmode. Keep in mind that you can only use resolution and refresh rates permitted by your hardware (graphics card and monitor). Using the wrong values could damage your hardware. For example, to generate a resolution of 1024x768@60Hz, the command for xmode would be as follows:
xmode -x 1024 -y 768 -r 60
44 55 Modeline "1024x768" 61.19 1024 1040 1216 1400 768 768 775 802 xmode options: [ -d | --dacspeed ] ramdac speed in Mhz [ -r | --refresh ] refresh rate in Hz [ -s | --sync ] horizontal sync rate in Khz [ -x | --xdim ] X - dimension in pixels [ -y | --ydim ] Y - dimension in pixels [ -n | --nocheck ] do not check the geometry [ -f | --fbdev calculate framebuffer mode
However, you should only attempt to enter the modelines manually if nothing else works or if you need a particular modeline (for example, for fixed frequency monitors). Insert this modeline in the section "Modes" of /etc/X11/XF86Config and disable the rest of modelines as in the example below: The modeline above must be added to section "Modes": Already available modelines:
Section "Modes" Identifier "Modes" Modeline "640x480" 27.96 640 656 720 864 480 480 485 501 Modeline "800x600" 43.68 800 816 928 1072 600 600 606 626 Modeline "1024x768" 79.55 1024 1040 1216 1328 768 768 777 802 EndSection
After the modification:
Section "Modes" Identifier "Modes" # Modeline "640x480" 27.96 640 656 720 864 480 480 485 501 # Modeline "800x600" 43.68 800 816 928 1072 600 600 606 626 # Modeline "1024x768" 79.55 1024 1040 1216 1328 768 768 777 802 Modeline "1024x768" 61.19 1024 1040 1216 1400 768 768 775 802 EndSection
In terms of the configuration, it makes a difference wheter your monitor is addressed via a digital (DVI) or an analog (15pol. D-SUB) connection. In case of a DVI connection, the Linux driver from the manufacturer is required. You can start SaX2 with the command
Now SaX2 begins the hardware detection and generates a configuration suggestion. If you agree with this suggestion, you can already save the configuration at this stage. SaX2 finishes and you can use the commands
to start the graphical interface. init 5 only starts the login screen and you will have to log in again. If, on the other hand, you disagree with the suggestion, click Change configuration to proceed with the "fine tuning".
SaX2 Main Menu
SaX2 version 2-4.7 offers the following configuration possibilities:
By selecting this item, configure the following devices:
To change the configuration of your monitor, click the + sign beside Desktop then on Monitor. The switch "Change configuration" will be activated and the current monitor configuration will be displayed. If you have no time to waste, click "Desktop" then Monitor in the right main window. Now select Change configuration to change the configuration of your monitor. A preselection might have already been taken and will be displayed in the selection window. If it does not fulfill your expectations, click Properties to obtain a list of known monitors. Select a monitor model from the list. If your monitor model is not listed, you have three possibilities:
- Select one of the standard VESA monitor drivers, which should work with any resolution with 75 or 85 Hz
- Click Frequencies to enter the frequencies of your monitor. The information concerning the right horizontal and vertical frequencies of your monitor can be obtained from the monitor's manual. Make sure the entered values are correct. Otherwise, you could damage your hardware!
- Have SaX2 read a driver floppy disk for your monitor. This depends, however, on the format of the INF files on your floppy. Unfortunately, not all manufacturers adhere to the configuration files format and this may result in problems when reading the floppy disk.
The Expert tab offers the possibility to define some options to calculate the screen geometry. The default option is Check Desktop Geometry. Other possible options are Iterate Precisly, UseFrameBufferTiming, and XServerPool. You can try out these options if you encounter representation problems or tuning difficulties with the display, so it can be correctly resolved on your monitor. The option UseFrameBufferTiming is only available if the kernel's framebuffer mode is active. You can activate it in the file /boot/grub/menu.lst in the case of GRUB or /etc/lilo.conf for LILO. The parameter is vga=XXX, where XXX stands for one of the hexadecimal values from the list below:
Color depth | 640x480 800x600 1024x768 1280x1024 256 (8bit)| 769 771 773 775 32000 (15bit)| 784 787 790 793 65000 (16bit)| 785 788 791 794 16.7 Mill.(24bit)| 786 789 792 795
For additional information on how to set the kernel in framebuffer mode, refer to the articles SDB:Setting up Unsupported Graphics Cards with the Framebuffer Device (GRUB) ) The mentioned options (Iterate Precisely, UseFrameBufferTiming, or XServerPool) do not trigger any immediate display tuning. Instead, this takes place later during the X server testing. If your display is already correct, no additional tuning is necessary. The function XServerPool is used, for instance, with NVIDIA drivers because they require certain modes with determined resolutions, refresh rates, and color depths. This option results in the modelines being calculated by the X server instead of SaX2. TFT monitors are the easiest to configure. They can be usually addressed with frequencies between 60 and 75 Hz. The easiest way to obtain an optimum control is by using the option "UseFramebufferTiming". Nevertheless, the use of this option implies that the Framebuffer is active. Tip: If the TFT is not properly tuned or the image is blurred after starting the system, proceed as follows:
- Open a console (as root or as a normal user, it does not matter).
- Enter X :1
A second X server without window manager is started.
- Press the auto-adjust key on your TFT.
- Once the image is focused, use the key combination CTRL+ALT+BACSPACE to finish the X server.
As opposed to the monitor setup, here you are able to add new graphics cards and delete an existing configuration just by clicking Change configuration. All the cards detected by SaX2 during the hardware probing are usually listed here. By clicking Properties, this dialog offers the possibility to select your graphics card from a list of known types. By selecting Expert, gain access to several drivers for the various graphics cards. Select these options only if you really need to and know for sure what these options mean. The function Rotate Screen is designed for rotating TFT-LC displays. It enables you to rotate the screen 90 degrees to the right or to the left. This option completely suppresses your driver's 2D/3D hardware acceleration.
Color and Resolution
A new click on Change configuration and Properties allows you to define the color depth and resolution values. Subsequently switch between the different resolutions with the key combination CTRL+ALT+ +/-. If you require a specific resolution, it can be added to the resolutions list with the option Expert. However, this should not be necessary in usual cases, because the option Resolutions offers all the normal resolution values.
If your hardware does not support this function, you will be notified about the unfeasibility of this setup option. Users with a Kyro(2) chipset will not be able to activate the 3D support of their hardware at this stage, because this card's necessary entries in the SaX2 database are missing. The reason is that there is no driver available for this card except for the framebuffer. The only possible approach for Kyro graphics cards users is to insert the following entries in the file /etc/X11/XF86Config manually:
Load "glx" Load "dri"
Installation of the PowerVR drivers is absolutely necessary to use 3D support. For more information about PowerVR drivers, refer to SDB:Support for Graphics Cards with Kyro Chipsets More information about 3D under Linux is available in the manual of your SuSE Linux distribution.
By way of this function, adapt your screen geometry to your monitor. This is achieved when the image optimally fills all edges of the monitor screen. If you just want to perform some minor changes, it is advisable to do it directly on the monitor, which provides multiple possibilities to adjust the screen geometry. For more information, refer to your monitor's manual.
To use a dual or multihead configuration, you need at least two graphics cards and monitors. These must be configured in the above-mentioned dialogs Monitor and Graphics card. You can determine the X server operation under the option Multihead Mode. There are three types of dual or multihead operation: Traditional
A desktop is displayed on every monitor and only the mouse can be moved between the different monitors.
In this second mode, the screen is distributed and displayed on all monitors.
In the third mode, Clone, all monitors display the same screen. This makes it very suitable for presentations or trade shows.
You use the screen layout to determine the position of every monitor (from the main monitor's point of view).
The menu item Input devices allows you to configure the various input devices to use with your SuSE Linux system, for example:
Mice are usually automatically detected and mounted. However, in some cases the wheel function may not be detected and, if you want to use it, you will have to activate it manually. To do this, click Change configuration and select your mouse from a list of known models (as described above for the monitor and graphics card). Here, you can also add or delete mice from the list. This is particularly useful for laptop users, because they often require an external mouse (PS2 or USB) in addition to the touchpad.
:~ # sysp -s mouse Mouse0 => Protocol : ps/2 Mouse0 => Device : /dev/mouse Mouse0 => Buttons : -1 Mouse0 => Wheel : 0 Mouse0 => Emulate : 1
In some few cases, the output may differ from the actual mouse functionality, because the mouse from the example is a wheelmouse. The output provides you with information on the following issues:
- Interface (where /dev/mouse is a link to /dev/psaux)
- Number of buttons (-1 means that the actual number could not be detected)
- Wheel detection (0 = without wheel, 1 = wheel)
- Emulate = 3 button emulation (0=off, 1=on)
A PS/2 mouse must be configured with the hardware interface /dev/psaux and the protocols ps/2 or imps/2 (in the case of a wheelmouse). If the configuration were to be performed by SaX2, you would have to select the entry PS/2 Mouse from the menu General and the entry PS/2 on the right side. The device (/dev/psaux) must be selected under port. The option Expert offers the possibility to activate the wheel function for the mouse. Mouse events are usually controlled with mouse buttons 4 and 5. If you have a mouse with more than 5 buttons, you can set the number under this option. If you perform the configuration directly in /etc/X11/XF86Config, the options for a two-mice configuration might look like this:
Section "InputDevice" Driver "mouse" Identifier "Mouse" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "on" Option "Emulate3Timeout" "50" Option "InputFashion" "Mouse" Option "Protocol" "ps/2" Option "Vendor" "Sysp" Option "CorePointer" EndSection Section "InputDevice" Driver "mouse" Identifier "Mouse" Option "Device" "/dev/input/mice" Option "Emulate3Buttons" "on" Option "Emulate3Timeout" "50" Option "InputFashion" "Mouse" Option "Protocol" "imps/2" Option "Vendor" "Sysp" Option "ZAxisMapping" "4 5" Option "SendCoreEvents" "yes" EndSection
Note that conflicts may arise when using an external PS/2 mouse, as the touchpad also accesses /dev/psaux.
The options available for the keyboard are restricted to the keyboard itself and the country selection. You can select your keyboard from the keyboard type list and, subsequently, select the corresponding keyboard layout. Check the option Disable use of accented letters if the selected language does not require this function. You can test the selected option on the test field. The item Options contains additional possibilities to configure your keyboard. Nevertheless, we recommend you not to change anything unless you know what these functions are for.
Start this dialog to set up a graphic tablet. The current hardware selection is still quite small and Linux does not support all available models. At the moment, only the models from the manufacturers Wacom, Tevion/Aiptek, Summagraphics, and Numonics are supported. Once you have made your selections in both lists, activate additional functions according to the hardware of your graphic tablet under the option Tools. Click Finish to mount the hardware.
Xfree86 only supports touchscreens from the manufacturers Microtouch and Elo Touchsystems at present. In this case, SaX2 automatically detects the monitor but not the toucher. The toucher is considered an input device and thus configured as follows:
- Start SaX2 and change to Input Devices -> Touchscreens
- Click Add new touchscreen.
- Save the configuration by clicking Finish. It is not absolutely necessary to test the configuration.
Touchscreens include multiple options and must be usually calibrated first. So far there is no general tool under Linux for this purpose. The standard configurations of the touchscreens include adequate default values so an additional configuration is usually not necessary.
AccessX is a tool that enables you to use the mouse pointer even if the mouse has been wrongly detected or is unavailable for some other reasons. You can use your numeric keypad to control the mouse pointer. The slider under this menu item regulates the speed of the mouse pointer. The numeric keys, on the other hand, determine in what direction the mouse pointer moves. For example, 9 moves the cursor upwards to the right whereas 1 moves it downwards to the left. Click the mouse by pressing 5. You can also start SaX2 with determined parameters for the mouse (sax2 -n DEVICE -t PROTOCOL). By means of these parameters, you could, for example, manage to address your mouse.
To test the selected settings, click Finalize. Then a window will be displayed in which to test the current configuration (test), save it (save), or abort this dialog (cancel). After you save the current configuration, you are notified that the settings will apply the next time the X server starts. After that, SaX2 will finish automatically. If you encounter any problems during the X server test, you can terminate it with the key combination CTRL+ALT+BACKSPACE. You can use the arrow keys to optimally adjust the image to your monitor. Minor deviations should be adjusted with the monitor.
Known Problems and Their Solutions
Problems with the X Server During the configuration or later during the system operation, diverse problems can arise in connection with the graphical X11 system. These may range from mouse detection problems to problems starting the X server. Nevertheless, these errors are very often not easily identifiable and are only unearthed after scrutinizing the file /var/log/XFree86.0.log. In the case of writing errors where you have manually performed some changes, the X server will point you to the relevant passage in /etc/X11/XF86Config:
Parse error on line 51 of section Module in file /etc/X11/XF86Config "Loads" is not a valid keyword in this section. (EE) Problem parsing the config file (EE) Error from xf86HandleConfigFile() Fatal server error: no screens found When reporting a problem related to a server crash, send the full server output, not just the last messages. This can be found in the log file "/var/log/XFree86.0.log". Please report problems to firstname.lastname@example.org. XIO: fatal IO error 104 (Connection reset by peer) on X server ":0.0" after 0 requests (0 known processed) with 0 events remaining.
When an error message from the X server ends with an output similar to the one above, pay attention to the line above Fatal server error. This line exactly describes why the X server does not start:"Loads" is not a valid keyword in this section. In this case, you have accidentally typed in an "s" when inserting the line. The X server detects this error and even indicates its location. Use any text editor to eliminate this error in the file. This kind of error message is always displayed with (EE) in the log file (/var/log/XFree86.0.log). Therefore, search for this entry if you have problems with your X system and the X server does not start. Mouse Problems The Mouse Jumps or Seems to Execute Commands As mentioned above, in some cases mice may not work with certain protocols (ps/2 & imps/2). Possible symptoms: the mouse pointer is inactive in one of the screen corners or seems to cause commands to be executed on the desktop. Problems like these can be solved as follows: Use an editor of your choice (vi, emacs, pico) to open the file /etc/init.d/boot.local:
pico -w /etc/init.d/boot.local
and append the following at the end of the file:
/usr/sbin/sysp -s mouse > /dev/null
This initializes the mouse properly and the mouse will work with the imps/2 protocol. An alternative solution consists of changing the mouse protocol. If the mouse presents any problems when using the imps/2 protocol, change the protocol to ps/2 in /etc/X11/XF86Config. If certain features of the mouse (or the entire mouse) do not work, check whether the GPM service (mouse support for the console) has been started. To do this, execute the following command as root:
The output should be similar to:
linux:~ # rcgpm status Checking for console mouse support (gpm): unused
However, if the service is active (running), you have to stop it with rcgpm stop and restart your X server. If the problem is solved by doing this, avoid having GPM start automatically at every system start by deleting it from the init script with the command insserv -r gpm. The Mouse Pointer Is Invisible Symptom: Graphics cards are responsible for the drawing of the mouse pointer. In some cases, it might occur that the mouse pointer is not represented. Solution: This problem can be solved by editing the Section "Device" in the file /etc/X11/XF86Config as follows:
Section "Device" BoardName "AutoDetected" Driver "r128" Identifier "Device" VendorName "AutoDetected" EndSection
Insert the lines as follows:
Section "Device" BoardName "AutoDetected" Driver "r128" Identifier "Device" VendorName "AutoDetected" Option "SWcursor" EndSection
In this way, the drawing of the mouse pointer will be passed to the X server and the mouse will be represented as usual. The Mouse Pointer Moves Jerkily, Speed Irregular Symptom: The mouse pointer shows a jerky motion or can only be moved at a certain speed on the screen. Solution: Every mouse has a determined resolution (dpi) that can be set in /etc/X11/XF86Config. This entry's syntax is the following:
Option "Resolution" "value"
Option "Resolution" "400"
The Section "Input Device" corresponding to the mouse in your /etc/X11/XF86Config file looks like this when adding this entry:
Section "Device" BoardName "AutoDetected" Driver "r128" Identifier "Device" VendorName "AutoDetected" Option "Resolution" "400" EndSection
Refer to the technical information that is (or should be) available for your mouse to find its particular resolution value. This option does not work for USB mice at present. The Mouse No Longer Works After the Installation (Occasionally) The cause can be traced back to the ACPI support of the kernels 2.4.19. For additional information, refer to: SDB:Kernel Parameters for ACPI/APIC Monitor and Display Problems Problem:The monitor remains black after the SaX2 start. Solution: Too high frequencies have been assigned to the monitor so it switches to the stand-by mode. Start SaX2 with
In this way, SaX2 starts in a 640x480 mode with disabled DDC Probing (automatic monitor detection) and a 60Hz refresh rate. Problem:Your display cannot be adjusted to the screen and it shows black borders. The attempt to adjust it with the monitor fails due to the border size. Solution:Use the option "Iterate Precisely" to configure the X servers. You can find more information about this option on this page under the monitor section. Alternatively, you can also use the option UseFrameBufferTiming.