Search:  
Gentoo Wiki

Toshiba_Satellite_M105

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

Contents

Introduction

This is a reference/guide for installing Gentoo on a Toshiba Satellite M105.

From what I learned while compiling this information, it is very similar to the Toshiba Satellite M100. The new Lenovo and Dell laptops (circa July 2006) also use similar technology. Check the hardware specs and take whatever is useful.

Note: Thanks to everyone who made updates to this page. Unfortunately, static electricity caused my Satellite to die an early death and I replaced it with a MacBook Pro. As a result, my time as primary editor of this page has come to an end and would LOVE to see someone else take up the cause. I will continue to make myself available to contribute, comment and help out as much as possible and anyone can contact me by leaving a comment on my talk page.

Thanks for all the fish --Ikeapimp 12:11, 13 March 2008 (UTC)

Status

Disclaimer

I'm a programmer, not an systems administrator. I'm sure that there are many things in this document are less than optimal or outright wrong. I have no personal attachment to these things, so feel free to correct me.

Just try to leave some of my witty comments in tact. At least I think they're witty. They're likely not. It's rather sad that this is how I entertain myself.

All my base are belong to me.

Hardware

Specs

The following is a highly abridged summary of Toshiba's specs:

Personal Observations About the Hardware

Processor

The system is equipped with an Intel Centrino Duo 1.66 GHz processor (that's a dual-core processor for those not paying attention). The listing below shows the first processor. The second is identical except for the 1st line:

File: /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 14
model name      : Genuine Intel(R) CPU T2300  @ 1.66GHz
stepping        : 8
cpu MHz         : 1667.000
cache size      : 2048 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc pni monitor vmx est tm2 xtpr
bogomips        : 3329.53

lspci

Code: Output of lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
02:00.0 Ethernet controller: Intel Corporation 82573L Gigabit Ethernet Controller
03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
05:06.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller
05:06.1 FireWire (IEEE 1394): Texas Instruments Unknown device 803a
05:06.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
05:06.3 Class 0805: Texas Instruments Unknown device 803c
Note: There are still a few things in this listing that are still 'Unknown' (such as the fingerprint reader). Feel free to contribute your $.02, as it may be a while before I get around to it

Installation Uber-QuickRef

This sections does not cover the (sometimes painful) details of installation, but rather it is a high level overview focusing on specific tweeks for this particular notebook. For full instructions on installing Gentoo, see The Gentoo Documentation Resources page.

Getting Started

You should now have a working Gentoo system with a hardwired network connection.

Your New make.conf

Start by editing your /etc/make.conf. Below is the one I'm currently using. You may want to remove things like the 'offensive' flag (I'm not easilly offended), and add flags for things I've trimmed out (like PHP). On the other hand you can just leave it as-is and deal with those details later.

File: /etc/make.conf
# The Basics
USE="
        X aalib acpi alsa apache2 bash-completion berkdb bzip2 cdparanoia cdr crypt
        cups curl doc dri dvd dvdr dvdread encode esd ethereal examples expat fam
        fbcon foomaticdb gdbm glut gmp gnome gpm gtk gtk2 gtkhtml guile idn ieee1394
        imlib lcms ldap libcaca libg++ libwww lm_sensors mozilla mplayer nas ncurses
        nis nls nptl odbc opengl oss pam pcmcia pcre perl postgres ppds python
        readline samba sdl slang slp spell sse sse2 ssl tcltk tcpd threads truetype
        ulibc unicode usb v4l vhosts wmf xine xinerama xml xmms xv zlib
"
# Codecs and Stuff
USE="$USE
        a52 aac asf dts dv ffmpeg flac gif jpeg jpeg2k mad mikmod mng mp3 mpeg ogg
        png quicktime speex theora tiff vcd vorbis win32codecs xvid
"
# Interesting and Experimental Stuff
USE="$USE
        dga directfb lirc nsplugin offensive shorten
"

# Stuff that may be important
USE="$USE
        elibc_glibc kernel_linux userland_GNU x86
"

# Local Use Flags
USE="$USE
        bitmap-fonts mjpeg nptlonly pmu rar real subtitles truetype-fonts
        type1-fonts udev
"

# Device and language tweaks
INPUT_DEVICES="evdev keyboard mouse synaptics"
VIDEO_CARDS="i810 i915 i940 intel"
LINGUAS="en en_GB en_US utf8"

# Compile flags for the Duo (I think I got them right)
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
# Gentoo recommends -j3, but I like to push things
MAKEOPTS="-j6"
# My personal feature preferences (apparently ccache helps too)
FEATURES="sandbox distlocks metadata-transfer parallel-fetch"
# only wait 2 seconds for package replacement rather then the usual 5 seconds
CLEAN_DELAY=2

# Use the unstable branch (my preference)
ACCEPT_KEYWORDS="~x86"
# The normal fetch location
SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage"

Now that we have a happy make.conf, we sync:

Code: The Big Sync
emerge --sync

This will take a while. Go get some coffee.

A Shiny New Kernel

Next we need to build ourselves the latest kernel. The kernel at the time of this writing (linux-2.6.17-gentoo-r2) does not yet have the correct wireless drivers, so specific configs and steps are needed to get them integrated. It took me a couple of evenings to get this working, so it may be best to learn from my pain. I verified this to work with kernels 2.6.17 through 2.6.17r2.

Get a fresh kernel source tree and the following:

Code: Building the Kernel
# Emerge the latest kernel stuff
emerge -uDN genkernel gentoo-sources

# Create a symlink to the new kernel (adjust as necessary)
cd /usr/src
rm -f linux
ln -s linux-2.6.17-gentoo-r2/ linux

# Build the kernel with the options below
genkernel --menuconfig all

Here's the kernel config options you want to make sure to set:

Linux Kernel Configuration: The Important Options
Processor type and features  --->
  [*] Symmetric multi-processing support
      Subarchitecture Type (PC-compatible)  --->
      Processor family (Pentium M)  --->
  [ ] Generic x86 support
  [*] HPET Timer Support
  (2) Maximum number of CPUs (2-255)
      Preemption Model (Voluntary Kernel Preemption (Desktop))  --->
  < > Toshiba Laptop support  ''(Note: You'd think you want this, but nooooo!)''
  < > Dell laptop support
  [*] Support for hot-pluggable CPUs (EXPERIMENTAL)
        ''(Note: Needed for ACPI Sleep States)''

Power management options (ACPI, APM)  --->
  ACPI (Advanced Configuration and Power Interface) Support  --->
    [*] ACPI Support
    [*]   Sleep States
    <*>   AC Adapter
    <*>   Battery
    <*>   Button
    <*>   Video
    < >   Generic Hotkey (EXPERIMENTAL)
    <*>   Fan
    <*>   Processor
    <*>     Thermal Zone
    < >   ASUS/Medion Laptop Extras
    < >   IBM ThinkPad Laptop Extras
    < >   Toshiba Laptop Extras
    (0)   Disable ACPI for systems before Jan 1st this year
    [ ]   Debug Statements
    [*]   Power Management Timer Support
    <*>   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)
            ''(Note: May be automatically selected - check the help)''
  APM (Advanced Power Management) BIOS Support  --->
    < > APM (Advanced Power Management) BIOS support
  CPU Frequency scaling  --->
    [*] CPU Frequency scaling
    [ ]   Enable CPUfreq debugging
    <*>   CPU frequency translation statistics
    [*]     CPU frequency translation statistics details
          Default CPUFreq governor (performance)  --->
    ---   'performance' governor
    <*>   'powersave' governor
    <*>   'userspace' governor for userspace frequency scaling
    <*>   'ondemand' cpufreq policy governor
    <*>   'conservative' cpufreq governor
    ---   CPUFreq processor drivers
    <*>   ACPI Processor P-States driver
    < >   AMD Mobile K6-2/K6-3 PowerNow!
    < >   AMD Mobile Athlon/Duron PowerNow!
    < >   AMD Opteron/Athlon64 PowerNow!
    < >   Cyrix MediaGX/NatSemi Geode Suspend Modulation
    <*>   Intel Enhanced SpeedStep
    [*]     Use ACPI tables to decode valid frequency/voltage pairs
    [ ]     Built-in tables for Banias CPUs
    <*>   Intel Speedstep on ICH-M chipsets (ioport interface)
    < >   Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
    < >   Intel Pentium 4 clock modulation
    < >   nVidia nForce2 FSB changing
    < >   Transmeta LongRun

Device Drivers  --->
  IEEE 1394 (FireWire) support  --->
    <M> IEEE 1394 (FireWire) support
    <M>   Texas Instruments PCILynx support  ''(Note: I'm only guessing here)''
  Input device support  --->
    <*>   Event interface  ''(Note: For touchpad configuration)''
  Network device support  --->
    Wireless LAN (non-hamradio)  --->
      [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
            ''(Note: De-select everything in this section except this entry)''
  Graphics support  --->
    <*> Support for frame buffer devices
    <*>   VESA VGA graphics support
            VESA driver type (vesafb)  --->
  LED devices  --->  ''(Note: Play with these, not sure if they do anything)''

Networking  --->  ''(Note: Make sure to do this last)''
  --- Networking support
  <M>   Bluetooth subsystem support  --->
  < >   Generic IEEE 802.11 Networking Stack

Let the kernel build, and edit grub.conf while you're waiting.

Code: Editing Grub
# Configure Grub
vi /boot/grub/grub.conf

Add the following lines to your grub.conf (substitute kernel name as needed).

Warning: Remember to keep a valid kernel in your conf in case this doesn't work
File: /boot/grub/grub.conf
title GNU/Linux 2.6.17r2
root (hd0,0)
kernel /kernel-genkernel-x86-2.6.17-gentoo-r2 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 udev video=vesafb:ywrap,mtrr:3,1280x800-16 vga=791 splash=silent
initrd /initramfs-genkernel-x86-2.6.17-gentoo-r2

Once your kernel is built, DON'T REBOOT! Not yet. Let's get the wireless drivers in place first.

Installing Wireless Drivers

See this guide.


Now, it's time to reboot:

# init 6

The Big Emerge

Now, update your whole system. This will take a while. While we're at it, we'll also add a few useful packages to the mix.

Code: The Big Merge
emerge -uDN system
emerge -uDN world
emerge -uDN acpitool acpi acpid cpufrequtils hibernate-script wireless-tools xf86-video-i810

Xorg

See this HowTo.

I'm not going to detail the steps of installing X (there's plenty of documentation on that elsewhere), but I will give you my xorg.conf. It's not perfect, but it works.

File: /etc/X11/xorg.conf
Section "ServerFlags"
	Option		"AllowMouseOpenFail"	"true"
EndSection

Section	"ServerLayout"
	Identifier	"IkeaPimp's Configuration"
	Screen	0	"Screen0"		0 0
	InputDevice	"Keyboard0"		"CoreKeyboard"

	InputDevice	"Touchpad"		"AlwaysCore"
	InputDevice	"USB Mouse"		"CorePointer"
EndSection

Section "Files"
	RgbPath		"/usr/share/X11/rgb"
	ModulePath	"/usr/lib/xorg/modules"

	FontPath	"/usr/share/fonts/misc:unscaled"
	FontPath	"/usr/share/fonts/75dpi:unscaled"
	FontPath	"/usr/share/fonts/100dpi:unscaled"

	FontPath	"/usr/share/fonts/Type1"
	FontPath	"/usr/share/fonts/TTF"

	FontPath	"/usr/share/fonts/corefonts"
	FontPath	"/usr/share/fonts/freefonts"
	FontPath	"/usr/share/fonts/sharefonts"

	FontPath	"/usr/share/fonts/Speedo"
	FontPath	"/usr/share/fonts/artwiz"
	FontPath	"/usr/share/fonts/cheapskatefonts"
	FontPath	"/usr/share/fonts/dejavu"
	FontPath	"/usr/share/fonts/lfpfonts-fix"
	FontPath	"/usr/share/fonts/lfpfonts-var"
	FontPath	"/usr/share/fonts/sgi-fonts"
	FontPath	"/usr/share/fonts/terminus"
	FontPath	"/usr/share/fonts/unifont"
EndSection

Section "Module"
	Load		"record"
	Load		"extmod"
	Load		"dbe"
	Load		"dri"
	Load		"glx"
	Load		"xtrap"
	Load		"freetype"
	Load		"type1"
EndSection

Section "DRI"
	Mode		0666
EndSection

Section "InputDevice"
	Identifier	"Keyboard0"
	Driver		"kbd"
	Option		"CoreKeyboard"
	Option		"XkbRules"		"xorg"
	Option		"XkbModel"		"pc105"
	Option		"XkbLayout"		"us"
EndSection

Section "InputDevice"
	Identifier	"USB Mouse"
	Driver		"mouse"
	Option		"Device"		"/dev/input/mouse2"
	Option		"SendCoreEvents"	"true"
	Option		"Protocol"		"IMPS/2"
	Option		"ZAxisMapping"		"4 5"
	Option		"Buttons"		"5"
EndSection

Section "InputDevice"
	Identifier	"TouchPad"
	Driver		"synaptics"

	Option	"Device"		"/dev/input/event1"
	Option	"Protocol"		"event"
	Option	"SendCoreEvents"        "true"
	Option	"SHMConfig"		"on"

	# --- Speed and Acceleration ---
	Option	"MinSpeed"		"0.60"
	Option	"MaxSpeed"		"1.10"
	Option	"AccelFactor"		"0.025"

	# --- TouchPad Size ---
	Option	"LeftEdge"		"40"
	Option	"RightEdge"		"900"
	Option	"TopEdge"		"40"
	Option	"BottomEdge"		"640"

	# --- TouchPad Edge Button Emulation ---
	Option	"LTCornerButton"	"0"
	Option	"LBCornerButton"	"0"
	Option	"RTCornerButton"	"0"
	Option	"RBCornerButton"	"2"

	# --- Scrolling ---
	Option	"VertEdgeScroll"	"1"
	Option	"HorizEdgeScroll"	"1"
	Option	"VertScrollDelta"	"20"
	Option	"HorizScrollDelta"	"20"

	# --- Tapping ---
	Option	"MaxTapTime"		"180"
	Option	"MaxTapMove"		"110"
EndSection

Section "Monitor"
	Identifier	"Monitor0"
	Option	"DPMS"	"true"
        # You way want to adust this. It works for me using e16
	DisplaySize 427 267
EndSection

Section "Device"
	Identifier  "Card0"
	Driver      "i810"
	VendorName  "Intel Corporation"
	BoardName   "Mobile 945GM/GMS/940GML Express Integrated Graphics Controller"
	BusID       "PCI:0:2:0"
        Option      "DRI" "true"
        Option      "SWcursor" "false"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultColorDepth 16
	SubSection "Display"
		Depth     16
		Modes "1280x800" "1024x768" "800x600" "640x480"
	EndSubSection
EndSection

Note that I haven't tried the dual-head thing or the SVideo out yet. If you have time and insight, please contribute.

(July 27): Added new sections to the above xorg.conf to take advantage of the Alps GlidePoint Touchpad. This includes edge-scrolling and button-2 tapping in the bottom right corner.

Misc Other Tweaks

ACPI

So far, I've only tweaked ACPI a little bit, but a little bit makes a big difference.

Slowing the CPU

This laptop has a lot of processing power - much more than I need in my day-to-day tasks. I prefer to run it in 'conservative' mode 'cause it makes a difference on both battery life and temperature.

When I run cpufreq-info, I get the following:

Code: Output of cpufreq-info
cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
  driver: centrino
  CPUs which need to switch frequency at the same time: 0
  hardware limits: 1000 MHz - 1.67 GHz
  available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
  available cpufreq governors: conservative, ondemand, powersave, userspace, performance
  current policy: frequency should be within 1000 MHz and 1.67 GHz.
                  The governor "conservative" may decide which speed to use
                  within this range.
  current CPU frequency is 1000 MHz (asserted by call to hardware).
analyzing CPU 1:
  driver: centrino
  CPUs which need to switch frequency at the same time: 1
  hardware limits: 1000 MHz - 1.67 GHz
  available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
  available cpufreq governors: conservative, ondemand, powersave, userspace, performance
  current policy: frequency should be within 1000 MHz and 1.67 GHz.
                  The governor "conservative" may decide which speed to use
                  within this range.
  current CPU frequency is 1000 MHz (asserted by call to hardware).

You can see the various power modes in the output. Choose the one that best suits you.

For my own convienience, I wrote a little script that I run when I first log in. I ought to put this in a start script somewhere, but I just havn't gotten around to it.

File: ~/bin/slowCPU
#!/bin/bash

if [ "$EUID" != 0 ]; then sudo $0; exit; fi

# --- slow down the cpu ---
/usr/bin/cpufreq-set --cpu 0 --governor conservative
/usr/bin/cpufreq-set --cpu 1 --governor conservative
Note: This script is not nesseccary, use provided script in /etc/init.d/cpufrequtils, configuation is in /etc/conf.d/cpufrequtils

Suspend to RAM

My preference when suspending the machine (a.k.a. hibernate, sleep, standby), is to drop to the S3 state: Hibernate to RAM. It's much faster than S4 (Hibernate to Disk), but uses a little more power when sleeping and tends to cause more problems when resuming (a well-known, often compained about issue). I've managed to get it to work about 95% of the time with the configuration shown below.

First, go into the BIOS and make sure the following is set. It seems to help ensure the screen doesn't remain blank on resume. (Note: my theory only)

Main-> Power On Display-> LCD+Analog RGB

Next, edit /etc/acpi/default.sh and modify the line starting with 'power)':

File: snippet from /etc/acpi/default.sh
case "$group" in
	button)
		case "$action" in
			power)	/etc/acpi/mySuspend
				;;

Then create a file called /etc/acpi/mySuspend (Don't forget to chmod 755 it):

File: /etc/acpi/mySuspend
#!/bin/bash

# --- speed up the cpu ---
/usr/bin/cpufreq-set --cpu 0 --governor performance
/usr/bin/cpufreq-set --cpu 1 --governor performance
sleep 1

# --- hibernate ---
/usr/sbin/hibernate-ram
sleep 1

# --- slow down the cpu ---
/usr/bin/cpufreq-set --cpu 0 --governor conservative
/usr/bin/cpufreq-set --cpu 1 --governor conservative

Cranking up the CPU to full speed before a suspend helps to speed up the suspend process. From other documentation I've read, it also seems to make the suspend (or resume, more correctly) process run much more reliably.



The following method for fixing the screen issue with suspend-to-ram (S3) works on my Satellite M100.

Using sys-apps/vbetool with >sys-power/hibernate-script-1.93 allows me to suspend to ram and have my display come back up.
Warning: The following instructions use ~arch packages


Code:
$ echo "sys-apps/vbetool ~x86" >> /etc/portage/package.keywords
$ emerge -av vbetool hibernate-script


File: /etc/hibernate/common.conf
### vbetool
# EnableVbetool yes
# RestoreVbeStateFrom /var/lib/vbetool/vbestate
# VbetoolPost yes
# RestoreVCSAData yes


File: /etc/hibernate/ram.conf
# The following vbetool settings help with > 50% of laptops.
EnableVbetool yes
#VbetoolPost yes


Note: It is very important that "VbetoolPost yes" be commented out or removed from both files as this causes the video chip to processes the BIOS section of it's memory which screws everything up.


--Jdmulloy 21:05, 9 November 2006 (UTC)

Annoyances and ToDos

Keyboard Mapping

I much prefer the right-Alt to be a Control key. To get that working, add this to your .xinitrc somewhere before the exec command:

File: ~/.xinitrc
xmodmap -e 'keycode 113 = Control_R' 
xmodmap -e 'add Control = Control_R' 

ToDo

There's a number of things not in this doc. If you have the tima and inclinition, please add/edit whatever you can.

References

The following is a list of pages that were helpful in the compilation of this page.


Pages about the Synaptics / Alps GlidePoint Touchpad:

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

Last modified: Tue, 22 Jul 2008 22:07:00 +0000 Hits: 19,575