Table of Contents

ATI proprietary Linux driver for X.org

The free way

2010-04-20: Now I'm using an ATI Radeon X300 PCIE video card with X.org 7.5 on a Debian Squeeze. I'm using the free video driver provided by the package xserver-xorg-video-radeon.

As reported by the NEWS.Debian file: standard linux kernels in Debian as of version 2.6.29-1 do not contain the firmware necessary to allow the radeon driver to use 3D acceleration via DRI.

Starting the (non-free) GoogleEarth application I was noticed that OpenGL was working in software emulation only, and the kernel warns:

kernel: [12221.004285] [drm] Setting GART location based on new memory map
kernel: [12221.004818] [drm] Loading R300 Microcode
kernel: [12221.005096] platform radeon_cp.0: firmware: requesting radeon/R300_cp.bin
kernel: [12221.154273] radeon_cp: Failed to load firmware "radeon/R300_cp.bin"
kernel: [12221.154278] [drm:radeon_do_init_cp] *ERROR* Failed to load firmware!

After installing the package firmware-linux-nonfree OpenGLS runs with satisfying hardware acceleration.

Non-free

Here we use NON FREE SOFTWARE, please avoid this as possible!

Unfortunately the TV-OUT of my ATI card does not work with the free X.org driver. I tried this setup on my Debian GNU/Linux box, just to see movies on the TV.

Despite the non-free driver, TV-OUT image adjusting does not work. I tried all the relevant options: TVHPosAdj, TVVPosAdj, TVHSizeAdj, TVVSizeAdj and TVHStartAdj, but nothing noticeable happens. About 20 horizontal pixels are missing on the left edge and there is a black band of about 30 pixels at the bottom.

I experienced also several system crashes during video mode change.

I will buy soon a different video card, with free and open source driver available. ATI sucks.

References

Build the software

Those are the Debian (Etch) packages installed, some are specific for FireGL driver, others are Debian building tools:

m-a prepare
m-a update
m-a build fglrx
m-a install fglrx
depmod -a

The module-assistant commands will build and install the fglrx-kernel-<kern.ver>_<drv.ver>_i386.deb package (you will find it into the /usr/src/ directory). Remember to load the proprietary kernel module fglrx.ko.

Do not execute the aticonfig utility: it will mess your xorg.conf!. Just read its man page aticonfig(1x), the man page for fglrx(4x) and configure x.org by hand.

Configuring X.org

The X.org configuration file is /etc/X11/xorg.conf. It contains several sections, where the most important is ServerLayout. The ServerLayout section refers to other sections, which in turns refer to others. This is the schema:

The Screen section selects the Device (video adapter) and the Monitor. We select a resolution of 1024×768 which is not the optimal resolution for the VGA monitor, but it is the max resolution for the TV-OUT (otherwise we get only a viewport on the TV, with panning when the mouse moves ahead).

#-------------------------------------------------------------------------
# Screen setup for cloned VGA LCD and TV-OUT output.
#-------------------------------------------------------------------------
Section "Screen"
        Identifier      "TV-OUT Layout"
        Device          "ATI-FireGL"
        Monitor         "SyncMaster 710N"
        DefaultDepth    24
        SubSection "Display"
                Depth   24
                Modes   "1024x768"
        EndSubSection
EndSection

Then we need a suitable Device section to setup the video card options. Here we set operation on both analog VGA monitor and composite TV-OUT in clone mode: the same image is displayed on both monitors.

#-------------------------------------------------------------------------
# ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]
# ATI closed source driver for ATI Radeon and FireGL adapters.
# Need the kernel module fglrx.ko, see the fglrx(4x) man page.
#-------------------------------------------------------------------------
Section "Device"
        Identifier      "ATI-FireGL"
        Driver          "fglrx"
        #-------------------------------------------------------
        # Acceleration with OpenGL.
        Option          "OpenGLOverlay"         "on"
        Option          "VideoOverlay"          "off"
        # Acceleration with Xv (X video extension).
        #Option         "OpenGLOverlay"         "off"
        #Option         "VideoOverlay"          "on"
        #-------------------------------------------------------
        # crt{1|2}   -- Analog CRT monitor (VGA connector 1 or 2)
        # lvds       -- Laptop flat panel
        # tv         -- TV-OUT
        # tmds{1|2}  -- Desktop flat panel (DVI connector 1 or 2)
        # tmds2i     -- Desktop flat panel (Dual link DVI)
        Option          "EnableMonitor"         "crt1,tv"
        Option          "DesktopSetup"          "clone"
        #
        Option          "TVFormat"              "PAL-B"
        Option          "TVStandard"            "VIDEO"
EndSection

NOTE: you can use OpenGL (best) acceleration or Xv, remember that some software needs to know what video drivers to use. For example, start mplayer with the correct option if you want full screen resize:

mplayer -vo xv movie.avi
mplayer -vo gl2 movie.avi

Testing

Check if the proprietary acceleration is available:

$ fglrxinfo
display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: RADEON X300/X550 Series Generic
OpenGL version string: 2.0.6011 (8.28.8)

Acceleration demo:

$ fgl_glxgears

The Digital formats are available in DVI-D Single-Link and Dual-Link as well as DVI-I Single-Link and Dual-Link format connectors. These DVI cables send information using a digital information format called TMDS (transition minimized differential signaling). Single link cables use one TMDS 165Mhz transmitter, while dual links use two. The dual link DVI pins effectively double the power of transmission and provide an increase of speed and signal quality; i.e. a DVI single link 60-Hz LCD can display a resolution of 1920 x 1080, while a DVI dual link can display a resolution of 2048 x 1536.