Search:  
Gentoo Wiki

Acer_Ferrari_4005WLMi

This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

Contents

Gentoo on an Acer Ferrari 4005WLMi notebook

The Ferrari 4000 is a great laptop. Sporting an AMD processor along with ultra-low-voltage AMD64 bit Technology, a crisp 15.4" LCD Widescreen Display, great battery life, excellent speakers, with a built in Wireless Lan card, and DVD+/-RW; this laptop is aesthically pleasing, light, and fast making it great for travelers, businessmen, and students.

Previous passage is copied from the HP Pavilion zv6000 Gentoo manual. Yes, Acer Ferrari 4000 is built on the same reference platform and has all the quirks present in any ATI X200 based laptop. Just like the russian guy from the movie "Armageddon" says: "Components. American components, Russian Components, ALL MADE IN TAIWAN!" (formatted by imdb.com). I, however, made some progress in making my Ferrari laptop more useful in Linux (the only system I have installed; no dual-boot stuff), so this is what I want to focus on.

Hardware

Note: Upon installation of gentoo lspci is not available. lspci is included in pciutils package.

The Gentoo Kernel recognizes the following hardware included in the Acer Ferrari 4005WLMi notebook.

Output of lspci:

Code: #lspci -v
0000:00:00.0 Host bridge: ATI Technologies Inc: Unknown device 5951 (rev 01)
	Flags: bus master, 66Mhz, medium devsel, latency 64

