Using FreeBSD on AMD64 Laptops


FreeBSD has tier-1 support for the AMD64 platform. Unfortunately, the mobile scene is a bit different. The available options are nice, powerful machines, and sohuld be a perfect environment for FreeBSD.

Quick Links

Fukuda Nobuhiko's acpi_ppc driver (CPU Speed Scaling) -
My patch to xacpim to monitor acpi_ppc - xacpim-0.1-acpi_ppc.diff
My patch to xacpim to monitor cpufreq - xacpim-0.1-cpufreq.diff

I recently purchased a Gateway 7422GX laptop from Best Buy. Since Gateway recently purchased eMachines, they also released a eMachines laptop which is identical, save the markings. I believe the M6811 is the same as the 7422GX. They even have the same case. The important system characteristics are as follows:

This laptop was actually quite easy to set up with FreeBSD. It has a nice feel, and I would recommend it to anybody looking for an Athlon64 laptop to run FreeBSD on.
Click here to read my experience.

My professor, John Franco also purchased (much earlier) a Compaq R3000. This system was exceptionally mean and is still an ongoing saga of attempting to thwart the manufacturer's design. The specs are here:

Click here to read my experience.

Updated: 16 February 2005

Getting the Gateway 7422GX (or eMachines M6811) Working

This laptop installation was rather succesful the first time. I read the AMD64 laptop horror stories on the mailing lists and decided to bring along a copy of FreeBSD 5.3-RELEASE to test-boot in the systems. I found this one at CompUSA and (for less money) at Best Buy.

Problem 1: Wireless Card

The first thing to note is that this laptop has a Broadcom BCM4306 wireless card. This will not work under FreeBSD/amd64. In addition, in order to use it under anything besides Windows, you will need the NDIS wrapper which basically runs the windows (NDIS) driver under Linux or FreeBSD. Personally, I think these cards are crap, in addition to the Centrino's Intel PRO Wireless cards. If you bought it for the Wi-Fi card, you're out of luck. Go get a good Atheros or Prism based NIC. I recommend the SMC EliteConnect SMC2536W-AG that supports 802.11a/b/g as well as WPA and WME. They are pretty inexpensive and have a 150mW amplifier on them which gives excellent range and reliability. This will use the ath(4) driver. You'll need the ath_hal(4) module as well. This is in -CURRENT. NOTE that you must be using -CURRENT for this card (ath(4) driver) to be supported in amd64.

The PRISM-based cards as well as the Agere/Orinoco/Lucent cards should work as well. These two types will work under 5.3-RELEASE with the wi(4) driver.

Problem 2: Hard Drive Corruption

I don't know about anybody else, but upon getting FreeBSD installed on this laptop, it began to exhibit stability issues wrt the hard drive controller. I had to turn of write caching for the ata(4) controller with:
sysctl hw.ata.wc=0
Just place that in your /boot/loader.conf and it should be alright. This is a pretty common thing for me across the board with various ATA controllers. If it is corrupting your drive, try turning this off. If not, good for you. WC is a feature that is supported by some drives to improve performance.

Problem 3: ACPI

This is not really a problem. Some directions tell you to disable ACPI by default on the Athlon64 platforms. You can safely enable it on these models. You can even remove the atpic device from the kernel build.

Problem 4: Cool'n'Quiet

At this point, I realized that I was getting roughly an hour of battery life by just leaving my machine idle. Naturally, as a mobile university student, this was unacceptable. I did a bunch of research and found that the frequency scaling technology (power management) on this laptop was not the PowerNOW! that older Athlon XP's used. AMD developed something new named Cool'n'Quiet. This seems to be an implementation of the new ACPI 2.0 spec for power management and what we've been calling 'throttling'.
NEW For those of you who want to see your CPU speed switching, I wrote a patch for xacpim (ports/sysutils/xacpim) which monitors the ACPI PX states and prints out the CPU frequency in the status line. Grab it here: xacpim-0.1.patch.

FreeBSD's sys/dev/acpica/acpi_cpu.c doesn't support this yet. Rather, it supports the older PowerNOW! method (which is a completely different module of ACPI code). From my view the new method looks like a cleaner implementation. I searched high and low for information on writing my own driver. Instead I came across this site:
FUKUDA Nobuhiko has written a driver for this power management already. I was quite happy with this, and managed to get it installed on my system. It runs very well and handles the frequency scaling in the background. The CPU speed gets throttled up with the load, and goes back down when idle. NOTE: On -CURRENT it complains about NO_MAN, you can safely ignore those warnings.. Now I get roughly 2-2.5 hours of battery life on a full charge with average use.

Problem 5: ATI Radeon 9550

This Radeon card works very well with one exception. It does not support DRI in xorg, however (none of the 9500 and up are supported). Apparently the Radeon 9550 is like a slower clocked 9600. The previous versions of this laptop had the 9600 apparently. Frankly, I didn't mind since I don't typically use the GL fatures of the card. I'll gladly take the performance hit for some extra battery life.

ATI does provide a linux amd64 driver. Perhaps with a little prodding here. We can get them to compile a FreeBSD one. Remember, NVidia provides freebsd drivers.

The Multi Card Reader

This laptop also has a card reader built into it. Apparently this has support for four different card formats. I was able to test it with a couple CF (CompactFlash) cards and some Sony MemoryStick cards. This is probably one of the most handy surprise features of the laptop. It is just wired to the internal USB.

DVD-RW Drive

The DVD-RW drive works very well for burning CD-R's. I can burn at 24X without making any coasters. Haven't tested the DVD+/-RW (yes, both) capability yet.

Onboard 10/100 Ethernet

Has a VIA Rhine onboard ethernet controller. Simple, generic, seems to work quite well. I don't use it anymore since I got the ath(4) card working. The ath(4) changes have since been moved into -CURRNET.

Compaq R3000 or Hewlett-Packard zv5000(us)

There is a whole series of Compaq and HP laptops which are nearly identical minus the external casing. I would recommend not touching any of them with a 20-foot pole. These laptops are bad news and are going to be hell to get working. You'll have to maintain a number of patches to RELENG_5 or -CURRENT. My professor has one, and can't return it, so we've been working on getting it running under FreeBSD 5-STABLE.

Problem #1: 5.3-RELEASE halts on boot

The first problem that happens with this laptop is that the system will freeze on boot. Most users won't be able to boot the install CD in order to use it.

The kicker is this: the fix is in -STABLE, however you want to get FreeBSD on the laptop first, so that you may download the latest RELENG_5 stable branch. Never fear, Kelly Black is here! Kelly has built a mininst CD from the stable tree which will boot these laptops far enough to get FreeBSD installed on them. You can get that here:
Just burn this image to a CD and boot it. When you get to the loader, be sure that you boot with ACPI disabled. Either select that number from the boot menu, or go to the loader console and type:
set hint.acpi.0.disabled="1"
Now you may boot the laptop and run the install tool. Install the base system from the CD image so that the updated files are installed on your system. Reboot, then install cvsup-without-gui. You should have a /usr/share/examples/cvsup/stable-supfile. If you do not, you can grab that one. Read the instructions therein and upgrade your sources to the latest RELENG_5 branch.
Do not yet rebuild at this point

Problem #2: Hard Drive Lockups

I had quite some difficulty getting this system to be stable enough to build world on. I had to turn of write caching and rate the hard drive down to ATA33:
hw.ata.wc=0 needs to be in loader.conf.
atacontrol mode 0 UDMA33 BIOSPIO needs to be run to turn down the drive speed. This increased stability significantly, and was the only way I could use the laptop.

Problem #3: PCI Stability issues

Another big problem is that the CardBus controller is unreliable and the PCI devices are as well (might be related to above problem). There seems to be some bugginess to the built in timers (ACPI timers). In addition, for some reason certain pci devices do not seem to be initialized by the ACPI BIOS. There are three patches that must be applied: