F3Sa is a gaming/DTR notebook from ASUS. The machine has 15.4" (glossy) LCD screen (native resolution: 1280x800), Intel Core 2 T7500 (2.2GHz) processor, 2GiB of RAM (2x1GiB - may vary between models), ICH8M chipset, ATI Mobility HD 2600 with 512MiB of dedicated RAM (yes, it's not a typo) with extern VGA, DVI-D and TV-Out connectors, 250GiB SATA harddisk, DVD recorder (support DL media), 1Gbps ethernet port, Intel Wireless WiFi Link 4965AGN card, built-in web cam and microphone, digital audio output (with usual headphone and mic connectors), memory card reader, 1 firewire port, 3 USB ports.

Installing Debian/Unstable on Asus F3Sa

Last updated: 28 Mar 2008

General Hardware Specifications of ASUS F3Sa:

Component Status Notes
Intel Core 2 CPU Works Frequency and voltage throttling with acpi_cpufreq.
15.4" LCD Display Works Panel data available from EDID, so the video driver should automatically pick up the correct video mode. Brightness control is handled by the firmware and works without any special driver.
ATI Mobility Radeon HD 2600 Works To fully exploit the card ATI's binary driver is required. Open source driver radeonhd is now capable of handling this card; XRandR is supported but the driver is not accelerated.
250GiB SATA HD Works Chockes on NCQ. Requires tuning to avoid excessive load/unload cycles.
DVD Recorder (DVD-RAM, DVD±R/±RW, DL) Works Tested with growisofs and various media.
eSATA Unknown External eSATA port is handled by a JMicron controller; Linux AHCI driver supports hotplug on this device, so it should work. I don't have any hardware to test though.
Integrated network card Works Requires atl1 driver, which is included in kernel 2.6.22 and higher (see below for installation).
Intel Wireless WiFi Link 4965AGN Works Driver is not yet included in mainline kernels, but Intel supplies it on this site. The driver is open source and does not require the binary-only regulatory daemon (firmware is required!)
Internal 56k Modem Unknown Not tested...
Intel High-Definition Audio Doesn't Work The device is recognized by the driver but there's no sound. Bug has been reported upstream, currently waiting for a response.
Touchpad Works Standard Synpatics touchpad.
USB Works Tested with various devices (mice, a keyboard, a printer, flash drive)
Firewire Unknown Firewire cards is recognized, but I don't have hardare to test it.
Bluetooth Works Hardware is attached to USB controller and is recognized, but I don't hardware to test it.
Card Reader Works The reader supports multiple formats, though I tested only with a SD card.
Webcam Works Mostly works with this driver. Webcam is produced by Syntek and is attacched to the USB bus.

PCI Hardware

-[0000:00]-+-00.0  Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub
           +-01.0-[0000:01]----00.0  ATI Technologies Inc Unknown device 9581
           +-1a.0  Intel Corporation 82801H (ICH8 Family) USB UHCI Contoller #4
           +-1a.1  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5
           +-1a.7  Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2
           +-1b.0  Intel Corporation 82801H (ICH8 Family) HD Audio Controller
           +-1c.0-[0000:02]----00.0  Attansic Technology Corp. L1 Gigabit Ethernet Adapter
           +-1c.1-[0000:03]----00.0  Intel Corporation PRO/Wireless 4965 AG or AGN Network Connection
           +-1c.2-[0000:04]----00.0  JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller
           +-1c.3-[0000:05]--
           +-1c.4-[0000:06-07]--
           +-1c.5-[0000:08]--
           +-1d.0  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1
           +-1d.1  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2
           +-1d.2  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3
           +-1d.7  Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1
           +-1e.0-[0000:09]--+-01.0  Ricoh Co Ltd R5C832 IEEE 1394 Controller
           |                 +-01.1  Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter
           |                 +-01.2  Ricoh Co Ltd R5C843 MMC Host Controller
           |                 +-01.3  Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter
           |                 \-01.4  Ricoh Co Ltd xD-Picture Card Controller
           +-1f.0  Intel Corporation 82801HEM (ICH8M) LPC Interface Controller
           +-1f.1  Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller
	   \-1f.2  Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller

This laptop is operating under Kernel version 2.6.22 (64 bit)

Basic Installation of Debian

Before installing: if you're keeping Vista (pre-installed on the machine) it's better to set up the partitions from Vista itself. The machine has 3 partitions: one is hidden and contains the recovery data (8GiB), C: contains the operating system plus the various programs (size is about 150GiB), D: is named "Data" and is empty (about 80GiB). Using Vista built-in disk tool (right-click on "Computer", the "Manage", then "Disk Management") I deleted the third partition (Data) and enlarged the other one (it's possible to enlarge and shrink any NTFS partition online) leaving about 60GiB for Linux. I then created an extended parition with 1 small logical parition (about 100MiB for /boot) and a bigger logial parition for the rest (I'm using LVM).

In order to install Debian on this machine it's necessary to use one of the Testing snapshot CD. Debian Stable will not work, since the older kernel lacks support for the hardware (most notably the Ethernet controller won't work).

Installation CDs can be downloaded from here: http://www.debian.org/devel/debian-installer/

Note: daily snapshots sometimes are broken; if the latest isn't working try with the one from the day before.

I choose to use to use netinstall (I was going to upgrade to unstable anyway) and went for a 64 bit kernel. Installation is pretty straightforward with the usual questions. For detailed instructions see Debian Installation Guide.

Setting up additional features

X.org Video Driver

ATI (now AMD) recently released (some) specifications for its newer products (R500 and R600); those documents covers the basic registers needed for mode setting, and are being used as a base for an open-source driver. This new driver is called radeonhd (brief presentation on Phoronix - developers mailing list archive). Starting from version 1.0.0 it's capable of driving R600-based cards; I'm currently using this one. For more information see www.radeonhd.org.

Debian installer will configure X.org with the VESA drivers; it works but it's slow and doesn't support wide-screen resolutions. I'm currently using ATI binary-only drivers (version 8.34.2). Download the appropriate driver from ATI website - I'll use 8.43.2 in the example.

Make the downloaded package executable and generate the correct debian packages:

chmod a+x ati-driver-installer-8.42.3-x86.x86_64.run
./ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Debian/unstable

After it's done you'll find 4 debian packages:

fglrx-amdcccle_8.42.3-1_amd64.deb
fglrx-driver_8.42.3-1_amd64.deb
fglrx-driver-dev_8.42.3-1_amd64.deb
fglrx-kernel-src_8.42.3-1_amd64.deb

The first one is the Control Center and is optional, the second one is the X.Org driver, the third is the kernel driver and the last one contains development headers and libraries (for using ATI OpenGL extensions). You can install the packges with dpkg:

dpkg -i fglrx-amdcccle_8.42.3-1_amd64.deb
dpkg -i fglrx-driver_8.42.3-1_amd64.deb
dpkg -i fglrx-kernel-src_8.42.3-1_amd64.deb

Next step is the compilation of the kernel driver, which can be automated with module-assitant. First install some required packages:

apt-get install build-essential module-assistant libstdc++5

Then use module-assistant to compile and install the kernel module (m-a may ask to download additional packages, which are required for the compilation):

m-a prepare
m-a update
m-a build fglrx
m-a install fglrx

That's it :-) Every time the kernel is updated the module must be recompiled. In order to load the new driver X.Org configuration must be modified (/etc/X11/Xorg.conf) inserting Driver "fglrx" inside the device section of your video card (basically replace "vesa" with "fglrx"); it's also possible to use ATI own tool to modify the config file:

aticonfig --initial

will take care of everything. If X is already running it must be restared.

Note: when upgrading fglrx you must unload the old kernel module (rmmod fglrx) in order to load the new one; this might be a bit difficult if X is always active (graphical login), and a reboot is required.

Additional information on installing ATI drivers can be found here: http://wiki.cchtml.com/index.php/Debian_Installation_Guide

Tuning the Hard Disk

I found out that there are two problems with default set-up of the hard disk:

Native Command Queueing (NCQ) allows the driver to send multiple requests to the disk; unfortunately some firmwares still have problem with NCQ and reports spurious command completions; this does not cause any corruption on disk, since Linux libata layer notice the situation and properly recovers. The recovery involves a reset of the disk controller which may introduce a noticeable latency (easily spotted if it happens while you're watching a movie); anyway the issue show that the firmware is buggy and cannot correctly handle NCQ. The issue has been reported upstream and a fix will appear in kernel 2.6.24; as a workaround NCQ can be disabled with the following command (put it in /etc/rc.local)

echo 1 > /sys/block/sda/device/queue_depth 

The other issue is more serious (it's not specific to this notebook) and involves the "Advanced Power Management" features of the disk. APM can be tuned using a numerical parameter ranging from 1 (aggressive power saving, reduced performance) to 255 (disabled). With this disk the default level (128) is way too aggressive and spins down the disk too often and may reduce disk life: I've measured over 5500 load cycles during about 200 hours of usage (a typical notebook HD is rated for about 600.000 load cycled). I'm currenly using a value of 200 which seems to be fine. The value can be set using hdpard (apt-get install hdparm), put the following lines into /etc/hdparm.conf):

/dev/sda {
        apm = 254
}

ACPI Support

Usual modules works fine: acpi_cpufreq for voltage/frequency scaling, processor for CPU C-states, thermal for the thermal zones.
asus_acpi doesn't work out of the box. This patch is needed to control LCD status and brightness; furthermore asus_acpi can be used to selectively enable WiFi and Bluetooth.

Unresolved issues