0000:00:02.0 PCI bridge: ATI Technologies Inc: Unknown device 5a34 (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 00009000-00009fff
	Memory behind bridge: c0100000-c01fffff
	Prefetchable memory behind bridge: c8000000-cfffffff
	Expansion ROM at 00009000 [disabled] [size=4K]
	Capabilities: [50] Power Management version 3
	Capabilities: [58] #10 [0041]
	Capabilities: [80] Message Signalled Interrupts: 64bit- Queue=0/0 Enable+
	Capabilities: [b0] #0d [0000]
	Capabilities: [b8] #08 [a803]

0000:00:06.0 PCI bridge: ATI Technologies Inc: Unknown device 5a38 (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=05, subordinate=05, sec-latency=0
	Memory behind bridge: c0200000-c02fffff
	Capabilities: [50] Power Management version 3
	Capabilities: [58] #10 [0041]
	Capabilities: [80] Message Signalled Interrupts: 64bit- Queue=0/0 Enable+
	Capabilities: [b0] #0d [0000]
	Capabilities: [b8] #08 [a803]

0000:00:13.0 USB Controller: ATI Technologies Inc: Unknown device 4374 (prog-if 10 [OHCI])
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 217
	Memory at c0000000 (32-bit, non-prefetchable)
	Capabilities: [d0] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-

0000:00:13.1 USB Controller: ATI Technologies Inc: Unknown device 4375 (prog-if 10 [OHCI])
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 217
	Memory at c0001000 (32-bit, non-prefetchable)
	Capabilities: [d0] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-

0000:00:13.2 USB Controller: ATI Technologies Inc: Unknown device 4373 (prog-if 20 [EHCI])
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 217
	Memory at c0002000 (32-bit, non-prefetchable)
	Capabilities: [dc] Power Management version 2
	Capabilities: [d0] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-

0000:00:14.0 SMBus: ATI Technologies Inc ATI SMBus (rev 11)
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: 66Mhz, medium devsel
	I/O ports at 8400
	Memory at c0003000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [b0] #08 [a802]

0000:00:14.1 IDE interface: ATI Technologies Inc Standard Dual Channel PCI IDE Controller ATI (prog-if 8a [Master SecP PriP])
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, 66Mhz, medium devsel, latency 0, IRQ 209
	I/O ports at <ignored>
	I/O ports at <ignored>
	I/O ports at <ignored>
	I/O ports at <ignored>
	I/O ports at 8410 [size=16]
	Capabilities: [70] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-

0000:00:14.3 ISA bridge: ATI Technologies Inc: Unknown device 4377
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, 66Mhz, medium devsel, latency 0

0000:00:14.4 PCI bridge: ATI Technologies Inc: Unknown device 4371 (prog-if 01 [Subtractive decode])
	Flags: bus master, 66Mhz, medium devsel, latency 64
	Bus: primary=00, secondary=06, subordinate=07, sec-latency=64
	I/O behind bridge: 00002000-00002fff
	Memory behind bridge: c0300000-c03fffff
	Prefetchable memory behind bridge: 50000000-51ffffff
	Expansion ROM at 00002000 [disabled] [size=4K]

0000:00:14.5 Multimedia audio controller: ATI Technologies Inc: Unknown device 4370 (rev 02)
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, 66Mhz, slow devsel, latency 64, IRQ 225
	Memory at c0003400 (32-bit, non-prefetchable)
	Capabilities: [40] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-

0000:00:14.6 Modem: ATI Technologies Inc: Unknown device 4378 (rev 02) (prog-if 00 [Generic])
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, 66Mhz, slow devsel, latency 64, IRQ 225
	Memory at c0003800 (32-bit, non-prefetchable)
	Capabilities: [40] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-

0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility X700 (PCIE) (prog-if 00 [VGA])
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, fast devsel, latency 0, IRQ 233
	Memory at c8000000 (32-bit, prefetchable) [size=c0120000]
	I/O ports at 9000 [size=256]
	Memory at c0100000 (32-bit, non-prefetchable) [size=64K]
	Expansion ROM at 00020000 [disabled]
	Capabilities: [50] Power Management version 2
	Capabilities: [58] #10 [0001]
	Capabilities: [80] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-

0000:05:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5789 Gigabit Ethernet PCI Express (rev 11)
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, fast devsel, latency 0, IRQ 233
	Memory at c0200000 (64-bit, non-prefetchable)
	Capabilities: [48] Power Management version 2
	Capabilities: [50] Vital Product Data
	Capabilities: [58] Message Signalled Interrupts: 64bit+ Queue=0/3 Enable-
	Capabilities: [d0] #10 [0001]

0000:06:02.0 Network controller: Broadcom Corporation: Unknown device 4318 (rev 02)
	Subsystem: AMBIT Microsystem Corp.: Unknown device 0311
	Flags: bus master, fast devsel, latency 64, IRQ 169
	Memory at c0304000 (32-bit, non-prefetchable)

0000:06:09.0 CardBus bridge: Texas Instruments Texas Instruments PCIxx21/x515 Cardbus Controller
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, medium devsel, latency 168, IRQ 177
	Memory at c0308000 (32-bit, non-prefetchable)
	Bus: primary=06, secondary=07, subordinate=0a, sec-latency=176
	Memory window 0: 50000000-51fff000 (prefetchable)
	Memory window 1: 52000000-53fff000
	I/O window 0: 00002000-000020ff
	I/O window 1: 00002400-000024ff
	16-bit legacy interface ports at 0001

0000:06:09.2 FireWire (IEEE 1394): Texas Instruments Texas Instruments OHCI Compliant IEEE 1394 Host Controller (prog-if 10 [OHCI])
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, medium devsel, latency 64, IRQ 169
	Memory at c0309000 (32-bit, non-prefetchable)
	Memory at c0300000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: [44] Power Management version 2

0000:06:09.3 Unknown mass storage controller: Texas Instruments Texas Instruments PCIxx21 Integrated FlashMedia Controller
	Subsystem: Acer Incorporated [ALI]: Unknown device 007e
	Flags: bus master, medium devsel, latency 64, IRQ 11
	Memory at c0306000 (32-bit, non-prefetchable)
	Capabilities: [44] Power Management version 2

The processor info of the Ferrari 4005WLMi notebook used for this guide is:

Code: #cat /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 15
model		: 36
model name	: AMD Turion(tm) 64 Mobile Technology ML-37
stepping	: 2
cpu MHz		: 2000.115
cache size	: 1024 KB
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni lahf_lm
bogomips	: 4008.33
TLB size	: 1024 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc

Overview

CPUAMD Turion 64 ML-37 Processor 2.0Ghz
ChipsetATi IXP Chipset
GraphicsATI Radeon Mobility X700 card (rev. M26 5653).
VGA + DVI-D + TVout
Wireless-LANBroadcom bcm4318 WLAN card
NetworkBroadcom Ethernet card
PCMCIATI PCIxx21 CardBus controller
Digital Media card readerTI PCIxx21 FlashMedia controller
IEEE1394 portTI PCIxx21 OHCI Compliant IEEE 1394 Host Controller
SD Host controllerTI PCIxx21 SDHCI controller (misconfigured)
Soundcard/Internal ModemAC/MC 97 soundcard and modem (works with slmodemd by SmartLink)
Harddrive100 GB
Memory1024 MB
USB4 USB 2.0 ports
Optical-Drive Matsushita UJ-845S Dual layer DVD+-R/W

Working

Not Tested, but probably works

CFLAGS Settings and make.conf

Starting Gentoo installation process the cflags settings should be set so that gentoo would know the type of cpu that will be used to compile the programs and the kernel. (For more information regarding USE flags try here) To do this the make.conf must be edited. make.conf location is found in /etc/make.conf. For the Ferrari 4005 I've set the CFLAGS to CFLAGS="-march=athlon64 -pipe -O2".

Kernel Configuration

I would like to advise everybody to move to a recent kernel. The 2.6.16 release of the kernel includes considerable patches to the ACPI code and particularly ATI IXP chipset fixes. It's also capable of understanding ACER's buggy DSDT, so no DSDT patching or special kernel command line options are needed. Newer kernels also introduce many new features.

Hardware Package and Software Dependencies

The section discusses the installation of several packages and softwares that will utilize the hardware features from the Ferrari 4005 notebook.

Radeon Mobility X700 PCIE Video Card

Most features are well supported by the open X.Org driver for this card (R400 family), including 3D acceleration (I get 3700fps in glxgears) and XVideo. List of supported features. Unfortunately, tvout, at the moment, doesn't seem to be one of them?!

In the kernel, enable:

Code: xorg.conf Device section
Section "Device"
  Identifier "OpenRadeon"
  Driver "radeon"
  Option "AGPMode" "4"
  Option "AGPFastWrite" "yes"
  Option "EnablePageFlip" "on"
  Option "RenderAccel" "on"
  Option "AccelMethod" "EXA"
  Option "DynamicClocks" "on"
  Option "ColorTiling" "on"
  Option "DRI" "true"
#  Option "TVDACLoadDetect" "TRUE"
#  Option "TVStandard" "ntsc"
#  Option "ForceTVOut" "yes"
EndSection

ATI proprietary drivers

If you insist on using third-party binary blobs, which may offer a little better FPS (at the moment 4900fps with glxgears), and tvout, ATI driver installation requires little more than "emerge ati-drivers".

Of other notable features, there is ATI PowerPlay™ utility. Use "/opt/ati/bin/fglrx_pplay" to set the modes (I wonder if this really makes any difference).

(If you are having problems running Google Earth with ati-drivers-8.30.3-r1 try overriding the file /usr/lib32/opengl/ati/lib/libGL.so.1.2 with the file libGL.so.1.2 that comes with ati-drivers 8.27.10.)

xorg.conf file

An old working configuration of single head display, touchpad and BT mouse enabled, using fglrx.

File: /etc/X11/xorg.conf
Section "Module"

    Load        "dbe"   # Double buffer extension
    Load        "extmod"
    Load        "type1"
    Load        "freetype"

# This loads the GLX module
    Load       "glx"
# This loads the DRI module
    Load       "dri"

EndSection

Section "Extensions"
#    Option "Composite" "Enable"
EndSection

Section "Files"

    RgbPath     "/usr/X11R6/lib/X11/rgb"

    FontPath   "/usr/share/fonts/misc/"
    FontPath   "/usr/share/fonts/TTF/"
    FontPath   "/usr/share/fonts/Type1/"
#    FontPath   "/usr/share/fonts/CID/"
#    FontPath   "/usr/share/fonts/75dpi/"
#    FontPath   "/usr/share/fonts/100dpi/"
#    FontPath   "/usr/share/fonts/local/"
#    FontPath   "/usr/share/fonts/Speedo/"
#    FontPath   "/usr/share/fonts/TrueType/"
#    FontPath   "/usr/share/fonts/freefont/"

#    ModulePath "/usr/X11R6/lib/modules"

EndSection

# **********************************************************************
# Server flags section.
# **********************************************************************

Section "ServerFlags"

EndSection

Section "InputDevice"

    Identifier  "Keyboard 0
    Driver      "kbd"

    Option "AutoRepeat" "500 30"


     Option "XkbRules"    "xorg"
     Option "XkbModel"    "ferrari4k"
     Option "XkbLayout"   "us"
#    Option "XkbVariant"  ""
#    Option "XkbOptions"  ""

#    Option "XkbDisable"

EndSection

Section "InputDevice"

    Identifier  "Mouse 0"
    Driver      "synaptics"

    Option        "Device"                "/dev/input/mouse0"
    Option        "Protocol"              "auto-dev"
    Option        "LeftEdge"              "1700"
    Option        "RightEdge"             "5300"
    Option        "TopEdge"               "1700"
    Option        "BottomEdge"            "4200"
    Option        "FingerLow"             "25"
    Option        "FingerHigh"            "30"
#    Option "TapButton1" "1"  # if tap-click don't work?
    Option        "MaxTapTime"            "180"
    Option        "MaxTapMove"            "220"
#    Option        "EmulateMidButtonTime"  "75"
    Option        "VertScrollDelta"       "100"
#    Option        "HorizScrollDelta"      "20"
    Option        "MinSpeed"              "0.09"
    Option        "MaxSpeed"              "0.18"
    Option        "AccelFactor"           "0.0015"
#    Option        "EdgeMotionMinSpeed"    "200"
#    Option        "EdgeMotionMaxSpeed"    "200"
    Option        "UpDownScrolling"       "1"
    Option        "CircularScrolling"     "1"
    Option        "CircScrollDelta"       "0.1"
    Option        "CircScrollTrigger"     "2"

#   Option        "SHMConfig"       "on"

    Option        "ZAxisMapping"    "4 5 6 7"

EndSection

Section "InputDevice"

    Identifier  "Mouse 1"
    Driver      "mouse"

    Option "Protocol"     "imps/2"
    Option "Device"       "/dev/input/mice"

    Option "ZAxisMapping" "4 5"

EndSection

Section "Monitor"

    Identifier  "Panel"
    Option "DPMS"  "on"

EndSection

Section "Device"
    Identifier  "X700-0"
    Driver      "fglrx"

    Option "no_accel"                   "no"
    Option "no_dri"                     "no"
    Option "mtrr"                       "off"

    Option "DesktopSetup"               "0x00000100"
    Option "MonitorLayout"              "NONE, LVDS"
    Option "IgnoreEDID"                 "off"
    Option "NoTV"                       "no"
    Option "TVStandard"                 "PAL-G"
    Option "TVHSizeAdj"                 "0"
    Option "TVVSizeAdj"                 "0"
    Option "TVHPosAdj"                  "0"
    Option "TVVPosAdj"                  "0"
    Option "TVHStartAdj"                "0"
    Option "TVColorAdj"                 "0"
    Option "GammaCorrectionI"           "0x00000000"
    Option "GammaCorrectionII"          "0x00000000"
# === OpenGL specific profiles/settings ===
    Option "Capabilities"               "0x00000000"
# === Video Overlay for the Xv extension ===
    Option "VideoOverlay"               "on"
# === OpenGL Overlay ===
# Note: When OpenGL Overlay is enabled, Video Overlay
#       will be disabled automatically
    Option "OpenGLOverlay"              "off"
# === Center Mode (Laptops only) ===
    Option "CenterMode"                 "off"
# === Pseudo Color Visuals (8-bit visuals) ===
    Option "PseudoColorVisuals"         "off"
# === QBS Management ===
    Option "Stereo"                     "off"
    Option "StereoSyncEnable"           "1"
# === FSAA Management ===
    Option "FSAAEnable"                 "no"
    Option "FSAAScale"                  "1"
    Option "FSAADisableGamma"           "no"
    Option "FSAACustomizeMSPos"         "no"
    Option "FSAAMSPosX0"                "0.000000"
    Option "FSAAMSPosY0"                "0.000000"
    Option "FSAAMSPosX1"                "0.000000"
    Option "FSAAMSPosY1"                "0.000000"
    Option "FSAAMSPosX2"                "0.000000"
    Option "FSAAMSPosY2"                "0.000000"
    Option "FSAAMSPosX3"                "0.000000"
    Option "FSAAMSPosY3"                "0.000000"
    Option "FSAAMSPosX4"                "0.000000"
    Option "FSAAMSPosY4"                "0.000000"
    Option "FSAAMSPosX5"                "0.000000"
    Option "FSAAMSPosY5"                "0.000000"
# === Misc Options ===
    Option "UseFastTLS"                 "0"
    Option "BlockSignalsOnLock"         "on"
    Option "ForceGenericCPU"            "no"

    Screen 0
EndSection

Section "Screen"
    Identifier  "Screen 0"
    Device      "X700-0"
    Monitor     "Panel"
    DefaultDepth 24

    Subsection "Display"
        Depth       24
        Modes       "1680x1050"
    EndSubsection
EndSection

Section "ServerLayout"

    Identifier  "Layout 0"

    Screen "Screen 0"

    InputDevice "Mouse 0" "CorePointer"
    InputDevice "Mouse 1" "AlwaysCore"
    InputDevice "Keyboard 0" "CoreKeyboard"

EndSection

Section "DRI"
    Mode 0666
EndSection

TV-out

So far, the native (xf86-video-ati) driver doesn't yet support tvout. So, for the proprietary binary fglrx driver, relevant portions of a working xorg.conf are provided below. The most important option is "DesktopSetup" "Single,Reverse" for ati-drivers-8.19.10 and "DesktopSetup" "clone" / "OverlayOnCRTC2" "1" for ati-drivers up to 8.25.18 (maybe some day ATI stop changing the way to enable TV out in their drivers). If you are using modular X, and are having problems compiling 8.19.10, you will probably have to edit the ati-drivers-8.19.10.ebuild as described in the gentoo forums. DRI should be disabled ("NoDRI" "yes" ... (no_dri doesn't work?)) when using TV-OUT if you experience system lockups when exiting the X server. (When the TV-out X server starts it changes to the next virtual console available (usually 8), when it finishes the first X server will try to change to its own virtual console (usually 7). If DRI is enabled on the first X server it can lock up during the switch.). That problem was solved in ati-drivers-8.25.18. DRI from ati-drivers <= ati-drivers-8.40.4 still does not work together with tuxonice formely suspend2). DRI from ati-drivers = ati-drivers-8.42.3 does work together with tuxonice-2.2.10.4 + kernel 2.6.23.

File: /etc/X11/xorg.conf
Section "ServerLayout"
	Identifier     "TVLayout"
	Screen      0  "TVScreen" 0 0
	InputDevice    "Mouse" "CorePointer"
	InputDevice    "Keyboard" "CoreKeyboard"
EndSection

...

Section "Monitor"
	Identifier   "TVMonitor"
	Option	    "DPMS" "off"
EndSection

Section "Device"
	Identifier "RX700_fglrx"
	Driver "fglrx"
	Option "VideoOverlay" "on"
	Option "OpenGLOverlay" "off"
	Option "NoDRI" "yes" # Change this to "no" with ati-drivers-8.25.18
	Option "NoTV" "no"
	Option "TVStandard" "VIDEO"
	Option "TVFormat" "NTSC-M"
	Option "TVHSizeAdj" "0"
	Option "TVVSizeAdj" "0"
	Option "TVHPosAdj" "0"
	Option "TVVPosAdj" "0"
	Option "TVHStartAdj" "0"
	Option "TVColorAdj" "0"
	Option "GammaCorrectionI" "0x00000000"
	Option "GammaCorrectionII" "0x00000000"
	Option "UseInternalAGPGART" "no"

        # ati-drivers = 8.19.10
	#Option "DesktopSetup" "single,reverse"

        # ati-drivers 8.20.8 up to 8.22.5 (at least)
        Option      "DesktopSetup" "clone"
        Option      "OverlayOnCRTC2" "1"
EndSection

Section "Screen"
	Identifier "TVScreen"
	Device     "RX700_fglrx"
	Monitor    "TVMonitor"
	DefaultDepth     24
	SubSection "Display"
		Depth     24
		Modes    "640x480" "800x600" "1024x768"
		ViewPort 0 0
	EndSubSection
EndSection

Modem

As of kernel 2.6.14, modem is supported on this machine out of the box (through snd_atiixp_modem driver). Kernel regards this modem as a plain audio device (more or less - it's a little more than an ADC/DAC pair), so daemon called "slmodemd" is needed to actually transfer data over phone line. Now, this daemon has a proprietary, IA32 only binary component, so it can not simply be emerged from portage. It, however, can easily be built manually, given there is x86 version of alsa-libs installed ("emerge emul-linux-x86-soundlibs" or something custom). Instead of building, it is always possible to get the latest binary from Technion's Linmodem site (great university, by the way). It works great, starting from 2.9.9* and up to the latest one. Ocassional disconnects are possible and still need to be debugged.

IR Port

The IR port is fully supported as of 2.6.21 kernel. However, it may fail to operate because of module conflict (after all, we can't expect much from the legacy hardware). On my machine, udevd loads 8250* modules before the nsc-ircc one, preventing the IR port initialization. Allowing for the fact that internal 8250 serial controller is not wired to anything (docking station?), I just blacklisted its modules:

File: Excerpt from /etc/modprobe.d/aliases
alias 8250             off
alias 8250_pci         off
alias 8250_pnp         off

Configure irda:

File: /etc/conf.d/irda
IRDA=yes
IRDADEV=irda0
DISCOVERY=yes
File: /etc/modprobe.d/irda
alias irda0 nsc-ircc
pre-install nsc-ircc /bin/setserial /dev/tts/0 uart none

Depending on your BIOS setup you may have to use /dev/tts/1.

Code:
update-modules
/etc/init.d/irda start
ifconfig # irda0 must be available now

Bluetooth

The bluetooth module of this laptop is basically an USB device, hard-wired through a switch (front blue-light button) to the system's USB hub. To install support for bluetooth one shall emerge few packages starting with bluez- ("bluez-libs", "bluez-utils" and may be some others; if you don't know what to do, there is plenty of bluetooth related information elsewhere).

No special provisions are necessary for bluetooth switch (blue button). Recent enough version of udev has a rule that will start and stop bluetooth services automatically on blue button press/bluetooth dongle insertion. The relevant configuration file for bluetooth services is as expected: /etc/conf.d/bluetooth.

The bluetooth mouse became as laggy as in Windows with kernel 2.6.21. The culprit is this commit. I created this patch to revert the change, now the mouse works fine again. I also asked for help in the bluetooth mailling list, nobody has answered my request for help so far.

FlashMedia

TI PCIxx21 memory card controller has two modes of operation. One is via TI's proprietary FlashMedia interface that supports all types of cards: MMC/SD, xD, SM, MS and MSpro. Second is via open industry standard SDHCI interface, which supports (as follows from the name) only MMC/SD cards. We shall discuss this interface in the next section.

FlashMedia support was possible by reverse engineering of the TI's Win64 driver. It's included in standard linux kernel starting from version 2.6.19 (though some issues made their way into 2.6.20 and were not committed in time for 2.6.21, spoiling the fun). As of version 2.6.25, MemoryStick Pro storage cards are supported by the mainline kernel.

Sony legacy MemoryStick support and xD cards are not supported at present, but some work is being done, so we may see them both supported, sooner or later (fortunately, I have nobody to blame for it, but myself - Oakad).

For users of older (< 2.6.19) and newer (> 2.6.19) kernel versions the install procedure should go as following (version 0.8, for the newer kernels available from tifmxx.berlios.de; SVN version would probably compile only on the most recent kernels):

- Download and unpack the driver

- be sure that you use at least kernel 2.6.17 (12.6.16?) with mmc-support enabled

- compile modules (make)

- copy to /lib/modules/<kernel> -directory ("make install" will do)

- # update-modules

- # modprobe tifm_core

- # modprobe tifm_sd

- # modprobe tifm_7xx1

- Insert SD-Card - the Blockdevice /dev/mmcblk0p1 will be created, that you can mount (for auto-mounting support users of 2.6.20 and .21 kernels need a newer hald)

The fixed version of the driver will be included with 2.6.22 release.

SDHCI

Well, thanks to good folks of drzeus support for SDHCI interface is also available. TI, in their unlimited benevolence, chose to provide an industry standard SDHCI interface in their chip, in addition to proprietary FlashMedia one. Yet, what TI giveth, Acer taketh away - the interface is disabled by default on this machine. To make use of it, some magic is needed.

First we have to tweak a fakephp driver of pci hotplug (the original is nearly identical on recent kernels):

File: "diff -u" of fakephp.c
--- fakephp.c.orig      2006-02-18 00:19:56.240839250 +1100
+++ fakephp.c   2006-02-17 02:55:28.598947500 +1100
@@ -212,6 +212,8 @@
                                }
                        }
                }
+               pci_bus_size_bridges(bus);
+               pci_bus_assign_resources(bus);
        }
 }

I don't know if this is a safe patch, as I failed to verify the correctness of it with anybody of kernel developers. It seems to work and my kernel is still up (no nasty crashes).

The driver proper is now included with stock linux-2.6.17. It's called "sdhci.ko" (alternatively, driver may be obtained from drzeus). Do not load it just yet.

And now the magic part:

File: sdhci.sh
#!/bin/bash

modprobe fakephp
setpci -s 06:09.0 86.b=90:d0 # SDHCI enable
echo 0 > /sys/bus/pci/slots/0000:06:09.3/power
echo 0 > /sys/bus/pci/slots/0000:06:09.2/power
echo 0 > /sys/bus/pci/slots/0000:06:09.0/power
echo 1 > /sys/bus/pci/slots/0000:06:09.0/power
setpci -s 06:09.3 4c.b=02 # FlashMedia SD disable
setpci -s 06:09.4 04.b=06 # SDHCI Mem+ BusMaster+
setpci -s 06:09.4 88.b=01 # SDHCI DMA enable

What's going on here? First, we need to load a fakephp driver, to enable pci rescan. Then, a magic bit should be toggled, to enable SDHCI support. After that, all TI subsystems must be stopped and re-started. And to culminate, we need to disable FlashMedia SD support, otherwise FlashMedia controller will compete with SDHCI one for control over card.

What reward we get for our pains? Lo and behold - we just got a shiny new pci device:

File: Excerpt from lspci -v
06:09.4 Class 0805: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller (prog-if 01)
        Flags: bus master, medium devsel, latency 0, IRQ 177
        Memory at c030a000 (32-bit, non-prefetchable) [size=256]
        Memory at c030a100 (32-bit, non-prefetchable) [size=256]
        Memory at c030a200 (32-bit, non-prefetchable) [size=256]
        Capabilities: [80] Power Management version 2

Now, do "modprobe sdhci", plug in your MMC/SD card and enjoy it content.

If you use the noapic kernel option also use the irqpoll option or the SDHCI controller will not work properly. Suspend to disk and to ram crash the computer if the SDHCI controller is enabled. To make it easier to enable / disable it I created this service:

File: /etc/init.d/sdhci
#!/sbin/runscript

depend() {
        need localmount
}

load_sdhci()
{
        modprobe fakephp || return 1
        setpci -s 06:09.0 86.b=90:d0
        echo 0 > /sys/bus/pci/slots/0000:06:09.3/power
        echo 0 > /sys/bus/pci/slots/0000:06:09.2/power
        echo 0 > /sys/bus/pci/slots/0000:06:09.0/power
        echo 1 > /sys/bus/pci/slots/0000:06:09.0/power
        setpci -s 06:09.3 4c.b=02 # FlashMedia SD disable
        setpci -s 06:09.4 04.b=06 # SDHCI Mem+ BusMaster+
        setpci -s 06:09.4 88.b=01 # SDHCI DMA enable
        modprobe sdhci || return 1
        modprobe mmc_block || return 1
        return 0
}

start() {
        ebegin "Configuring card reader"
        load_sdhci
        eend $?
}

unload_sdhci() {
        modprobe -r mmc_block
        modprobe -r sdhci
        lsmod | grep -q sdhci && return 1

        setpci -s 06:09.4 88.b=00 # SDHCI DMA disable
        setpci -s 06:09.4 04.b=07 # SDHCI Mem- BusMaster-
        setpci -s 06:09.3 4c.b=00 # FlashMedia SD enable
        setpci -s 06:09.0 86.b=d0

        echo 0 > /sys/bus/pci/slots/0000:06:09.4/power
        echo 0 > /sys/bus/pci/slots/0000:06:09.3/power
        echo 0 > /sys/bus/pci/slots/0000:06:09.2/power
        echo 0 > /sys/bus/pci/slots/0000:06:09.0/power
        echo 1 > /sys/bus/pci/slots/0000:06:09.0/power

        modprobe -r fakephp
        return 0
}

stop() {
        ebegin "Shutting down card reader"
        unload_sdhci
        eend $?
}

WiFi

See the Broadcom 43xx article. (Briefly, with newer kernels like 2.6.26, enable the Broadcom 43xx driver in the kernel, and emerge b43-fwcutter to get the correct firmware to place in /lib/firmware. b43 actually works just as well/better (in terms of range and speed) as ndiswrapper did.) The Acer "SignalUP" technology is actually nothing more than a specific antenna design.

FireWire

FireWire works out of the box with the standard kernel module ieee1394 and ohci1394. Mass storage devices additionally need the sbp2 module loaded.

DV editing works flawlessly with raw access kernel module and an appropreate program to download it. (Kino and Cinelerra are two that come to mind.)

Ethernet over FireWire works out of the box, and the hotplug/coldplug scripts should load it by default. The eth device with the extra long MAC address (digits separated by dashes - instead of colons : ) is the FireWire device. It is provided by the eth1394 module.

Hard Disk

Well, the now famous Load_Cycle_Count problem affects our beloved notebook (my hard disk's Load_Cycle_Count is 492396 after two years, smartctl -a /dev/hda | grep Load_Cycle_Count). I have tried using hdparm -B 255 /dev/hda to avoid the Load_Cycle_Count to reach 600000 (estimated hard disk's lifetime). It works but hard disk gets warm, hey I live in Brazil :-). Now I am using hdparm -B 200 /dev/hda in /etc/conf.d/local.start. It also works and hard disk does not get so warm. You have better do the same or your hard disk can just fail after some years of use.

DVD drive

Like many IDE DVD drives designed in Japan, the Matsushita UJ-845S unit implements some additional "features" (not mentioned in RPC-2 specs) inside the firmware. In short, it will prevent any OS from reading encrypted CSS title keys, when the drive region code doesn't match the DVD.

For this reason, the region chosen in "regionset" tool, will (unfortunately) determine which region-coded DVD's can be read. You can also set a specific region code, but this is (hardware-)limited to five changes at all.

Code:
# emerge regionset
# regionset /dev/dvd
regionset version 0.1 -- reads/sets region code on DVD drives
Current Region Code settings:
RPC Phase: II
type: NONE
vendor resets available: 4
user controlled changes resets available: 5
drive plays discs from region(s):, mask=0xFF

Would you like to change the region setting of your drive? [y/n]:y
Enter the new region number for your drive [1..8]:2
New mask: 0xFFFFFFFD, correct? [y/n]:y
Region code set successfully!

The same problems happen for people using windows - and *even* Slysoft's AnyDVD tool doesn't help. More information there: http://club.cdfreaks.com/showthread.php?t=101267

If you find *any* information on how to workaround (or get rid of) this crap, please add the details here !

- On a J-845D in a Aspire 5020 I can view CSS encrypted DVDs from several regions with VLC. The thing is I never set any region so either this drive supports reading CSS sectors from several regions per default or only when in this undecided state. This info won't help anyone who already has a problem though.

- Well, at least on my UJ-845S drive, it refused to read all CSS encrypted DVD's, until I chose a region for the first time. Then it worked, but of course, only for that region...

- Ultimately the best solution is to simply replace that drive, since the Matsushita UJ-845S will never be flashable to RPC1. One drive that I can recommend is the Pioneer DVD DVR-K06 (also available as the rebranded Plextor PX-608AL). Although these two drives are essentially the same drive, the Plextor is double the price of the Pioneer, so go for the Pioneer if you can. Both these drives are available as of May 2008 for around 30 UKP (Pioneer) or 60 UKP (Plextor). The RPC1 flash for both of these drives is the same file, which can be found on the RPC1 forums. More info here.

Special Keys

The Ferrari 4005 keyboard sends few escaped scancodes to signal non-standard key presses. Thus one need to setup "keycodes" configuration script in the following manner (this, of course, only a suggestion, but probably an optimal one):

File: My /etc/conf.d/keycodes
# Extra keys for Acer Ferrari 4k
# Key               | scode | X11 symbol   | X11 kcode  | Console kcode
# ----------------------------------------------------------------------
# Fn-F1               e025    Help           I70 - 240     235
# Fn-F2               e026    XF86Launch1    I71 - 241     236
# Fn-F3               e027    XF86Launch2    I72 - 242     237
# Fn-F4               <acpi sleep event>
# Fn-F5               e029    XF86Display    I26 - 166     154
# Euro                e033    EuroSign       I25 - 165     205
# Dollar              e034    dollar         I24 - 164     166
# WIFI ON             e055    NoSymbol           x         240
# WIFI OFF            e056    NoSymbol           x         241
# USB ON              e057    NoSymbol           x         242
# USB OFF             e058    NoSymbol           x         243
# BR. UP              e063    NoSymbol           x         244
# Fn-F7 (TPAD ON)     e071    NoSymbol           x         245
# Fn-F7 (TPAD OFF)    e072    NoSymbol           x         246
# "P" button          e073    XF86Launch3    I73 - 243     238
# "e" button          e074    XF86Launch4    I74 - 244     239
# --------------------------------------------
# Rationale: "NoSymbol" keys have nothing to do with X apps - they must be
#               handled on the lower level if at all (they do their work).
#               Therefore I've mapped them to the keycodes that never get
#               reported to X (I think).
#            "XF86Display" mapped according to the only other occurrence in
#               <inet> file.
#            "Help" and "XF86Launch*" buttons mapped by majority and
#               grouping of "XF86Launch*" buttons in <inet> file.
#            "dollar" was mapped in resemblance of it ASCII code and "Euro"
#               used to plug a discontinuity

KEYCODES="e025 235 e026 236 e027 237 e029 154 e033 205 e034 166 e055 240 e056 241 e057 242 e058 243 e063 244 e071 245 e072 246 e073 238 e074 239"
File: My /etc/init.d/keycodes
#!/sbin/runscript

depend() {
         need localmount
}

start() {
        # Load scan code to key code mappings
        if [ -n "$KEYCODES" -a -x /usr/bin/setkeycodes ]
        then
            ebegin "Loading scan code to key code mappings"
            /usr/bin/setkeycodes $KEYCODES
            eend $? "Error loading key code mappings"
        fi
}

Don't forget to run rc-update add keycodes default, to make this run at start-up.

Special Keys with X and kde

Ok, now that we have all keycodes, we can make a small adaptation to xkb scripts, in order to enable all keys in X. Here are the changes I've made, against files installed by xkbdata-1.0.0 of Xorg-7.0, though probably these files are nearly identical on many other xorg versions.

NOTE: Since x11-misc/xkeyboard-config-0.9 the xkb model is included by default. No patching needed anymore - you only need to specify (in xorg.conf): Option "XkbModel" "acer_ferrari4k"

File: Patch against /usr/share/X11/xkb
diff -ur xkb-orig/rules/xorg xkb/rules/xorg
--- xkb-orig/rules/xorg	2005-08-12 20:50:44.000000000 +1000
+++ xkb/rules/xorg	2005-12-19 14:35:48.230961000 +1100
@@ -20,8 +20,8 @@
 ! $azerty = be fr
 ! $qwertz = al cz de hr hu ro si sk

-! $inetkbds = a4techKB21 a4techKBS8 acer_tm_800 acpi airkey azonaRF2300 \
-              brother \
+! $inetkbds = a4techKB21 a4techKBS8 acer_tm_800 acpi airkey ferrari4k \
+              azonaRF2300 brother \
               btc5113rf btc5126t btc9000 btc9000a btc9001ah btc5090\
               cherryblue cherrybluea cherryblueb \
               chicony chicony9885 \
diff -ur xkb-orig/rules/xorg.lst xkb/rules/xorg.lst
--- xkb-orig/rules/xorg.lst	2005-08-12 20:50:44.000000000 +1000
+++ xkb/rules/xorg.lst	2005-12-19 14:37:16.024447750 +1100
@@ -18,6 +18,7 @@
   a4techKBS8      A4Tech KBS-8
   abnt2           Brazilian ABNT2
   airkey          Acer AirKey V
+  ferrari4k       Acer Ferrari 4000
   acpi            ACPI Standard
   azonaRF2300     Azona RF2300 wireless Internet Keyboard
   scorpius        Advance Scorpius KI
diff -ur xkb-orig/rules/xorg.xml xkb/rules/xorg.xml
--- xkb-orig/rules/xorg.xml	2005-08-12 21:38:38.000000000 +1000
+++ xkb/rules/xorg.xml	2005-12-19 14:38:36.593483000 +1100
@@ -370,6 +370,12 @@
         <description xml:lang="zh_CN">Acer AirKey V</description>
       </configItem>
     </model>
+      <model>
+       <configItem>
+        <name>ferrari4k</name>
+        <description>Acer Ferrari 4000</description>
+      </configItem>
+    </model>
     <model>
       <configItem>
         <name>acpi</name>
diff -ur xkb-orig/symbols/inet xkb/symbols/inet
--- xkb-orig/symbols/inet	2005-08-12 21:10:11.000000000 +1000
+++ xkb/symbols/inet	2005-12-30 00:15:45.000000000 +1100
@@ -74,6 +74,27 @@
     key <I5E>	{	[ XF86PowerOff		]	};
 };

+// Acer Ferrari 4000 Keyboard
+// From Alex Dubov <oakad@yahoo.com>
+partial alphanumeric_keys
+xkb_symbols "ferrari4k" {
+    key <I30>   {       [ XF86AudioRaiseVolume  ]       }; //Fn+Up
+    key <I2E>   {       [ XF86AudioLowerVolume  ]       }; //Fn+Down
+    key <I20>   {       [ XF86AudioMute         ]       }; //Fn+F8
+    key <I6C>   {       [ XF86Mail              ]       }; //"mail" button
+    key <I32>   {       [ XF86WWW               ]       }; //"Saturn" button
+    // Missing keycodes - set-up with setkeycodes
+    key <I70>   {       [ Help                  ]       };
+    key <I71>   {       [ XF86Launch1           ]       };
+    key <I72>   {       [ XF86Launch2           ]       };
+    key <I73>   {       [ XF86Launch3           ]       };
+    key <I74>   {       [ XF86Launch4           ]       };
+    key <I24>   {       [ dollar                ]       };
+    key <I25>   {       [ EuroSign              ]       };
+    key <I26>   {       [ XF86Display           ]       };
+};
+
+
 // Azona

 // Azona RF2300 wireless Internet Keyboard
diff -ur xkb-orig/symbols.dir xkb/symbols.dir
--- xkb-orig/symbols.dir	2005-12-30 01:16:00.000000000 +1100
+++ xkb/symbols.dir	2005-12-19 14:33:46.679364500 +1100
@@ -516,6 +516,7 @@
 --p----- a------- inet(a4techKB21)
 --p----- a------- inet(a4techKBS8)
 --p----- a------- inet(airkey)
+--p----- a------- inet(ferrari4k)
 --p----- a------- inet(azonaRF2300)
 --p----- a------- inet(acpi)
 --p----- a------- inet(scorpius)

If everything went ok, it is now will be possible to add

    Option "XkbModel"    "ferrari4k"

to xorg.conf keyboard section, thus enabling all keys (including indispensable volume and mute keys). For kde, go to the "Keyboard Layout" panel of the Control Center, and choose "Acer Ferrari 4000" from the "Keyboard Model" combobox (it should appear there if all required xkb files are patched and X is restarted). Hitting apply brings you a wonder of a volume bar pop-up upon Fn-Up and Fn-Down presses. All other buttons can be made useful through "Keyboard Shortcuts" panel - just pick your action and hit a HotKey or Fn-{F1,F2,F3} combo. Euro and Dollar on the lower right of the keyboard will work too.

Battery info via ACPI

Works fine with latest kernel (2.6.23-rc7), and pollable in /proc/acpi/battery/BAT1/

ACPI power states

Suspend to disk

There are three suspend to disk implemenations for Linux: swsusp, uswsusp (based on swsusp) and TuxOnIce (formely suspend2). uswsusp is very new and experimental. swsusp and TuxOnIce are the most used suspend to disk implementations. I prefer TuxOnIce, reasons.

To enable TuxOnIce:

Linux Kernel Configuration: Kernel 2.6.23 patched with TuxOnIce 2.2.10.4
Power management options --->
    <*> Enhanced Hibernation (TuxOnIce) --->
        <*> Swap Allocator
        <*> Compression support
        <*> Userspace User Interface support
        [*] Replace swsusp by default
Code:
emerge hibernate-script
emerge suspend2-userui
Note: kernel framebuffer, fbsplash and suspend2ui_fbsplash work.
Note: modem does not work after resume. You need reloading alsa drivers to make it work again (even snd.ko must be reloaded): http://www.metasys.com.br/~lamarque/ferrari_4005/restart_modem_driver.
Note: If you see kernel oops right after resume try doing this before calling hibernate script: /etc/init.d/bluetooth stop; modprobe -r ohci_hcd. And this after resuming: rmmod hci_usb; modprobe ohci_hcd. Or use my common.conf and suspend2.conf in http://www.metasys.com.br/~lamarque/ferrari_4005/.

The last two problems probably also happen with swsusp, I have not tested them tough.

To enable swsusp:

Observations about both swsusp and TuxOnIce:

Note: Use noapic and acpi_irq_balance kernel options with kernel < 2.6.19.
Note: With ati-drivers <= ati-drivers-8.40.4 and DRI enabled close all X servers before calling hibernate script. ati-drivers-8.42.3's DRI works together with TuxOnIce.
Note: xv overlay stops working after resuming. Mplayer plays the video, the video window is opened but no image is rendered. Adding 'UseDummyXServer yes' to /etc/hibernate/hibernate.conf solves this problem. This problem does not happen with ati-drivers-8.22.5. It happens with ati-drivers 8.42.3 and UseDummyXServer does not help.
Note: Disable sdhci driver (/etc/init.d/sdhci stop) before suspend or the system will crash during resume.

Suspend2 to ram

File: My /usr/bin/restart_artsd
#!/bin/sh

for user in $(ps -C ksmserver -o user= | sort -u)
do
        su - $user -c "( source /etc/profile
                         killall artsd
                         sleep 1
                         killall -9 artsd
                         sleep 1
                         exec kcminit arts ) &> /dev/null"
done

Sensors

lm_sensors-2.10.1 and kernel 2.6.19 support reading processor's core temperature.

Linux Kernel Configuration:
Device Drivers  --->
    <*> Hardware Monitoring support  --->
        <M> AMD Athlon64/FX or Opteron temperature sensor


Code:
emerge lm_sensors
modprobe k8temp
/usr/bin/sensors

Memory controller optimization (a MUST if you use DDR-400)

joel: If you have replaced your memory with DDR-400 SDRAM, you might have noticed that they run only at 333 MHz. The BIOS is stupid. Fortunately, the K8 integrated DRAM controller can be reconfigured in software !!

Warning: If anything goes wrong here, your machine will crash instantly. I recommend going to runlevel 1 and issuing a "sync" command before running any of these commands.
File: joel-ddr400.patch
--- linux/drivers/pci/quirks.c.orig	2007-10-06 23:35:28.000000000 +0200
+++ linux/drivers/pci/quirks.c	2007-10-06 23:55:59.000000000 +0200
@@ -23,6 +23,20 @@
 #include <linux/acpi.h>
 #include "pci.h"
 
+static void __init quirk_acer4005_200MHz(struct pci_dev *pdev)
+{
+	u8 prog;
+	printk(KERN_INFO "Setting AMD K8 DRAM MemClk to 200 MHz.\n");
+	pci_read_config_byte(pdev, 0x96, &prog);
+	prog |= 0x70; /* Set bits 22-20 of DRAM Configuration High Register (0x94) to 111b for 200 MHz */
+	pci_write_config_byte(pdev, 0x96, prog);
+	printk(KERN_INFO "Setting AMD K8 DRAM 2T Timing to DISABLED.\n");
+	pci_read_config_byte(pdev, 0x93, &prog);
+	prog &= ~0x10; /* Clear bit 28 of DRAM Configuration Low Register (0x90) to disable 2T Timing */
+	pci_write_config_byte(pdev, 0x93, prog);
+}
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MEMCTL, quirk_acer4005_200MHz);
+
 /* The Mellanox Tavor device gives false positive parity errors
  * Mark this device with a broken_parity_status, to allow
  * PCI scanning code to "skip" this now blacklisted device.
Note: Thanks to AMD, the full documentation on the K8 memory controller registers is available as PDF there

Performance (measured with "hdparm -T /dev/hda" or "hdparm -T /dev/sda")

First, try it without modifying your kernel (will disappear at next reboot)

Have a look at the registers (to see what settings are currently in effect)

Successfully tested RAM configurations (add your own here)

Warning: Avoid OCZ if possible. When buying two sticks, I got one good stick (0734R written below OCZ logo on every chip) and two bad sticks (0728R). For me, the bad OCZ sticks DID NOT work at 400 MHz (even with slowest timings) and one of them was buggy even at 333 MHz ! So (unless you are a lucky buyer) I recommend Kingston: their RAM has more consistent quality, and is properly tested at factory.

Other setpci tweaks that improve performance (add your own here)

Troubleshooting

The timer problems were fixed in linux-2.6.16. If you have them, upgrade to newer kernel.

There is also some bug that affects version 0.14.3 of the X11 synaptics driver (it makes some ButtonPress/ButtonRelease events to disappear - not critical, but very annoying bug). The 0.14.4 or newer release of the driver fixes it (emerge x11-drivers/synaptics).

[*32-bit* kernel remarks -- ignore this if you have a kernel >=2.6.16]

 Joël: Victory ! I just found *the* kernel option for ATI/AMD64: "disable_timer_pin_1" !
       - mouse gets detected (no need for i8042.nomux)
       - networking and sound work (no need for irqfixup/irqpoll)
       - no more 2X speed timer (no need for noapictimer)
       - APIC is enabled, reboot now works !

If you get no DRI, and no errors in /var/log/Xorg.0.log, take a look at the console, focusing on "symbol unresolved" errors on X11 startup ! Yes, quite a few people had problems such as this (and several of them couldn't solve it):

 example 1: http://www.experts-exchange.com/Operating_Systems/Linux/Linux_Setup/Q_21549783.html
 example 2: http://article.gmane.org/gmane.linux.gentoo.user/134646
 The errors on X startup are:
 Symbol __glXgetActiveScreen from module /usr/X11R6/lib/modules/extensions/libdri.a is unresolved!
 Symbol __glXgetActiveScreen from module /usr/X11R6/lib/modules/extensions/libdri.a is unresolved!
 Symbol __glXActiveScreens from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
 These __glX symbols have *NOTHING* to do with the kernel. This is (to my mind) a X11 problem.
 Good news: you will solve these errors by fixing your config and/or by upgrading xorg-x11 from 6.8.2-rXYZ to 7.0.0-rc2 (also known as "modular X").
 So, first of all, verify your setup. Here's a short checklist to help you:
 1 - in kernel config - very simple: *enable* GART support as a module (CONFIG_AGP=m) with *no* specific chipset support. Enable PCI-express support. *Disable* DRM support (the ATI driver will provide it).
 2 - use the "xorg.conf" as listed on top of this page, or *at least* ensure that you load both "glx" and "dri" (in that order).
 3 - check that both "agpgart" and "fglrx" got loaded: "lsmod | grep fglrx".
 4 - try to start x11 as root (to rule out any rights issues)
 5 - try to use same kernel and ati driver versions as me.
 If you did these steps, and glxgears *still* doesn't work, *then* upgrade to modular X (caution: requires *quite a bit* of tweaking, but is well worth it !).
 I used the "modular X howto" by Donnie Berkholz: http://dev.gentoo.org/~spyderous/xorg-x11/migrating_to_modular_x_howto.txt
 Here are the software versions on which "xorg-x11 7.0.0-rc2" saved my DRI life -- kernel 2.6.14-archck5, x11-drivers/ati-drivers-8.19.10.

Some additional issues:

Authors

More users with working system to ask

Additional Resources

Retrieved from "http://www.gentoo-wiki.info/Acer_Ferrari_4005WLMi"

Last modified: Sun, 07 Sep 2008 06:34:00 +0000 Hits: 53,083