ASUS A6km

From ArchWiki
Revision as of 22:12, 11 December 2010 by Thestinger (Talk | contribs) (Audio)

Jump to: navigation, search

This is my experience of installing and configuring Archlinux x86_64 on a Asus A6km laptop. The structure conveys the order that things were done, which might help other users to see how the layers can be added to build a very stable distribution.

On this model, a known buggy BIOS problem results in a system hang when any USB device, such as a mouse, is attached at bootup. This can be fixed using a downgraded BIOS version (can be downloaded here). The installation described uses this 202 BIOS version and so far no problems have been encountered, even the power management modules behave properly.

Latest revision based on 2009.02 core installation

Hardware

  • 1.8GHz AMD Turion 64 ML34 Processor
  • 15.4" XGA Widescreen TFT Screen
  • 256MB Nvidia Geforce Go 7300
  • 100GB Hard Drive
  • RTL-8169 Gigabit Ethernet Integrated Card
  • Broadcom Integrated 802.11g wireless card
  • DVD Dual Layer Drive
  • Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro
  • 1.3 Mega Pixel USB Intergrated Camera
  • SiS AC'97 Sound Card

lspci outout:

00:00.0 Host bridge: Silicon Integrated Systems [SiS] Device 0756 (rev 02)
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] PCI-to-PCI bridge
00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS964 [MuTIOL Media IO] (rev 36)
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev 01)
00:02.6 Modem: Silicon Integrated Systems [SiS] AC'97 Modem Controller (rev a0)
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] AC'97 Sound Controller (rev a0)
00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.1 Controller (rev 0f)
00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.1 Controller (rev 0f)
00:03.2 USB Controller: Silicon Integrated Systems [SiS] USB 1.1 Controller (rev 0f)
00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller
00:09.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)
00:0a.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3)
00:0a.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08)
00:0a.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 17)
00:0a.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08)
00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:00.0 VGA compatible controller: nVidia Corporation G72M [Quadro NVS 110M/GeForce Go 7300] (rev a1)

Installation

The core 64-bit package downloaded from the Get Arch link was installed and the instructions given in the Beginners' Guide were followed to get the system up and running. The installation process was broken up neatly into stages:

  • Disk Partitioning - hard disk setup using cfdisk partition program etc.
  • Install Packages - inluding base development packages that will help with networking, reading Windows partitions etc., such as ntfs-3g, ndiswrapper, b43-fwcutter, netcfg. All of them were installed to be on the safe side!
  • Configure System - involving detecting hardware using hwdetect and configuring the different sections of the main configuration file /etc/rc.conf
  • Install Grub Loader - Grub loader was installed on the linux root partition giving a /boot/grub/menu.lst as follows:
(0) Arch Linux
title  Arch Linux
root   (hd0,4)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/b3a3c0ab-36df-4b76-abab-443966168c62 ro vga=791
initrd /boot/kernel26.img

(1) Arch Linux
title  Arch Linux Fallback
root   (hd0,4)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/b3a3c0ab-36df-4b76-abab-443966168c62 ro
initrd /boot/kernel26-fallback.img

(1) Windows
title Windows
rootnoverify (hd0,0)
makeactive
chainloader +1

The windows partition was initially commented out, so remove # where necessary to make active. vga=791 was added to change the frame buffer from 800 x 640 to 1024 x 768. All explained in the menu.lst configuration file.

Setting up

Archlinux uses the pacman command as its package management, but first, access to t'interweb was required. Having read through the wikis and wanting to configure the system for Gnome, first port of call was to set up the network conections. Initially based on commandline entries and logging in as root at the console, until a desktop environment was setup.

Networking

Wired

The module for the ethernet LAN card was installed at bootup. This could be viewed under the MODULES section in the /etc/rc.conf configuration page or run lsmod to check the module is loaded.

MODULES=(r8169 bcm43xx.......) 

Run:

# ifconfig

to check the entry for the ethernet LAN card probably eth0 and its MAC address etc.

The network settings under NETWORKING section in /etc/rc.conf needed changing to allow connection via DHCP or a static IP.

The default setting for the LAN card in rc.conf was a private static IP.

eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
INTERFACES=(eth0)

Edit these settings or change to DHCP if required:

eth0="dhcp"
INTERFACES=(eth0)

then use the the following command to request an IP address from a router etc:

# dhcpcd eth0

Check the output from ifconfig gave the IP address, subnet mask etc. From there, a quick test to see if an address could be reached as suggested in the beginners guide:

# ping -c 3 www.google.com

Wireless

For wireless, can use the b43-fwcutter package to install the firmware, (run lsmod command to check if the b43 module is running):

# b43-fwcutter -w /lib/firmware /path_to_driver

the driver can be found here

Once installed running

# iwconfig 

showed an entry for wlan0.

The device may need starting:

# ifconfig wlan0 up

From there, configuration to connect to a wireless network required setting up the ESSID and the network key using iwconfig e.g.

# iwconfig wlan0 essid somename key somekey

and requesting an IP address using the same method as the wired configuration. On reboot, the driver module would be loaded but the configuration would be lost, software, such as netcfg, allowed saving the wireless configuration to file and load the settings on bootup.

Netcfg

Netcfg package produced a good way to setup an encrypted wireless network connection that connects to a network automatically at bootup, particularly while using a console to set stuff up. Examples of the config files are given in /etc/network.d/examples. Here's a WEP configuration file minus a few secret bits!

CONNECTION="wireless"
DESCRIPTION="A simple WEP encrypted wireless connection"
INTERFACE=wlan0
SCAN="yes"
SECURITY="wep"
ESSID="XXXXXXXX"
KEY="XXXXXXXXX"
IP="dhcp"

After entering the appropriate information, and saving a copy in /etc/network.d for netcfg to see it, to test run:

# netcfg Filename

To get the connection at bootup, the following was added to /etc/rc.local:

# Start Wireless.......
sudo netcfg Filename

Pacman

Once the network was setup, Pacman was used to install all the software. Pacman is the commandline package management for Archlinux. It is powerful and yet easy to use, once you get the hang of the syntax. First thing to do, an upgrade of pacman package using,

# pacman -Syu

then

# pacman -Syy

this installed the latest version. Then upgraded the system,

# pacman -Syu 

The pacman package checked and installed all the dependencies, setup the packages and gave extra info about the upgrades. These could also be read in the /var/log/pacman.log file.

During this first system upgrade, there was an error relating to klibc that required removing a link, see here

ABS

The Arch Build System can be used to build packages from source but was useful initially as a directory to search for software.

Installed the package using

# pacman -S abs

Generate the directory tree for the core, extra and community package lists by checking the content of the /etc/abs.conf file for the required repositories and then running

# abs

These package lists could then be browsed under the /var/abs subfolders. The list needed refreshing on a regular basis, usually when an upgrade is performed.

Building a package from source was pretty straight forward. Following the suggested route, created a build directory called local in /var/abs and copied the appropriate PKGBUILD file from the required package directory in the /var/abs subfolders to a folder of the same name in /var/abs/local.

Inspect the PKGBUILD file for gremlins (or unwanted code) and then run as a user, required fakeroot or sudo, where possible:

# makepkg -s

to build the package for installation. Run as root:

# pacman -U package.pkg.tar.gz

Xorg/Nvidia Driver

Installation of the Xorg server (X Windows system) was required first:

# pacman -S xorg

and a basic driver (possibly!):

# pacman -S xf86-video

At this point, install the nvidia driver, for this machine:

# pacman -S nvidia

then, one way to get things working, run the Xorg configuration command:

# Xorg -configure

which detected the mouse and keyboard, selected the nvidia driver and created a new xorg.conf file. The xorg.conf file:

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	ModulePath   "/usr/lib/xorg/modules"
	FontPath     "/usr/share/fonts/misc"
	FontPath     "/usr/share/fonts/100dpi:unscaled"
	FontPath     "/usr/share/fonts/75dpi:unscaled"
	FontPath     "/usr/share/fonts/TTF"
	FontPath     "/usr/share/fonts/Type1"
EndSection

Section "Module"
	Load  "record"
	Load  "dbe"
	Load  "glx"
	Load  "extmod"
	Load  "dri"
	Load  "dri2"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
EndSection

Section "Device"
	Identifier  "Card0"
	Driver      "nvidia"
	VendorName  "nVidia Corporation"
	BoardName   "G72M [Quadro NVS 110M/GeForce Go 7300]"
	BusID       "PCI:1:0:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     4
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     8
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     15
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     16
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection


Without a desktop environment installed/loaded, running:

# startx

started x windows and loaded the minimalist windows manager. This configuration generated the correct native resolution 1280 x 800.

Gnome

To install the Gnome packages (and extras, see here):

# pacman -S gnome gnome-extra

The installation also added gdm (gnome display manager). From here, need to add the following daemons: fam, hal and gdm to the daemons list in /etc/rc.conf.

DAEMONS=(.....fam hal....gdm)

Hal started the dbus daemon on bootup and some packages suggested adding dbus to the daemons list, this is obviously not necessary if hal is present. After a reboot, gdm loaded the gnome login window. At this point, a user account needed to be present on the system since you cannot login as root at this stage (try ctl+alt+F6 to get to a console and login as root then follow adding a user section below).

When using Nautilus in Gnome to access ftp or samba filesystems, the 'fuse' module needs to be added to the MODULES list.

User accounts

Logged into a console as root, and typed the command:

# adduser

which gave a structured output for creating a user account. During this process, it was possible to add the user to a number of groups. Available groups can be viewed using:

# cat /etc/group

These groups gave user permissions to access:

  • optical - CD/DVD drives
  • storage - external drives
  • disk - drives other than storage and optical
  • log - log files
  • power - allows user to suspend, restart and shutdown the computer
  • audio - sound settings
  • video - video capture devices
  • wheel - allow users to use sudo commands
  • network - allow users to change network settings

Outside of the adduser setup, adding a user to another group could be achieved using:

# gpasswd -a [username] group

Once the account was setup, back to logging into Gnome. No problems were encountered with starting gnome for the first time other than getting the audio sorted out.

Audio

