This page documents how to install and configure Mandriva Linux 2006 (x86 or x86_64) Power Pack edition on the Acer Ferrari 4005WLMi
I assume no responsibility for what you do with this information. It is in no way official, or supported. It may break your computer, or delete your data. What you do with these instructions, you do at your own risk. Having said that, I created these instructions from doing it myself, and I don’t have any problems with my Ferrari :)
Mandriva is very good at detecting most hardware at install, one thing it doesn’t catch is the Graphical Interface.
See the following screenshots for a brief graphical how-to, more detailed information will be in the “Xorg Configuration” section of this guide.
The Wired LAN adapter should be detected at install, if not it uses the tg3 module.
You can load this module on boot by putting it on a new line in /etc/modprobe.preload
grep "^tg3$" /etc/modprobe.preload || echo "tg3" >> /etc/modprobe.preload
The Wireless LAN adapter is supported by using ndiswrapper
32Bit Installation
urpmi ndiswrapper # You did leave Windows XP installed, right? ndiswrapper -i /mnt/win_c/windows/80211bg/bcmwl5.inf modprobe ndiswrapper
If you didn’t leave Windows XP installed, you can download the 32Bit wireless drivers here and use
ndiswrapper -i /path/to/80211/BG/bcmwl5.inf
64Bit Installation
urpmi ndiswrapper wget http://www.omgwtfbbq.com.au/ferrari/files/acer/80211g-x64.zip unzip 80211g-x64.zip ndiswrapper -i "WL_T60H906(8.0.10.0,XP64_logo)/bcmwl5.inf" modprobe ndiswrapper
There is a bug with both 32bit and 64bit wireless - all iwconfig (and possibly other wireless commands) need to be issued twice and commited after each issue in order to be accepted by the wireless adapter. I have written a simple iwconfig wrapper in bash which overcomes this bug, you can download it here and install it like so
wget http://www.omgwtfbbq.com.au/ferrari/files/mandriva/iwconfig-wrapper.sh mv /sbin/iwconfig /sbin/iwconfig-real mv iwconfig-wrapper.sh /sbin/iwconfig chmod +x /sbin/iwconfig
You can now use one of the many console or gui methods to configure your wireless adapter, below I will demonstrate how to configure it through mandriva’s network scripts to start on boot.
To make sure the ndiswrapper module is loading on boot, put an entry in /etc/modprobe.preload for it:
grep "^ndiswrapper$" /etc/modprobe.preload || echo "ndiswrapper" >> /etc/modprobe.preload
Then edit /etc/sysconfig/network-scripts/ifcfg-wlan0 to look something like the following, where WIRELESS_IWCONFIG is the arguments to give the iwconfig wrapper.
In my example, I want to connect to essid “YourApSSID” using infrastructure(managed) mode on channel 6 with an ascii WEP encryption key of “12345”.
Full documentation & examples can be found in man iwconfig
DEVICE=wlan0 BOOTPROTO=dhcp IPADDR="No IP" NETMASK="No Mask" BROADCAST=255 ONBOOT=no MII_NOT_SUPPORTED=yes WIRELESS_IWCONFIG="mode managed essid YourApSSID channel 6 enc s:12345" PEERDNS=yes NETMASK="No Mask" IPADDR="No IP" DHCP_CLIENT=dhclient NEEDHOSTNAME=yes PEERDNS=yes PEERYP=no PEERNTPD=no
To start the adapter, press the wireless button on the front of the notebook and watch /var/log/syslog for the corresponding setkeycodes message.
Once its enabled, type ifup wlan0 and your settings will be applied.
/var/log/syslog: Wireless Adapter Disabled: Dec 15 22:05:58 Ferrari kernel: atkbd.c: Use 'setkeycodes e056 <keycode>' to make it known. Dec 15 22:05:58 Ferrari kernel: atkbd.c: Unknown key released (translated set 2, code 0xd6 on isa0060/serio0). Dec 15 22:05:58 Ferrari kernel: atkbd.c: Use 'setkeycodes e056 <keycode>' to make it known. Dec 15 22:06:04 Ferrari kernel: atkbd.c: Unknown key pressed (translated set 2, code 0xd5 on isa0060/serio0). Wireless Adapter Enabled: Dec 15 22:06:04 Ferrari kernel: atkbd.c: Use 'setkeycodes e055 <keycode>' to make it known. Dec 15 22:06:04 Ferrari kernel: atkbd.c: Unknown key released (translated set 2, code 0xd5 on isa0060/serio0). Dec 15 22:06:04 Ferrari kernel: atkbd.c: Use 'setkeycodes e055 <keycode>' to make it known.
Note: The wireless LED will not light up until there is wireless traffic.
This bug only affects 32bit installation, x86_64 is NOT affected in any way and you can skip this step
There is a bug with the shipped kernel 2.6.12-12mdk (and possibly all 2.6 kernels) which causes the clock to run twice as fast as it should, but is easily fixed by a one line patch created by Akira Tsukamoto akira-t@s9.dion.ne.jp to the kernels io_apic.c
Original Linux Kernel Mailing List Message
--- linux-2.6.12-12mdk/arch/i386/kernel/io_apic.c 2005-12-12 09:12:35.618819736 +0800
+++ linux-2.6.12-12mdk/arch/i386/kernel/io_apic.c 2005-12-14 21:47:03.761509224 +0800
@@ -1787,7 +1787,7 @@
* might have cached one ExtINT interrupt. Finally, at
* least one tick may be lost due to delays.
*/
- if (jiffies - t1 > 4)
+ if (jiffies - t1 > 4 && jiffies - t1 < 16)
return 1;
return 0;
To Apply the patch and recompile your kernel do the following
urpmi kernel-source-2.6 cd /usr/src wget http://www.omgwtfbbq.com.au/ferrari/files/mandriva/io_apic.patch patch -p0 < io_apic.patch cd linux make && make modules_install && make install
You may then want to edit /etc/lilo.conf and make 2612-12mdkcustom your default boot image.
After installation, you can look at the output of dmesg and notice the following error messages:
Dec 12 01:09:30 Ferrari kernel: APIC error on CPU0: 00(40) Dec 12 01:09:34 Ferrari kernel: ACPI-0352: *** Error: Looking up [Z00I] in namespace, AE_NOT_FOUND Dec 12 01:09:34 Ferrari kernel: search_node c20f6e20 start_node c20f6e20 return_node 00000000 Dec 12 01:09:34 Ferrari kernel: ACPI-1138: *** Error: Method execution failed [\_SB_.BAT1._BST] (Node c20f6d20), AE_NOT_FOUND
These are specifically due to a buggy ACPI implementation shipped with the computer. Luckily for me Lakin Wecker had already figured out how to patch BIOS version S3A21 for his Ubuntu 64bit HOWTO however it broke bluetooth & wireless when used on S3A23, so I made one which can be found at the ACPI4Linux Project Page or locally here
The information below applies only to BIOS version S3A23, if you do not have this version I strongly recommend you do NOT follow these instructions
Using the ASL that I made for S3A23, I compiled it using the Intel IASL Compiler and then performed two commands to patch it into my existing mdkcustom initrd that was created from the apic clock patch.
wget http://www.omgwtfbbq.com.au/ferrari/files/mandriva/Acer-Ferrari-4005WLMi-S3A23.asl.gz gunzip Acer-Ferrari-4005WLMi-S3A23.asl.gz iasl -on Acer-Ferrari-4005WLMi-S3A23.asl echo -n "INITRDDSDT123DSDT123" >> /boot/initrd-2.6.12-12mdkcustom.img cat DSDT.aml >> /boot/initrd-2.6.12-12mdkcustom.img lilo -v && rebootin 2612-12custom
Once you’ve rebooted look in your /var/log/syslog for the following lines to indicate that you’ve succesfully installed it:
Dec 14 21:44:27 Ferrari kernel: ACPI: Looking for DSDT in initrd... found (at offset 0x7376a). Dec 14 21:44:27 Ferrari kernel: ACPI-0294: *** Info: Table [DSDT] replaced by host OS
You should now be able to use `acpi -V` to read battery status, or read files from /proc/acpi respectively
[root@Ferrari ~]# acpi -V
Battery 1: charged, 100%
Thermal 1: ok, 44.0 degrees C
AC Adapter 1: on-line
*** after pulling out the power cord ***
[root@Ferrari ~]# acpi -V
Battery 1: discharging, 99%, 02:36:22 remaining
Thermal 1: ok, 44.0 degrees C
AC Adapter 1: off-line
With the ATI packages from Mandriva Club/Power Pack, it doesn’t seem like Direct Rendering works due to some unknown symbols in /usr/X11R6/lib64/modules/dri/fglrx_dri.so, speficially _glapi_add_entrypoint and _glapi_add_entrypoint2.
The solution is to download the latest ATI driver installer and create your own distribution package - in this case, Mandriva RPM.
First make sure you have the kernel-source package installed for your kernel, so if you have kernel-2.6.12.14mdk-1-1mdk you also need kernel-source-2.6-2.6.12-14mdk.
Goto ATI’s website and download the “ATI Driver Installer” for either 32-Bit or 64-Bit Notebooks.
Make the file executable, and run it as root either in X (using 2d display driver) or in console
chmod +x ati-driver-installer-8.20.8-x86_64.run ./ati-driver-installer-8.20.8-x86_64.run
Select Generate Distribution Specific Driver Package, agree to the license and select Mandriva Packages then Mandriva/2006
Click Continue and it will generate two RPM files for you to install, then exit the installer.
The packages should have been created in the directory you were in when you executed the installer.
My x86_64 build looks like this [root@Ferrari ati]# ls -hl -rw-r--r-- 1 root root 13M Dec 26 14:31 ati-8.20.8-1mdk.x86_64.rpm -rwxr-xr-x 1 root root 55M Dec 9 00:12 ati-driver-installer-8.20.8-x86_64.run* -rw-r--r-- 1 root root 612K Dec 26 14:31 dkms-ati-8.20.8-1mdk.x86_64.rp drwxr-xr-x 9 root root 4.0K Dec 26 20:03 fglrx-install/ Get rid of old ATI driver installs: [root@Ferrari ati]# rpm -e ati dkms-ati ati-kernel-2.6.12-12mdk Install the new packages [root@Ferrari ati]# rpm -ivh ati-8.20.8-1mdk.x86_64.rpm dkms-ati-8.20.8-1mdk.x86_64.rpm
If you chose to use the proprietory ATI drivers that came with PowerPack when you installed, then you can simply startx and verify your installation below. If not you will have to setup your xorg.conf manually or by running XFdrake
** after running startx ** [root@Ferrari ~]# grep fglrx /var/log/Xorg.0.log And look for the following lines: *snip* (II) fglrx(0): Kernel Module Version Information: (II) fglrx(0): Name: fglrx (II) fglrx(0): Version: 8.20.8 (II) fglrx(0): Date: Dec 6 2005 (II) fglrx(0): Desc: ATI FireGL DRM kernel module (II) fglrx(0): Kernel Module version matches driver. *snip* (II) fglrx(0): DRI initialization successfull! *snip* (II) fglrx(0): Using XFree86 Acceleration Architecture (XAA) (II) fglrx(0): Acceleration enabled (II) fglrx(0): X context handle = 0x1 (II) fglrx(0): [DRI] installation complete (II) fglrx(0): Direct rendering enabled
If you see something like the above, success!
You can also run glxinfo in X to see if Direct Rendering is on.
Bluetooth works extremely well, I havn’t had a problem with it yet.
First we install the necessary packages
urpmi bluez-utils bluez-pin
After installing these packages, set a unique bluetooth PIN by editing /etc/bluetooth/pin
Note: Some devices can handle upto 5 or 6 digits, while most only handle 4 digits
echo "1234" > /etc/bluetooth/pin
Restart the bluetooth service, hit the connect button on the underside of your mouse and it will connect.
You can watch /var/log/syslog to make sure it connects - you should see something like this
[root@Ferrari ~]# service bluetooth restart [root@Ferrari ~]# tail -f /var/log/syslog Dec 22 01:28:41 ferrari kernel: Bluetooth: HIDP (Human Interface Emulation) ver 1.1-mh1 Dec 22 01:28:41 ferrari hidd[4393]: Bluetooth HID daemon Dec 22 01:28:41 ferrari hidd: hidd startup succeeded Dec 22 01:29:16 ferrari hidd[4393]: New HID device XX:XX:XX:XX:XX:XX (HP Three Button Mouse)
Since then bluetooth has been working upon boot with no extra work. I simply make sure that the bluetooth button is “on” and move the mouse.
Note: You should only need to press the “Connect” button underneath the mouse when you turn on bluetooth for the first time.
Works out of the box by hitting Fn + F4 HOWEVER you can NOT return from suspended mode.
When you turn the power back on, you will be presented with a black screen and are forced to do a hard power off
This can’t be very good for the filesystem, so I recommend you don’t do it.
The Texas Instruments FlashMedia 6in1 Card Reader does not work under linux
TI have made it as difficult as possible for anyone to create an open source driver
however there is a project underway which can be found at http://tifm21.berlios.de
This guide was written by “Jordan T” jordant@blue-ferret.com.au
A big “Thank You” to:
I wish cancer upon: