Summary
July 19, 2006 - upgraded to the new modular Xorg package setup for Xorg 7.0 and found that I could only run in 640x480 60 Hz using the i810 driver. Trying any other resolution just got a message in /var/log/Xorg.0.log saying "no mode of that name". Solution? Add these lines to the Monitor section of xorg.conf:
HorizSync 31.5-48.5
VertRefresh 59-75
Also, some of the kernel compile stuff below is now obsolete. I'm now running 2.6.16-gentoo-r12. For one, Gentoo now can use udev, so I no longer need devfs. Anyway, here's the current kernel .config.
Feb 18, 2005 - installed Gentoo Linux 2004.3 using stage3 tarball on my Dell Inspiron 1100 laptop. Followed the instructions in the Gentoo Handbook. The Gentoo LiveCD had drivers for the Broadcom 4400 built-in ethernet card, and the install went without a hitch. This was my first experience with Gentoo.
If you find any errors, or have feedback or additional info for this page, drop me a line at carl dot dellinux at meyerl0ewen dot net (replace the 0 with an o).
Installation choices: 2.6 kernel, ReiserFS filesystem, metalog system logger, vixie-cron cron daemon, GRUB boot loader, Gnome X desktop environment.
What works well:
- Broadcom BCM4401 100Base-T Ethernet (rev 01)
- Intel AC'97 Modem Controller / Conexant HSF modem
- Intel 82801 AC'97 audio
- Intel 82845G/GL chipset video, X at 1024x768x24
- Synaptics touchpad & USB mouse
- Netgear MA401 16-bit PCMCIA wireless card (added)
- CPU on-demand frequency governing (in battery mode)
What doesn't work:
- software suspend (haven't really worked on it)
- ACPI events (power button, lid, power status change, etc)
Compiling the Kernel
Here's my kernel .config for 2.6.11-gentoo-r8. Key points:
- Gentoo requires devfs, even though the kernel docs say it's obsolete.
- Need b44 module for ethernet card, although it's marked experimental.
- Turn off the "4k stacks" option under "kernel hacking", or the HSF modem modules will cause a kernel panic.
- Compile the sound module, but leave out the ALSA and OSS stuff and card drivers - the drivers in the alsa-driver package are more recent.
- Compile the Intel i915 AGP module for the graphics chipset.
- Include PS/2 mouse support for the touchpad.
- You'll need "PPP for async ports" if you plan to use the modem.
- Under Power Management, compile support for ACPI but not APM. The Inspiron 1100 does not support APM.
- Compile the P4 clockmod (Intel Pentium 4 Clock Modulation) and cpufreq ondemand governor modules (under Power Management) if you want CPU frequency throttling for a power-save mode.
- After each kernel compile:
- $ emerge alsa-driver
- $ hsfconfig
Broadcom BCM4401 Ethernet
dellinux root # lspci | grep BCM
0000:02:01.0 Ethernet controller: Broadcom Corporation BCM4401 100Base-T (rev 01)
This card has worked flawlessly for me with the "b44" driver (marked as experimental) in kernels 2.6.9 - 2.6.11.
Intel AC'97 Modem Controller / Conexant HSF modem
dellinux root # lspci -v | grep -A 6 Modem
0000:00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)
AC'97 Modem Controller (rev 02) (prog-if 00 [Generic])
Subsystem: Conexant: Unknown device 5422
Flags: medium devsel, IRQ 7
I/O ports at c400
I/O ports at c080 [size=128]
Capabilities: [50] Power Management version 2
dellinux root # lspci -nv | grep 1f.6
0000:00:1f.6 Class 0703: 8086:24c6 (rev 02)
The PCI ID (8086:24c6) is for the Intel AC-Link controller, which can control several different modems. The subsystem identifies it as a Conexant HSF modem. This modem had worked great previously in RedHat 9 using the drivers at linuxant.com. When I tried to emerge the "hsfmodem" package in Gentoo, it compiled the modules, but as soon as they loaded the kernel panicked. Same result if I downloaded the driver tarball and compiled it myself.
The solution (thanks Gentoo forums) is to recompile the kernel without 4k stacks (option found under "kernel hacking" in menuconfig). Now the modem works great at /dev/ttySHSF0 or /dev/modem (albeit only at 14.4Kbps with the free driver).
Intel 82801 AC'97 audio
dellinux root # lspci -v | grep audio
0000:00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM
(ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 02)
Steps I took to get sound running (following instructions in the Gentoo Linux ALSA Guide):
- - compiled kernel with sound as module but no ALSA, OSS or cards. alsa-driver package contains more recent drivers than the 2.6 kernel.
- - find driver name for my card at the ALSA Soundcard Matrix: intel8x0
- - edit /etc/make.conf
ALSA_CARDS="intel8x0"
"alsa" and "oss" in USE flags - $ emerge alsa-driver
! This must be re-emerged after every kernel recompile! - $ emerge alsa-utils
- - edit /etc/modules.d/alsa
alias snd-card-0 snd-intel8x0
alias sound-slot-0 snd-card-0 - $ modules-update
- $ /etc/init.d/alsasound start
- $ rc-update add alsasound default
- $ emerge alsa-oss
- $ alsamixer
unmute channels
Intel 82845G/GL chipset video
dellinux root # lspci | grep VGA
0000:00:02.0 VGA compatible controller: Intel Corporation
82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (rev 03)
Followed instructions in the X Server Configuration HOWTO. Make sure you've compiled the i915 AGP module. "Xorg -configure" generated a working xorg.conf.
Power management (ACPI and CPUFreq)
Most of what I did in this area came from the Gentoo Power Management Guide.
Power-save battery mode:
$ /etc/init.d/acpid start
$ rc-update add acpid default
$ cd /etc/runlevels
$ cp -a default battery
- create /etc/acpi/switch_runlevel.sh
- create /etc/acpi/events/pmg_ac_adapter, pmg_battery
- create /etc/acpi/actions/pmg_ac_adapter.sh, pmg_battery.sh
(The pmg_* scripts are part of the Power Management Guide). With this setup, the ACPI event for going on or off AC power should trigger a runlevel switch between the "default" and "battery" runlevels. It doesn't, and by watching /proc/acpi/event, it appears that no ACPI events are registered. From what I read, ACPI events don't work with the Dell Inspiron 1100. Maybe a new DSDT would fix it, but I haven't worked on it yet.
In the meantime, I can manually fake an ACPI event and force the system to decide which runlevel is appropriate using this command:
$ /etc/acpi/actions/pmg_battery.sh "battery/battery"
Until I can get ACPI events working, it's good enough to have this in /etc/conf.d/local.start, so it will go to the proper runlevel on boot, and have it in a script so if I do switch on or off AC power I can easily make it switch runlevels.
CPUFreq
If you don't see anything in /sys/devices/system/cpu/cpu0/cpufreq, you need to recompile your kernel with P4-clockmod module and do a modprobe p4-clockmod. To get any use out of it, you'll also need a governor besides "performance" - the one I use (and you'll probably want) is cpufreq-ondemand.
to enable ondemand CPUFreq switching:
$ modprobe p4-clockmod
$ modprobe cpufreq-ondemand
$ echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq
to watch the CPU frequency change in ondemand mode:
$ watch -n 1 grep \'cpu MHz\' /proc/cpuinfo
I created a cpufreq init script (with a configuration file)to switch to ondemand governor in battery runlevel and performance governor in default runlevel, and an hdparm init script (with config file) to set powersave options for the hard drive in battery runlevel.
Netgear MA401 16-bit PCMCIA wireless card
$ emerge pcmcia-cs wireless-tools
- recompile kernel with PCMCIA and card drivers (for the Netgear MA401 PC
Card, I needed the Hermes and Hermes PCMCIA modules (called orinoco and
orinoco_cs), under Wireless Networking.
$ cd /etc/init.d; cp net.eth0 net.eth1
- add "iface_eth1=dhcp" line to /etc/conf.d/net
- add ESSID to /etc/pcmcia/wireless.opts
$ service pcmcia start
Now that I won't be plugging in to the wired network all the time, I want something to automatically manage the status of my wired ethernet so it doesn't sit there trying to get a DHCP address when it's not plugged in. Fortunately, there's ifplugd:
$ emerge ifplugd