The sound card [SiS AC'97] was detected on installation and the correct modules for audio loaded at bootup.

See ALSA for installation/configuration details.

Other hardware

Touchpad

To get the touchpad working, install the synaptics package:

# pacman -S xf86-input-synaptics

The touchpad started working (with basic features - no scrolling etc.) after a reboot. Apparently this only works when xorg input hotplugging is enabled.

Webcam

The webcam was detected on installation and the modules loaded at bootup.

Linux video capture interface: v2.00
stkwebcam: Syntek USB2.0 Camera is now controlling video device /dev/video0

The cheese webcam package worked well with the installed drivers. Cheese is installed with Gnome extras packages. Can't recall whether this worked on the kernel version installed from the download or after an upgrade!

Kernel version in use at this stage was 2.6.27.

Modem

Not tested so far

IrDA

First make sure the device is enabled in the BIOS, then once booted up, start the daemon:

# /etc/rc.d/irda start

One way to test the device is to install the utilities:

# pacman -S irda-utils

and run the command:

# irdadump

the output should look something like this when working:

13:13:59.173537 xid:cmd 851b3728 > ffffffff S=6 s=0 (14) 
13:13:59.263432 xid:cmd 851b3728 > ffffffff S=6 s=1 (14) 
13:13:59.353394 xid:cmd 851b3728 > ffffffff S=6 s=2 (14) 
13:13:59.443431 xid:cmd 851b3728 > ffffffff S=6 s=3 (14) 
13:13:59.533395 xid:cmd 851b3728 > ffffffff S=6 s=4 (14) 
13:13:59.626729 xid:rsp 851b3728 < 26098ceb S=6 s=4 Sony Ericss hint=9124 [ PnP Modem IrCOMM  IrOBEX ] (28) 
13:13:59.633430 xid:cmd 851b3728 > ffffffff S=6 s=5 (14) 
13:13:59.723433 xid:cmd 851b3728 > ffffffff S=6 s=* asus-archlinux-64 hint=0400 [ Computer ] (33) 

The 'Sony Ericss' entry is a nearby (direct line of sight) mobile phone with infra-red enabled.

There should also be an irda0 entry when running the ifconfig command.

Card Reader

Not tested so far

Tv Out

Not tested so far

Other Software/Utilities

Power Management

For cpu scaling, see Cpufrequtils.

Suspend to RAM/Disk

For suspend-to-ram, follow the instructions in the Suspend-to-ram page. Running the command:

# s2ram -n

gave the output:

Machine matched entry 49:
    sys_vendor   = 'ASUSTeK Computer Inc. '
    sys_product  = 'A6Km      '
    sys_version  = 
    bios_version = 
Fixes: 0x0  
This machine can be identified by:
    sys_vendor   = "ASUSTeK Computer Inc. "
    sys_product  = "A6Km      "
    sys_version  = "1.0       "
    bios_version = "300    "
See http://suspend.sf.net/s2ram-support.html for details.

and for suspend-to-disk, after the s2ram setup install the hibernate script:

# pacman -S hibernate-script

then test by running:

# s2disk

both seemed to work well, only the wireless light did not re-light after resuming, but wicd restarted ok, not certain what happens with other network managers.

/etc/rc.conf file

This is the up-to-date configuration file for the above installation...

#
# /etc/rc.conf - Main Configuration for Arch Linux
#

# -----------------------------------------------------------------------
# LOCALIZATION
# -----------------------------------------------------------------------
#
# LOCALE: available languages can be listed with the 'locale -a' command
# HARDWARECLOCK: set to "UTC" or "localtime"
# USEDIRECTISA: use direct I/O requests instead of /dev/rtc for hwclock
# TIMEZONE: timezones are found in /usr/share/zoneinfo
# KEYMAP: keymaps are found in /usr/share/kbd/keymaps
# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US)
# CONSOLEMAP: found in /usr/share/kbd/consoletrans
# USECOLOR: use ANSI color sequences in startup messages
#
LOCALE="en_GB.utf8"
HARDWARECLOCK="localtime"
USEDIRECTISA="no"
TIMEZONE="Europe/London"
KEYMAP="uk"
CONSOLEFONT=
CONSOLEMAP=
USECOLOR="yes"

# -----------------------------------------------------------------------
# HARDWARE
# -----------------------------------------------------------------------
#
# MOD_AUTOLOAD: Allow autoloading of modules at boot and when needed
# MOD_BLACKLIST: Prevent udev from loading these modules
# MODULES: Modules to load at boot-up. Prefix with a ! to blacklist.
#
# NOTE: Use of 'MOD_BLACKLIST' is deprecated. Please use ! in the MODULES array.
#
MOD_AUTOLOAD="yes"
#MOD_BLACKLIST=() #deprecated
MODULES=(r8169 !bcm43xx ndiswrapper fuse powernow-k8 cpufreq_ondemand cpufreq_powersave  ac97_bus snd-mixer-oss snd-pcm-oss 
snd-page-alloc snd-pcm snd-timer snd snd-ac97-codec snd-intel8x0 snd-intel8x0m soundcore)

# Scan for LVM volume groups at startup, required if you use LVM
USELVM="no"

# -----------------------------------------------------------------------
# NETWORKING
# -----------------------------------------------------------------------
#
# HOSTNAME: Hostname of machine. Should also be put in /etc/hosts
#
HOSTNAME="asus-archlinux-64"

# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces.
#
# Interfaces to start at boot-up (in this order)
# Declare each interface then list in INTERFACES
#   - prefix an entry in INTERFACES with a ! to disable it
#   - no hyphens in your interface names - Bash doesn't like it
# 
# DHCP:     Set your interface to "dhcp" (eth0="dhcp")
# Wireless: See network profiles below
#
# eth0="dhcp"
# INTERFACES=(eth0)

# Routes to start at boot-up (in this order)
# Declare each route then list in ROUTES
#   - prefix an entry in ROUTES with a ! to disable it
#
gateway="default gw 192.168.0.1"
ROUTES=(!gateway)
 
# Enable these network profiles at boot-up.  These are only useful
# if you happen to need multiple network configurations (ie, laptop users)
#   - set to 'menu' to present a menu during boot-up (dialog package required)
#   - prefix an entry with a ! to disable it
#
# Network profiles are found in /etc/network.d
#
# This now requires the netcfg package
#
#NETWORKS=(main)

# -----------------------------------------------------------------------
# DAEMONS
# -----------------------------------------------------------------------
#
# Daemons to start at boot-up (in this order)
#   - prefix a daemon with a ! to disable it
#   - prefix a daemon with a @ to start it up in the background
#
DAEMONS=(syslog-ng iptables !network netfs crond hal cups fam alsa stbd cpufreq wicd gdm)