This page documents how to install and configure Mandriva Linux 2006 Download 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 :)
To be completed.
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
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 wireless drivers here and use
ndiswrapper -i /path/to/80211/BG/bcmwl5.inf
There is a bug with the 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.
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 dsdt.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
To be completed.
Bluetooth works extremely well, I havn’t had a problem with it yet.
First we install the necessary packages
urpmi bluez-utils bluez-pin libbluez1
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
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 may need to hit the “Connect” button underneath the mouse after 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: