Linux (Debian) on the Compaq r3460us (r3000 series)

2005-04-20
In contrast to my last laptop where I had to figure most things out on my own, this time I had several nice guides to help me along. Using Ted Kisner's writeup, I got pretty much everything working with a very minimum of hassle.

See: http://cmb.phys.cwru.edu/kisner/linux/compaq-r3000/

Many of the files here are based on or shamelessly swiped from Ted's writeup. I did this not to take credit, but simply have them handy in case I do something dumb like write a swsusp2 file over my root partition (again).
I installed a base Debian system with the latest Beta Sarge installer and dist-upgraded to Sid with kde3.4 packages from Experimental.
I played with 64bit Fedora Core 3 (it sucked), Debian pure 64 (worked well enough) but finally decided to stick with a 32bit distro, for several reasons:

  • My favorite browser (Opera) does not at this time have a 64bit build.
  • This laptop is incapable of addressing 4GB of RAM anyway, so I didn't see the point.
  • Many of the multi-media apps that I use have routines that are hand-optimized for a 32bit processor. In this case, performance is worse using a 64bit OS.
  • I didn't feel like fighting vmware in a 32bit chroot.

Original install April, 2005

OS: Debian Sid

Kernel: I initially installed using 2.4.10, but am currently struggling to get some sort of software suspend working, so I'm now running 2.6.12-rc3.
2.4.10 needs a patch to get the touchpad working, 2.4.12 does not.
As with my last laptop the biggest thing lacking on this machine is full ACPI support.

X: XFree86 4.3

Hardware specs

As best i can tell, these are the parts inside. There are tons of different 3000 series notebooks, so YMMV.
Display: WXGA 1280x800
CPU: Athlon 64 3200+ (1024 KB cache)
RAM: 512MB
Video: GeForce4 440 Go 64M
hda: TOSHIBA MK6025GAS (60GB)
hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache, DMA (not sure of RW speed)
WiFi: wireless G

Extra stuff: Svideo out, 1 firewire port, 2 usb 2.0, 1 usb 1.0, lame smartmedia/sd/mmc card reader that doesn't work under Linux

For the curious, here's the output from the 'hwinfo' tool

Details

Kernel

In contrast to some people's approach of building modules for everything, I prefer to build a small kernel with only those modules that I need and adding new modules when/if I need them. Debian's kernel-package makes this a snap. So, here's my .config for 2.6.13.1

Power Management
The basics work. I have battery status, cpu throttling and the fan comes on and shuts off when it should. While I can get the display to blank using DPMS, I'm unable to programmaticly dim the LCD backlight. The hardware fn keys do work, however.

CpuFreq

I've actually been quite happy without any userspace daemon. I make sure to either load or build in these modules:
powernow-k8
cpufreq_powersave
cpufreq_ondemand

On boot, a:
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor does the rest with acceptable latencies.
Others might prefer a different governer. I recommend 'cat'ing the files in /sys/devices/system/cpu/cpu0/cpufreq/ to get an idea of how things work.

Video: Nvidia GeForce 4 MX440 go (64MB Video RAM)
Works fine, including 3d acceleration. It's pretty fast, but this card does not have a pixel shader (important only for some games) I'm using ver. 7174 of Nvidia's binary driver:
http://www.nvidia.com/object/linux.html
Twinview works, although it's a bit picky and I haven't gotten everything dialed in as nicely as I'd like. I recommend reading through Nvidia's README to learn about all the nifty stuff this thing can do.

Tv-out using the S-Video connector works fine.
My xorg.conf
Note: I had to pass 'NVreg_Mobile=0' to the nvidia module when it loads.
The Debian Way to do this is place the following in /etc/modprobe.d/nvidia:
options nvidia NVreg_Mobile=0
and run the update-modules command.

Keyboard
The keyboard has a nice feel, and it's possible to get all the buttons working. In KDE, under Regional & Accessibility -> Keyboard Layout, choose Compaq Internet Keyboard (13 Keys) and you should be set.

Touchpad
Debian users will need to install the xfree86-driver-synaptics package.
Works fine. Tap to click works, as does the little scroll thingie on the side.
The switch above the touchpad to toggle it on and off does work, since it is a hardware switch.
For Kernels < 2.6.11, you'll need the alps touchpad patch
It's nicely configurable; here's my device section from xorg.conf:
(Parameters swiped from Ted, who swiped it from a mailing list ;-) )

Section "InputDevice"
	Identifier	"Alps Touchpad"
	Driver		"synaptics"
	Option		"CorePointer"
	#Option		"Device"		"/dev/input/event1"
	#Option		"Protocol"		"event"
	#Option		"Device"		"/dev/input/event1"
	Option		"Protocol"		"auto-dev"
	Option		"LeftEdge"		"60"
	Option		"RightEdge"		"830"
	Option		"TopEdge"		"70"
	Option		"BottomEdge"	"650"
	Option		"FingerLow"		"25"
	Option		"FingerHigh"		"30"
	Option		"MaxTapTime"		"180"
	Option		"MaxTapMove"		"110"
	Option		"EmulateMidButtonTime"	"75"
	Option		"VertScrollDelta"	"50"
	Option		"HorizScrollDelta"	"50"
	Option		"MinSpeed"		"0.2"
	Option		"MaxSpeed"		"0.5"
	Option		"AccelFactor"		"0.01"
	Option		"EdgeMotionSpeed"	"40"
	Option		"UpDownScrolling"	"1"
	Option		"TouchpadOff"	"0"
EndSection

You'll notice the commented out lines. In 2.6.10, I used /dev/input/event1 and protocol "event". That changed in 2.6.12 and caused me lots of gnashing of teeth.

Built in 10/100 NIC:
Works fine using the kernel 8139cp driver.

Built in wireless G card:
You'll need ndiswrapper or Linuxant drivers to use the built in wifi. It works well for me, including the little blue led behind the WiFi logo. I expected ndiswrapper to be an ugly kludge and I'm pleased with how reliable it is and how cleanly it integrates with my system.

Do note that the windows drivers do not support putting the card into RFmon mode, so you'll be unable to do any, um, wardriving with this card.

Here are the drivers that work for me: bcmwl5a.tar.gz
Simply untar them somewhere and run: ndiswrapper -i bcmwl5a.inf to install them.

Sound:
Auto-detected and works nifty. I'm using the ALSA intel8x0 driver.
I use the lineakd package to make the hardware volume/mute buttons do what I want.

DVD/CDRW
No probs.

USB
Works, but occasionally doesn't detect when devices are plugged in. Plug it in again and it picks it up.

PCMCIA
Works for 16bit cards. I swiped this /etc/pcmcia/config.opts from Ted. It adds some IO ranges without which PCMCIA did not work.

FireWire Port
No probs.

Modem
Who cares?

Troublemakers

There's a built in Smartmedia/SD/MMC card reader but because Texas Intstruments is lame, it's totally useless under Linux. I'd rather have the space it takes up filled in with another PCMCIA slot...

Summary

Considering I got this thing for <$1000 US including a printer, wireless G router and a 256MB Lexar flash Mp3 player, I couldn't be happier. It's fast, quiet, stable and has a gorgeous display. It's also heavy as a tank ;-)

I'll end this with the paragraph that I wrote on my last Linux laptop writeup because considering how little work I had to do to get things working, it applies now more than ever:

Thanks to all the random folks whose archived conversations on Google Groups helped me to figure all this stuff out. Thanks to those who took the time to create writeups like this one. And, of course, thanks to all the coders, writers and idealists who make all this cool Free Software.

References


Ted's page again, because it was so darn helpful:
http://cmb.phys.cwru.edu/kisner/linux/compaq-r3000/
Mailing lists: (the first is more active, but I've seen some good tips on both lists.) The beginnings of a wiki:
http://prinsig.se/weekee/index.php/Main_Page

Files

Here are all the files, referenced in one place:
Updates, corrections, feedback: troy at zenux.net
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.