Linux on a ASUS L4400L notebook

This page has been written for the Linux on Laptops and the TuxMobil sites in order to give help to other people who are considering to buy an ASUS L4L laptop or have trouble configuring it.

My notebook is a L4400L model, but I think that all the L4L notebooks contain the same hardware. IMHO this is a very beatiful notebook. I will try to give help on the configuration of a Linux system, and create a report of what is working and what isn't. However I can't check everything at once, but when I get the time, I will extend this description.

Please note, that this description is not a step by step installation guide of any operating system. There are plenty of such resources on the web. This page only gives some directions like which kernel module to use, but I assume that you know how to load them.

Document history

To make it easy for revisitors to check for news, a document history is maintained.

Version Date Modification
0.6 Sep 13, 2004 PCMCIA successfully tested, updated Modem section
0.5 Mar 08, 2004 IrDA successfully tested
0.4 Mar 01, 2004 Xinerama, XF86Config file, display switch script, FireWire test
0.3 Feb 09, 2004 Modem test, scripts to get the volume setting function keys to work
0.2 Feb 01, 2004 Added note about LEDs
0.1 Jan 27, 2004 Initial version

Hardware summary

The following table contains a summary of the hardware components of the notebook and the status of their testing.

Hardware component Status
40GB IBM HDD working
Toshiba DVD/CDRW combo working
USB ports working
SiS M650 video chipset working
SiS 7012 audio chipset working
Ethernet controller working
Touchpad (ALPS GlidePad) working
ACPI working
Modem working
IrDA working
PCMCIA working
FireWire (IEEE 1394) seems to be working
TV-OUT not yet tested

Here is the output of lspci:

00:00.0 Host bridge: Silicon Integrated Systems [SiS] 650 Host (rev 80)
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SiS 530 Virtual PCI-to-PCI bridge (AGP)
00:02.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513 (rev 25)
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE]
00:02.6 Modem: Silicon Integrated Systems [SiS] Intel 537 [56k Winmodem] (rev a0)
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] Sound Controller (rev a0)
00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller
00:0a.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev b8)
00:0a.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C551 IEEE 1394 Controller
00:0d.0 Ethernet controller: Broadcom Corporation BCM4401 100Base-T (rev 01)
01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] SiS650/651/M650/740 PCI/AGP VGA Display Adapter

As a first test I have tried KNOPPIX 3.3 on the notebook, and it ran nicely, showing that KNOPPIX is very good for such purposes. Using fb I could use X, the touchpad, the optical USB mouse, the network card, and the audio card without any configuration. However the sis driver on KNOPPIX 3.3 didn't work, because the colors were wrong (newest SiS drivers fix this problem).

Because I was curious I installed Gentoo on the laptop. There were no problems with the installation and the system runs fine.

Earlier I was running Debian Sarge on the notebook. I copied my Debian system from my desktop computer using rsync, so I cannot tell how an installation would go. I had some trouble configuring it, but the system runs fine after that. I'd like to note, that the troubles were not Debian's fault. They appeared because of my lack of experience.

VGA configuration

You should get the newest SiS VGA driver from here. Install it and configure your X server. The device entry is quite simple:
Section "Device"
	Identifier	"SiSM650"
	Driver		"sis"
	BoardName	"SiS M650"
	VendorName	"SiS"
EndSection
I have also tested the VGA output with a monitor. There was no problem, I saw the same picture on the LCD panel and the monitor.

It is also possible to configure multiple screens that can use Xinerama, so that you can drag windows from the LCD panel to the monitor, work on the LCD panel while a video is being played on the monitor, and so on.
You can use my XF86Config file as a sample.

You can start X with the Xinerama screen with the following command:

startx -- -layout dual

Touchpad configuration

The touchpad is an ALPS GlidePad with a wheel, and it works nicely. I use the following section in my XF86Config-4 file:
Section "InputDevice"
	Identifier  "ALPS GlidePad"
	Driver      "mouse"
	Option      "Protocol" "IMPS/2"
	Option      "ZAxisMapping"          "4 5"
	Option      "Device" "/dev/psaux"
EndSection
Don't forget to refer to this from your ServerLayout section with the InputDevice directive.

Audio configuration

I did not have to configure anything, only had to make sure that the i810_audio module is loaded. Unfortunately hardware mixing of two sound streams is not supported.

Ethernet controller configuration

The notebook contains a Broadcom BCM4401 ethernet controller. You can download a GPL licensed driver from the company's site, but this is only needed if you use older kernels. The support is included in recent kernels in the module called b44.

Modem

The modem inside is a [SiS] Intel 537 winmodem. You can find a modem driver on http://www.smlink.com. I am using version 2.9.9, and after compiling the kernel module, the modem works properly. The included README describes the installation process. Don't forget to load the slamr module to the kernel before.

PCMCIA configuration

The laptop has a Ricoh RL5c475 Cardbus bridge for 32bit cards with one socket. The driver in kernel 2.4.26 works just fine. You'll need to select "Cardbus support", too.

Note that if you have configured the Cardbus system in your laptop properly, you'll still need to configure the driver for the specific card you plan to use.

Infrared port

The IrDA port is working fine, as well. You will need to install the irda-utils and the ircp packages.

During the tests I was successfully transferring files between my notebook and a notebook running Windows(tm) using the ircp program.

The following kernel modules have to be loaded: irda, irtty. If you want to IrNET, you will also need the irnet module.

Notes on IEEE1394 FireWire support

Some modules have to be loaded into the kernel:
modprobe raw1394
modprobe ohci1394

I have checked the dmesg output, and it finds the FireWire controller:

raw1394: /dev/raw1394 device initialized
ohci1394: $Rev: 1045 $ Ben Collins <bcollins@debian.org>
ohci1394_0: OHCI-1394 1.0 (PCI): IRQ=[11]  MMIO=[e9800000-e98007ff]  Max Packet=[2048]
ieee1394: Host added: ID:BUS[0-00:1023]  GUID[00e018000315ac28]
I have also used gscanbus to test the availability of the host controller, it has worked fine.

Unfortunately I have no FireWire device with which I could test if it really works. The above results look promising, though.

About ACPI support

You will probably want to have ACPI on when using the notebook at least to know how depleted your battery is. Because ACPI is disabled in the current Debian kernel builds you have to append 'acpi=on' to the kernel image at boot time to have it turned on. It is recommended to load all these drivers into the kernel
ac
battery
button
fan
processor
thermal
asus_acpi

The last one generates events for all special keys on the notebook, including the buttons above the keyboard. These will then be available via /proc/acpi/event. Try to cat this file, and you'll see some event codes as you press some buttons:

apollonia:~# cat /proc/acpi/event 
button/power PWRF 00000080 0000000c
hotkey HOTK 00000050 00000001
button/sleep SLPB 00000080 00000010
hotkey HOTK 00000051 00000001
hotkey HOTK 00000052 00000001
Then use acpid to connect these events to commands.

LEDs

There are a few usable leds on the front side. One is the mail led, the other is for wireless events, I guess. Anyway, you can turn them on and off easily using the following commands:
echo 0 >/proc/acpi/asus/mled
echo 1 >/proc/acpi/asus/mled

echo 0 >/proc/acpi/asus/wled
echo 1 >/proc/acpi/asus/wled
I use the latter to indicate the keyboard layout, but usage ideas are only limited by your fantasy.

Special function keys

I was very happy to see, that the LCD brightness setting keys (Fn-F5, Fn-F6) and the LCD turning on/off (Fn-F7) works without any further hacking. This doesn't even need ACPI to be enabled.

However the volume keys and some others need some more work. After installing acpid (apt-get install acpid) the volume settings are easy to configure using these files:

/etc/acpi/events/volume-up

# /etc/acpid/events/volume-up
# This is called when the user presses the volume up button (Fn-F12)

event=hotkey HOTK 00000030
action=/usr/bin/aumix -v+2

/etc/acpi/events/volume-down

# /etc/acpid/events/volume-down
# This is called when the user presses the volume down button (Fn-F11)

event=hotkey HOTK 00000031
action=/usr/bin/aumix -v-2

/etc/acpi/events/mute

# /etc/acpid/events/mute
# This is called when the user presses the mute button (Fn-F10)

event=hotkey HOTK 00000032
action=/etc/acpi/mute.sh

/etc/acpi/mute.sh

#!/bin/sh

o=`aumix -q | egrep 'vol 0, ?0'`
if [ -z $o ]; then
	aumix -S
	aumix -v0
else
	aumix -L
fi

The Fn-F8 function switches between the displays (LCD, CRT, LCD + CRT) when mirroring the screen on two displays. This can be done by writing to a proc file, but let acpid process the events.

/etc/acpi/events/display-switch

# /etc/acpid/events/mute
# This is called when the user presses the display switch button (Fn-F8).
# The actual hotkey code tells the state of the switch: (LCD, CRT, Both).

event=hotkey HOTK 0000006[123]
action=/etc/acpi/display-switch.sh '%e'
Here's the script that does the actual switch:

/etc/acpi/display-switch.sh

#!/bin/sh

echo `echo $1 | sed 's/.*0*6\(.\).*/\1/'` >/proc/acpi/asus/disp
Please note, that the directories or filenames might differ if you have a different distribution, but I hope this still helps.

TuxMobil - Linux on Laptops, PDAs and mobile Phones