Linux on Laptops

Sponsored by LinuxCertified Inc.

Home | New | Models | Palmtops | Components | Discussion | Submit        

Malik's Laptop Quick Web Page __/


Installing Mandrake 10.1 on Notebook D480W



General Hardware Specifications :

Laptop bought on the web, from France. See links section below. Common case for Notebook, Sager 4760, Kenitec, I-Note models.
Clevo/Kapok Motherboard with Phoenix BIOS 4.0 Release 6.0 (very few options available :-( ...). ACPI v1.0b support.
Mandrake Official Download Edition 10.1, with 2.6.10-1mdk custom-compiled kernel.

Hardware Components Status Under Linux Notes
Pentium 4 Northwood 2,4 GHz (non-mobile processor) on mPGA 478B socket
works
No special procedure required during installation
SiS chipsets : SiS 961/2 SMBus Controller,
5513 for IDE (ATA 133 capable),
SiS645DX for Host & Memory & AGP, SiS962 for ISA bridge
works No special procedure required during installation.
(Try noapic, apic=no, nolapic boot parameters if you get black screen or freeze after boot...)
17" WXGA screen - 16:10 (1440x900 at 60 Hz) - SuperWide option
works Select Generic LCD Display in Installer
 ATI Radeon 9000 Mobility M9 - 64 Mo DDR
(AGP 4x, 1 DDC output for dual display, 1 S-Video)
works No special procedure required during installation
SiS 7012 Audio Controller
works No special procedure required during installation
2x512 Mo DDRAM at 333 MHz
works No special procedure required during installation
HITACHI-IBM 60 Go ATA 100 HDD
7200 rpm - 8 Mo cache
works No special procedure required during installation
3"5 Floppy Drive works No special procedure required during installation
1 Network RJ45 - Realtek 8139 chip
works No special procedure required during installation
Internal 56k Modem AC'97 chip
does not work
No special procedure required during installation
DVD-CDRW Drive - TEAC DW224EA - 24x speed
works No special procedure required during installation
1 IrDA, 1 PCMCIA not tested
No special procedure required during installation
Misc ports : 1 PS2 for mouse/keyboard, ,
1 mini-FireWire, 2 USB 1.0, 1 USB 2.0, 1 serial, 1 parallel
works No special procedure required during installation
4400 mAh LION Battery (14800 mV)
poor quality
No special procedure required during installation
Z-Star Corp. USB camera
not working
No special procedure required during installation

Basic Installation of Mandrake 10.1 :

I tried few other distros like  Aurora and Slackware, but the only one where I get the best of this hardware is Mandrake.  I plan to try Ubuntu or Debian later, but for the moment, I must admit that I really like having the last optimizations for my boxes. So after installation, I compile my own kernels, and tune my box as far as technical possibilities are offered to me. And everybuddy knows that Linux is perfect for this (highmem support, cpufreq, acpi, alsa etc...)
Mandrake fully recognizes many of actual hardware, even some very recent stuff... It selects drivers during install and at next reboot, there is nothing to do (ok almost nothing to do...). More, RPMs packages are an easy way to manage the huge quantity of available free softwares. Last Mandrake 2.6 kernels are the only ones for the moment, that are able to make my Wacom Tablet work correctly. Official 2.6.10 sources do not work...

To obtain Mandrake distro, you can download the free Edition, buy it in a "computer magazine", buy a Power Pack, install it from FTP site (I tried last time, it works well, but it can be very long if you don't have an ADSL connection...). The best and the fastest is to get files with BitTorrent. See in the Mandrakelinux website download section.

Installing Mandrake is pure simple. I started with a 7.2 few years ago, and the install process is much easier each time, so that I don't have to be there to make my friends try GNU/Linux ;-)...
A newbie will let the STANDARD install go on, and let the partitionning and other stuff be automatically made. The EXT3 filesystem is used by default, that's why I always do an EXPERT install.  Press F1 key at boot to get a prompt where you can type : # expert, if you want to try...
I choose language, keyboard type, and select my primary partition /, /home and SWAP. For / and /home I use the ReiserFS filesystem, my favorite one. After that, I select only basic packages, cause I do all my updates with FTP sources, so there's no need to full my box...
As a bootloader, I choose LILO on MBR, as I have always done... For X server, I use Xorg with Radeon driver, and choose Flat Panel for my TFT screen. The native resolution 1440x900 is not present in the list, so I take 1440x1050, it does not matter, I change it at next reboot... One may configure network during install, but I prefer to do it "by hand" with config files that I have backed up (ifcfg-eth0, NFS config files, Samba config files...)
Note that you may have problems during first steps of install, because of APIC controller (beware not ACPI!!). In this case you'll have to try many options like apic=off, noapic, nolapic, nofirewire, nousb, etc... Got to find out on the web for more options...

Post-install tweaks :

DISPLAY :
We want to use the real native resolution 1440x900 at 60 Hz (don't try to "overclock" the 60 Hz refresh rate !!).
We get the right Modelines with gtf software, like this, in a console :

# gtf 1440 900 60
and it send us the correct modelines as output :

Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync

Let's copy this line into "Monitor Section", in /etc/X11/xorg.conf (or XF86Config if you still use XFREE 4.3...), and add Mode "1440x900_60.00" in Screen/Display Section (See my xorg.cong file below).
# init 3 and # init 5 to restart X server, and you have the right resolution. You can check this with xvidtune soft, which will give you the resolution, and the refresh rate...
# xvidtune

HARD DRIVE :
hdparm
allow me to tweak IDE drives. I check its status and infos with :
# hdparm -i /dev/hda (or -I option for more verbose output)
What interest me is to know about the DMA and 32 bits modes :
# hdparm -cd /dev/hda give me :
/dev/hda :
 IO_support   =  0 (32-bit)
 using_dma    =  1 (on)
and it is the same for /dev/hdc drive, so I add a line in /etc/rc.local :
hdparm -c1 /dev/hda /dev/hdc
to activate 32 bits mode at boot, for each drive.

ACPI :
One thing very important to check on laptop is Power Management. If you let your system heat increase, without a functional fan, it will simply burn. The fan must start few minutes after booting, the time it reaches a "limit" temperature. My system is going up to 60°C, and then the fan activate, until it goes down to 50°C and then the fan stops... When at 60°C again, it activate again an so on...

I would say as soon as your Linux is installed, you must be sure that either APM or ACPI is running. Type in a console :

# ps aux | grep acpi
# ps aux | grep apm to check this. If not, install acpid (or apmd) package. It should be started at boot, take care of scrolling messages during boot time...

Unfortunately Power Management is not the same on each machine (some have APM bios, some ACPI, some can use both...), and even if the ACPI functions work on GNU/Linux systems, one must say it is not yet very usable on many laptops, comparing other systems like W$$$ (not this name here...!!!). We'll see this with Software Suspend tuning...
For basics, I only need to know temperature, battery level and it is ok for me... On other machine, you can for example, get and control the fan speed, put battery alarm ; on some Mobile processor, you can tune processor throttling or P-states, but not in my case...
I use ACPI instead of APM, because both work on my laptop, and ACPI implementation offers more interface options than APM.
You can try the use of ACPI with the option acpi=on on boot (put it in /etc.lilo.conf append line).
Now I always compile my kernels with ACPI on, APM off.
Modules for fan, battery, ac, thermal are loaded at start. My fan module is not working, so I can not get and control the fan speed (I would have liked...)
I made few aliases to be more useful... (put them in /home/~/.bashrc file)

alias batst='cat /proc/acpi/battery/BAT0/state'
alias batinf='cat /proc/acpi/battery/BAT0/info'

I also installed acpitool software which gives me :
# acpitool
 Battery #1     : charged, 100.0%
 AC adapter     : on-line
 Thermal info   : ok, 58 C
I have all I need to know : temperature, AC on/off, and battery status battery charge (in % and absolute value in mAh).

I also have an access to Cooling Mode tuning :

# cat /proc/acpi/thermal_zone/THM0/cooling_mode
gives the actual state of cooling, which can be "active" (default) or "passive". But what are these modes...?
In big lines, I would say that active mode is for a "performance use" of the box, with fan running like a truck, and passive mode is for a "bit less performance" but "energy saving" use, then the fan don't need to run too much... I tried I really think one can win some precious minutes with passive mode.
A small alias to make it easier (to put in ./home/~/.bashrc):
alias cooling_mode='cat /proc/acpi/thermal_zone/THM0/cooling_mode'

So I thought it would be cool, to automatically go into passive mode when on battery. We'll see this later at laptop_mode section...

URPMI :
Something I first do, when install and basic tweakings are finished, is to define my FTP RPM sources...
It is really much easier to get softwares, kernel-sources, etc...

I use the easyurpmi.zarb.org website, which is very simple to use and understand. Choose Mandrake 10.1 Official, select your FTP locations, and just copy the given lines into a console, to add media (main, contrib, updates, jpackage, plf). You can add COOKER sources, if you want to make few tests with last xorg version for example...


Additional features :

SOFTWARE SUSPEND :
As told beyond, Software Suspend (and now Software Suspend 2,  for highmem kernels...) is not very useful for the moment, but it can sometimes works. ACPI sleep modes 3 and 4 put my machine in kind of "stanby mode", but never resume it, so it is a bit annoying I would say...
The Software Suspend do a Suspend-to-disk "stanby". It writes an image of the system (on swap partition for example), so that it can resume later, with no long boot process time, and you come back to the state you left the machine, with your opened consoles, softwares etc...

Coool !... but there are problems too. If you have DRI enabled in you xorg.conf file (wheter you use radeon or fglrx driver...), it will never correctly resume. So if you want to use it, you will have to choose between DRI and Power Management : not very cool...
The same for USB. You'll have to stop usb services and restart them after resuming, no quite pratical, when you have an USB tablet, an USB printer etc...
I highly recommend to use special patched kernel for Mandrake at this address :

http://mandrake.contactel.cz/people/svetljo/mandrake/kernel/RPMS/

I took the last kernel-swsusp2-source-2.6.10.mm.s.18mdk and compiled it...

Another way to cool down you computer is to use CPUfreq and laptop_mode capabilities...

CPUFREQ :
Even my CPU is a non-mobile processor, I can adjust frequency (and then cool the machine). The only thing is to have a CPU which allows that (P4, P4-Mobile, AMD Power Now...), CPUfreq options enabled in kernel configuration (to get the right module (p4-clockmod for mine)).
If you do not want to adjust the CPU speed on-the-fly, you can let the system manage it with powersave, performance, or on_demand kernel modules. They consider the load of the processor and adjust it for more power saving or more performance. Personally, I use a 2.6.10-1mdkcustom kernel (HighMem, CPUfreq, ACPI, ALSA sound system), and I prefer change my CPU speed on-the-fly...
The comman line :
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
gives me the frequencies at which the CPU can run, in Hz... (300 MHz to 2400 MHz, by 300 Mhz steps...)

I simply made aliases again to be able to change CPU frequency on-the-fly (Note that frequencies are not 300000 Hz but 299992 Hz etc...)

alias 2400='echo -n "2399940" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed'
alias 2100='echo -n "2099947" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed'
alias 1800='echo -n "1799955" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed'
...etc... Just have to type "1200" in a console to make it work at 1200 MHz, cool...!
alias CPU_CLOCK='echo CPU Speed = $(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) Hz' (to get CPU speed in Hz)

The soft radeontool is a soft for tuning Radeon Video Card, which allows to enable/disable DDC (DAC??) output, and TFT backlight, and then save a bit power. I do not use TFT backlight option, because when I close  the  TFT screen, there's a button automatically lights off backlight...
# radeontool dac
returns the actual status of DDC output
# radeontool dac on/off
activate/deactivate it...

The last alias allow me to get many infos :
alias lapinfo='echo && CPU_CLOCK && echo && cooling_mode && echo && acpitool && echo && batst && echo && radeontool dac'

So, when I type lapinfo in a console, I get CPU speed in Hz, cooling mode, Temp, battery/AC status, battery charge in % and mAh, DDC status. See output here...
The only problem I noticed, is that my battery, which was 4400 mAh full charge at begining, is today (16 months later...) about 3200 mAh, which represents a big loose of power.
I used to stand 1hour 50 min on battery (because of 7200 rpm HDD, non-mobile CPU, and big TFT screen...), and today it is about 1 hour 20-30 min... It is not very important for me, as I most use it as a desktop box,  often on AC adapter. But it is important to never forget to discharge it many times in a month, to keep it longer... One must recognize that resellers put low quality battery in their machines to make them cheaper... (You can not have everything working at top level... Murphy Law ;-))
 
LAPTOP_MODE :
The other optimization is laptop_mode, which make HDD "idle" by spinning down disk, to make system box cooler. And it works ! I did not notice any increase of battery lifetime, but the fan is not running as much as it does when on AC adapter. The small script I made to record temperature evolution has shown that the fan cycles are very "spaced in time" comparing "normal use". The only thing is that disk spinning up and down can slow a bit the machine, but you can tune parameters to find the best way to use it. At least you can try it, just to test...
To make it work, just download laptop-mode-tools which installs everything for you. If it works, laptop_mode is automatically launched when AC is offline, you can check it with :
# cat /proc/sys/vm/laptop_mode which gives you 0 or 1 (or 2) as ouptut. 0 when laptop-mode is off and 1/2 when on...
The paramaters are stored in /etc/laptop-mode/laptop-mode.conf file. You can tell the machine what maximum CPU speed to use, idle timeout to use, hdparm power saving options if you HDD support Power Management...
Note 1 : becareful, it seems there are different laptop_mode files : /sbin/laptop-mode, /usr/sbin/laptop_mode, for script, and /etc/sysconfig/laptop-mode and /etc/laptop-mode/laptop-mode.conf...
I checked mine and I use /usr/sbin/laptop_mode and /etc/laptop-mode/laptop-mode.conf as script and config file.
I put both in my config files section at the end of this page, so that you can see my parameters...

Ok, let's go back to work. Knowing that an # echo 0 > /proc/acpi/thermal_zone/THM0/cooling_mode put the machine in active mode (and a 1 put in passive mode...), I just had to had these lines in the right place of /usr/sbin/laptop_mode file.
In the config file /etc/laptop-mode/laptop-mode.conf, there is a line to also activate laptop_mode when TFT screen is closed : LM_WHEN_LID_CLOSED=1.
It is the LID acpi event, which needs the "button" acpi kernel module.
Quite interesting, but when lid is closed, I would also like my CPU speed automatically decrease to minimum value, so I just :
# echo 299992 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed to go to this frequency, always in the laptop_mode script.
Note 2 : I wanted the CPU speed to go back to the same it was before lid closing event, but the few tests I made did not work : either is stay at minimum speed when opening again the TFT, or do not go to minimum speed when closing. So when opening TFT again, I just have to put "by hand" : 2400 thanks to my aliases as shown in CPUFREQ section higher in this page... sorry but I am not a coder, so if anybudy got the soluce, thanks to send it to me...;-)
Note 3 : If laptop_mode is launched as soon as init 2 level (see with KSysv soft), acpi lid event is not in open state, so CPU speed goes to 300MHz, and laptop_mode is also activated. Then I removed it from level 2 init, start it at level 3, and it works fine...

So it is very simple, I resume :
1) When on AC, laptop_mode does not run, and we are in active cooling mode. When I unplug the box, laptop_mode is actived, and also passive cooling mode, for more power saving.
2) When I close the TFT screen (either AC adapter or battery), lid event is detected, laptop_mode is actived, and CPU speed goes down to 300 MHz. Just have to remember, that if I want my box to compile a kernel as faster as possible, I must not totally close the TFT screen, to not push the switch acpi lid button... ;-)
Everything is commented in the files (search between words "COMMENTS" and "END COMMENTS", and you'll see the three modified and commented lines).

MICROCODE UPDATE :
The microcode in Intel IA32 processors can be updated. It only corrects few internal bugs, but it is worth to do it, cause even if you encounter problems, a reboot cancel it (it is not like a BIOS flashing)
In fact, you must load the microcode at each boot sequence. In your kernel config, you must have the option "Processor Type & Features/ dev/cpu/microcode" enabled as module, and get the microcode update utility at : http://www.urbanmyth.org/microcode

You load the module with :
# modprobe microcode

then you can do the update with :
# microcode_ctl -u
That's all... You can unload the module with :
# rmmod microcode

I add these lines in /etc/rc.local, to have the updated microcode at each boot :
modprobe microcode
microcode_ctl -u
rmmod microcode

Note that the updated microcode file /etc/microcode.dat is installed with microcode utility package. You also have an /etc/init.d/microcode_ctl file to do this like a service at boot time, but it does not unload the module, so I prefer to deal with /etc/rc.local file.


XORG CONFIG :
For the touchpad, nothing to modify, it works very well... (I don't use it a lot actually)

My USB Graphire2 Wacom Tablet used to work very well, but with the first 2.6.x kernels series, it was horrible. Few geeks told about it on web forums, but it was to hard to solve. I tried many many tests, but it was not as usable as it used to be, so... We wait and now, Mandrake kernels (and only them!!!) make it work again...
I just have to check that usbmouse is not loaded at the same time that wacom module, cause they conflict.
So I edit /etc/rc.local again and put the lines :

rmmod usbmouse wacom
modprobe wacom
and it works fine...

I put my xorg_fglrx.conf file as an example.

I just tried the official fglrx ATI driver, just to see if TV output was working : it is not...
Radeon driver works fine too, and I never tried Xinerama functions. I'll do it soon, I guess...
3D acceleration is fully ok, on both fglrx and radeon driver. 3D games run very well and there is no display problem when gaming.

Unresolved issues :
- For me, the problem with Supend-to-disk is the most important, cause it is very practical to shut down and resume in few seconds when you work on laptop...
When it finally accepts to suspend fine, the USB and DRI resume bug is here, so it is still not very usable for all...
- I would like the webcam to work fine, but there is no driver (try the spca5xx ?)

Configuration files :
Here are some configuration files from my box :
My lapinfo output
/etc/laptop-mode/laptop-mode.conf
/usr/sbin/laptop_mode
xorg_radeon.conf
xorg_fglrx.conf
lsmod
lspci


Contact informations :

My GNU/Linux website (in french only, sorry...) at :
http://linux.experience.free.fr
Mail me at :
malik.laichaoui@free.fr

Links :
Mandrakelinux : http://www.mandrakelinux.com
Easyurpmi (full of FTP sites for RPMs) : http://easyurpmi.zarb.org
Laptop_mode webpage : http://www.xs4all.nl/~bsamwel/laptop_mode/
Software Suspend website : http://softwaresuspend.berlios.de/
Microcode Intel IA32 : http://www.urbanmyth.org/microcode
Web site where I bought my laptop, in France : http://www.pcw.fr
"Special" kernels : http://mandrake.contactel.cz/people/svetljo/mandrake/kernel/RPMS/
Linux on laptop website : http://www.linux-laptop.net
TuxMobil website : http://tuxmobil.org



Linux on Laptops is copyright © 2004 linux-on-laptops.com
Privacy Statement  Contact us at linuxonlaptops (at) yahoo.com
  Advertise on linux-on-laptops.com

No Warranties: This information is provided "as is" without any warranty, condition, or representation of any kind, either express or implied, including but not limited to, any warranty respecting non-infringement, and the implied warranties of conditions of merchantability and fitness for a particular purpose. All logos or trademarks on this site are the property of their respective owner. In no event shall linux-laptop.net, linux-on-laptops.com, or any directors, trustees, associates, or employees thereof be liable for any direct, indirect, special, incidental, consequential or other damages howsoever caused whether arising in contract, tort, or otherwise, arising out of or in connection with the use or performance of the information contained on this web site.