Installation of Linux (Fedora Core 3)
on a Sharp Actius MM20 laptop.

By David Cafaro <dac(at)cafaro.net>

UPDATES:

March 28th, 2006 - Please go here, Latest Laptop Updates, to find out all the latest updates. There are/will be some good ones, very good ones...

April 18th, 2005 - New update, I narrowed down the issue with 2.6.10 and later kernels causing the screen to lock. The AGP driver for these systems has regressed even further, so not only can you not run AGP 2x or AGP 4x, you can't even run AGP period. Adding Option "BusType" "PCI" to the device section forces the AGP card to PCI mode. In this mode DRI works again. See below in the how-to for how my xorg.conf file is now configured. Also if you see this same issue please add to the bug I filed here Bugzilla #4512 "

Februayr 8th, 2005 - OK, have an update, forgot to mention that I'm running in SELinux targeted policy with enforcing on.

Februayr 7th, 2005 - No update, I just finaly got around to writing this :-). Be sure to read the wireless section and the 3D section, as there are important changes in there vs the Fedora Core 2 install.

Hardware Information:

If you are curious about the hardware on this laptop, you can take a look at my Review And Install for Fedora Core 2
I'm not going to go back over that information on this page, thanks.

The Install:

Stage 1 of the install: Base Install

Well, not much has changed with Fedora Core 3 and the initial install on the MM20. As before you still must specify this command:

linux acpi=on i8042.nomux

at the install command line. So remember not to hit enter when the installer boots untill after you type the above in. If you don't fedora will not find your mouse!

From there you can follow the normal install method, the only other thing you must remember is that when you get to the grub install section, you need to choose to edit advanced bootloader options. Then on the next page you must again enter in the "i8042.nomux" to the boot line. Also make sure the installed was smart enough to also add the "acpi=on", if not also add that to the line. Also if you are interested when you get to the security point in the install, I set SELinux Security mode to enabled (enforcing), the system seems to run fine with the targeted policy. Once the install finishes you should be good to go.

Stage 2 of the install: Wireless Networking

Ok now that the base system is on, time to get some features working. First up is that wireless card. Though the drivers are installed you need to go grab the firmware off of this site:

http://prism54.org

Go to the Firmware section and download the 1.0.4.3.arm file. Rename the file isl3890 and place it in the /lib/firmware directory (NOTE: this is different than in FC2 or from what the www.prism54.org site says!). After that you can manually startup the network card using ifconfig and iwconfig. I haven't managed to get Fedora's ifcfg-eth1 scripts to setup and activate the network card correctly. Instead I wrote the following script that sets everything up and activates the wireless card for my home network:

#!/bin/bash
# Dry start to load firmware
/sbin/ifconfig eth1 up
# Wait a sec to make sure it's good and loaded
sleep 2
# Now really load it
/sbin/iwconfig eth1 essid MYNET Managed channel 6 key VERYLONGKEYCODE
/sbin/ifconfig eth1 192.168.2.36 netmask 255.255.255.0
/sbin/route add default gw 192.168.2.1

Better way to use wireless (this will probably work in FC2 as well, just double check the paths):
Now if you are going to be using xwindows predominatly I found this awesome little tool:

http://www.bitbuilder.com/wifi_radar/

With this you can have your laptop auto sync to a prefered wireless network on boot or you can use the GUI tool to scan for a network and connect to it or connect to your favorite network you have prelisted. Simply put this thing ROCKS! It was originaly coded with Gentoo in mind, so I had to change some of the default locations to more closely fit Redhat/Fedoraisms.

I placed the wifi_radar.conf file here in the /etc directory (/etc/wifi_radar.conf) and mine has the following info in it (sanitized of course):

[DEFAULT]
interface = eth1
auto_profile_order =
speak_up = False
scan_timeout = 5
icon_file = /usr/share/pixmaps/wifi_radar.svg

From the above you can see that I placed the wifi_radar.svg file in the /usr/share/pixmaps directory. Most of the other information will be filled out by the gui tool, though you can enter it by hand. Here is an example of what it might look like once it has been filled out some:

[DEFAULT]
interface = eth1
auto_profile_order = essidfavorite,essidsecondfavorite
speak_up = False
scan_timeout = 5
icon_file = /usr/share/pixmaps/wifi_radar.svg

[essidfavorite]
key = longwep128keyishere
use_dhcp = yes

[essidsecondfavorite]
key = longwep128keyishere
use_dhcp = yes

Now for the actual program/script wifi_radar.py I placed that in the /sbin directory. The first section of the script must be changed to match up with a Fedora Core 3 install. Here is what I used:

#!/usr/bin/python
# wifi_radar.py
# A wireless profile manager for X1000 Linux
#
# Ahmad Baitalmal <ahmad@baitalmal.com>
# This software is under the GPL license
import time, os, sys, re, ConfigParser
####################################################################################################
# Defaults, these could be different for your distro.
CONF_FILE = "/etc/wifi_radar.conf"
IWLIST_COMMAND = "/sbin/iwlist"
IWCONFIG_COMMAND= "/sbin/iwconfig"
IFCONFIG_COMMAND= "/sbin/ifconfig"
DHCP_COMMAND = "/sbin/dhclient"
ROUTE_COMMAND = "/sbin/route"
SAY_COMMAND = "/usr/local/bin/say"
# More defaults, these may get overridden by values found in the conf file
ICON_FILE = "/usr/share/pixmaps/wifi_radar.svg"
INTERFACE = "eth1"
SCAN_TIMEOUT = "5"
SPEAK_UP = False
####################################################################################################

The default file from his install uses gentoo defaults, and these just won't work on FC3, so the above corrects that. For my own convienence I also added a sudoer line for this program. This script must be run as root to work correctly, so to ease my own use I added this to my /etc/sudoers file:

myusername ALL=NOPASSWD:/sbin/wifi_radar.py --config

This allows me to run the GUI tool without having to type in any passwords. It's a slight security risk, but the convienence outways the drawbacks for me in this situation. I also added the following lines to /etc/rc.local:

/sbin/ifconfig eth1 up
/bin/sleep 3
/sbin/wifi_radar.py

This has the wireless script scan for preferred wireless networks on boot, and if one is available, goes ahead and sets everything up. I didn't notice one thing though, it will not connect to a preffered wireless network that doesn't broadcast it's ESSID. So if you have broadcast ESSID turned off on your wireless network, you will have to use the gui tool to connect. With that done, all you have to do is follow his instructions for running his program and you should be good to go. I added a quick launch to my toolbar just to make it quick and easy to find network to connect to.

Stage 3 of the install: Synaptics Touchpad

Well, the base install gets the touchpad working. In Fedora Core 3, the synaptics driver is included so that's all you have to do. You may want to still tweak the setting using the same options from before:

Section "InputDevice"
   Identifier "Mouse0" 
   Driver "synaptics" 
   Option "Device" "/dev/input/mice" 
   Option "Protocol" "IMPS/2" 
   Option "LeftEdge" "1700" 
   Option "righted" "5300" 
   Option "topped" "1700" 
   Option "bottomed" "4200" 
   Option "fingerless" "25" 
   Option "FingerHigh" "30" 
   Option "MaxTapTime" "180" 
   Option "MaxTapMove" "220" 
   Option "VertScrollDelta" "100" 
   Option "misnamed" "0.06" 
   Option "MaxSpeed" "0.12" 
   Option "AccelFactor" "0.0010" 
   Option "SHMConfig" "on" 
  Option "ZAxisMapping" "4 5" 
EndSection


These get the basics set, but you will probably have to adjust it to your own liking. I'm still figuring out my favorite settings, but these seem to work pretty well.

Stage 4 of the install: 3D Acceleration

The default install with FC3 and the 2.6.9 series kernels works fine, BUT if you plan on updating to the 2.6.10 kernels (so that you can actualy poweroff on a shutdown) you MUST disable DRI (Directo Rendering Infastructure) or AGP. If you don't your xwindows will lock!

To use the disable DRI method (which I don't recommend) just find the following and comment it out like I did to disable DRI:

Section "Module"
     Load "dbe"
     Load "extmod"
     Load "fbdevhw"
     Load "glx"
     Load "record"
     Load "freetype"
     Load "type1"
     Load "synaptics"
#    Load "dri"
EndSection

To use the disable AGP method (which I recommend, it provides Hardware 3D acceleration via PCI instead!) just add the following to the device section of your xorg.conf file:

Section "Device"
        Identifier  "Videocard0"
        Driver      "radeon"
        VendorName  "Videocard vendor"
        BoardName   "ATI Radeon Mobility M6"
        VideoRam    16384
        BusID       "PCI:1:0:0"
        Option "BusType" "PCI"
        Option "DynamicClocks" "on"
EndSection

Stage 5 of the install: Harddrive performance

I went to the /etc/sysconfig/harddisks config file and enabled the "EIDE_32BIT=3" option, once again to get more performance out of it. It already defaults to DMA so nothing to be done there.

Stage 6 of the install: Power management/Battery life

Ok this is a laptop and it needs to be mobile. I wanted to try and get as much power out of this tiny thing with it's tiny battery as I could. To start with in the /etc/fstab file I added "noatime" to all the main partitions to try and reduce the number of times the harddrive gets activated during non-active moments. Harddrive motion burns battery power. Next on the list was to get some of the processor throttling tricks to work. At least in this version longrun does work correctly, though cpuspeed init.d script still doesn't. I disabled cpuspeed from running at boot. There are two things you need to do to get longrun working on this laptop. First off you need to load the kernel modules cpuid and msr. I did this using the following init.d script to load these at boot (/etc/init.d/loadcustmod ):

#!/bin/sh
#
# loadcustmod Load Custom Modules Needed
#
# chkconfig: 2345 10 99
# description: Loads modules needed that don't load automatically
#
/sbin/modprobe cpuid
/sbin/modprobe msr
# End of Script

With longrun it's now possible to throttle down the CPU and put the CPU into economy or performance mode. To do this I added the following script which is activated at boot time and by ACPI whenever there is a change in A/C adapter state:

#!/bin/sh
#
# Powerstatus: Check Laptops Powerstatus (AC Power)
#
# chkconfig: 2345 99 99
# description: Checks AC Power status and adjusts CPU accordingly
# /etc/init.d/powerstatus

status=`/bin/cat /proc/acpi/ac_adapter/AC/state | /bin/awk {'print $2'}`

case $status in
"on-line" ) /usr/sbin/longrun -c /dev/cpu0 -m /dev/msr0 -s 0 100
/usr/sbin/longrun -c /dev/cpu0 -m /dev/msr0 -f performance
/usr/sbin/longrun -c /dev/cpu0 -m /dev/msr0 -t 0
exit 0
;;
"off-line" ) /usr/sbin/longrun -c /dev/cpuid -m /dev/msr0 -s 0 14
/usr/sbin/longrun -c /dev/cpu0 -m /dev/msr0 -f economy
/usr/sbin/longrun -c /dev/cpu0 -m /dev/msr0 -t 0
exit 0
;;
esac
echo "Something didn't work right."
exit 1

# End of Script

This will basically limit the CPU to 600 MHz and economy mode whenever on battery power and the full 1000 MHz and performance mode when on AC Power. To get this script to run when the power adapter changes you need to add the following to the /etc/acpi/events directory. I created the adapter.conf file which handles the power mode switching as well as a power.conf that handles the power button (which will shutdown the laptop if the power button is pressed and held):

# This is the /etc/acpi/events/power.conf ACPID configuration file
event=button/power.*
action=/sbin/shutdown -h now

# This is the /etc/acpi/events/adapter.conf ACPID configuration file
event=ac_adapter.*
action=/etc/init.d/powerstatus


So now the system automatically switches to powersave mode when the ac-adapter is unplugged and performance mode when the ac-adapter is plugged in. Very nice.

Stage 7 of the install: Suspend Modes.

At this point I do not have any suspend modes working. Many things are close, but I just haven't gotten enough time to work it out. Hopefully I'll get this licked in a month or so. Just don't have enough spare time to mess with it :-(.

Stage 8 of the install: The Dock.

Well this was easy. Plug in the AC-adapter to the dock, plug the docks USB cable to a USB port on my desktop (Running Fedora Core 1) and turn it on. Edited the /etc/fstab folder to include the partitions I wanted to mount (the MM20 showed up as the /de/sda device) and then start mounting. That's it. Works just like any other USB storage device. No problems at all so far.

Conclusion:

Well, I've pretty much got everything working the way I want to now. The only things left are to get some better battery life out of it, firgure out what got broken in 3D acceleration, and to get some form of suspend mode to work. Even without these things working, I still love this laptop!

References:

These are the sites that I used to help figure out how to get this laptop to work. Thank you to the authors and contributors on these sites for adding their knowledge for all to share!

Wireless Stuff:
http://prism54.org/
http://prism54.org/forums/viewtopic.php?t=72
http://www.bitbuilder.com/wifi_radar/

MM10 (Older Model) Laptop stuff:
http://www.linux-laptop.net
http://web.mit.edu/jjl/www/mm10/ 

Other MM20 installs:
http://www.blackindustries.biz/~castongj
http://spr.mahonri5.net/mm20.php
http://burdell.org/~pitr26/

Touchpad Information:
http://w1.894.telia.com/~u89404340/touchpad/index.html

And my Favorite LUGs that always share their knowledge:
http://www.calug.com
http://www.trilug.org