Linux on an Acer Aspire 4720z

This isn't a detailed review, nor does it even give a detailed listing of specifications. It's for someone who saw this on sale, or liked the price and features and are wondering if Linux will work with it.

Basically, it's the page I wish someone had done before I bought mine, it would have saved me several hours of googling.

This refers to the Acer 4720z. On the bottom is a sticker labeled Aspire 4720-4721. More importantly for Linux folks, there's a sticker saying Atheros AR5BXB63.

In the US, these are becoming pretty popular in late January and early February of 2008, with both Staples and Circuit City offering them at under $500.00. I have tested them with various distributions.

The core duo can accept 64 bit systems. Lately, that's what I've been using with it.

I have not played with the modem. I don't need it. However, on Fedora forums nspmangalore mentioned that it doesn't work for him on a similar laptop. (The Acer 4520). He plans to spend effort on getting it to work for him and will share the information when he does.

It comes preinstalled with a version of Windows Vista. I didn't need or want that, so simply removed all partitions before installing. (I thought of booting Vista once out of curiosity, but there was some note in the box indicating that the first boot of Vista might take close to an hour while it did something or other, so I didn't bother.)

For my needs, I want wireless, ethernet, sound and X to work. I don't use Beryl or other desktop effects--for me, they're interesting for about 2 minutes, then I go back to fluxbox.

Ethernet works out of the box on all distributions tested.

X

Fedora, PCLinuxOS, and CentOS-5 automatically configure X with no intervention. Ubuntu and ArchLinux configure the display correctly. With Arch you will need to install the video driver.
pacman -S xf86-video-intel

Then, in Arch, you can configure it with X -configure. Both Arch and Ubuntu configured it as having a standard mouse. So, with those two, you might want to edit your /etc/X11/xorg.conf to make use of the touchpad.

Open /etc/X11/xorg.conf and look for the section "InputDevice" where the identifier is "Mouse0". Comment out everything between Section "InputDevice" and EndSection and use
	Identifier  "Synaptics"
	Driver	    "Synaptics"
	Option	    "Device" "/dev/input/mice"
	Option	    "Protocol" "auto-dev"
       #Option      "Emulate3Buttons" "yes"
	Option      "VertScrollDelta" "100"
        Option 	    "SHMConfig"  "on"

Sound

Sound doesn't work but is easily fixed in all but CentOS-5. (Fixable there too, see below.) With the others, it's relatively easy.

Fedora, PCLinuxOS

Create a file /etc/modprobe.d/alsa-base. With your favorite text editor, enter the line
options snd-hda-intel model=acer

Ubuntu up to Hardy Heron, version 5 (From version 5 on, this is no longer necessary, sound works out of the box.)

apt-get install linux-backports-modules

Then, add that same line to /etc/modprobe.d/alsa-base. In Ubuntu the file already exists, you can add the options snd-hda-intel line to the end of the file.

Ubuntu Intrepid Ibex alpha

With Ubuntu's Intrepid alpha release, I have found that I have had to manually reload the alsa drivers each time I log in. I will get the little sound as the login screen appears, but then, after logging in, there is no sound. Running the command
alsa force-reload

gives me my sound back. There's a little dialog box that pops up, telling me that the drivers have been unloaded, do I want to reload, and I can click OK. I can also click cancel, either way, after running the command, sound works. I suspect this will be fixed before release.

ArchLinux

Add the line mentioned above, options snd-hda-intel model=acer, but add it to /etc/modprobe.conf

CentOS

NOTE: The sound problems seem to be gone with CentOS 5.3. Sound now works out of the box.

With CentOS 5.2, the problem seems to be that they use an older version of the alsa-drivers. However, the atrpms repository version will work. I've only given a link to the main page, as different readers might be running different versions of CentOS. Click on the alsa-driver link and it should take you the directory containing the alsa-kmdl rpm. (Don't forget to match your kernel version.)

NedSlider at CentOS forums only needed to install the alsa-kmdl-<kernel-version> package, matching his kernel. This should be all that is necessary.

If for some reason that doesn't work, you can always do it the harder way. This is what I did, as I wasn't aware of that RPM at the time. However, the reader is strongly advised to use the RPM if it works for them. Not only is there less risk, but it's less work as well.

I only leave the instructions below in for the rare case where the ATRPM's version of alsa doesn't work.

I downloaded the alsa driver from the alsa site.

Once downloaded, there is an INSTALL file in the directory. After reading it, I took the following steps. To do the actual installation, I found that I did have to be root--that is, I logged off and logged back in again as root when typing the make install-modules line. Using sudo, even with root's $PATH, didn't seem to work properly.

For the beginner, the steps I used were (this is with version 1.0.17, the latest stable version at time of writing) Make sure you have the necessary tools to compile.
yum -y install gcc gcc-c++ make kernel-devel

This will pull in several dependencies. This is fine, they are also needed.

Once the file is downloaded
tar jxvf alsa-driver-1.0.17.tar.bz2
cd alsa-driver-1.0.17
./configure --with-isapnp=no --with-cards=hda-intel
make
make install-modules

As explained in the INSTALL file, if you don't need isa support you can use the with-isapnp=no option. You can also, rather than building drivers for all cards choose the card you need, which is, in this case, the snd-hda-intel. (They also mention that you no longer use the snd prefix when building a card's module.) Lastly, they recommend using install-modules rather than install if you already have alsa installed, so that it doesn't overwrite various startup scripts.

The /etc/modprobe.d/alsa-base file isn't necessary with this.

In all cases, you'll probably have to reboot. There's a chance you might be able to avoid it. You can try
rmmod snd_hda_intel

If it puts you back at a command prompt, you can then type
modprobe snd_hda_intel

It will then reread /etc/modprobe.d/alsabase (or modprobe.conf on Arch) and you'll have sound. However, most of the time, for me at least, one gets the message snd_hda_intel in use, and I'm unable to remove the module. In that case, a reboot is necessary.

Wireless

Wireless is a bit less trivial but not difficult. I cover it in detail on another page. To briefly recap (links and instructions for each step are on the other page)

Check if your distro already supports the card either through installing MadWifi or through their version of the ath5k module
If not, grab the patched file from madwifi
Install it and run modprobe ath_pci. Blacklist the current ath module, ath5k. After that (often, a reboot is necessary) you should have wireless. This has worked for me with all 5 distros mentioned above.

There are some threads on Ubuntu forums about getting the same card working with ndiswrapper. It also worked for me. The advantage over the madwifi patch is that with ndiswrapper, the wireless LED comes on. One of the posts in the thread gives a method of using it with a 64 bit installation as well. The thread is about the Acer 4520 and can be found here. However, when I tried the 64 bit ndiswrapper, it didn't work for me. I would get a listing of available networks, but was unable to connect. As the MadWifi patched snapshot now works with 64 bit as well as 32, I didn't investigate it very deeply.

Webcam

The webcam worked for me in 32 and 64 bit versions of Fedora and Ubuntu, as well as a 32 bit version of Arch and a 64 bit version of CentOS. Some required more work than others.

I used the program luvcview. In Fedora, I had to install it from source.

You will need some development tools and libraries.
yum install make gcc gcc-c++ kernel-devel SDL-devel subversion

I grab the source from their subversion repository.
svn checkout http://svn.quickcamteam.net/svn/luvcview

It will create a directory luvcview/trunk/luvcview. (Note that this changes from time to time.)

Next, one has to download a few other header files. (This is mentioned in the REAMDE, along with the urls of the files.) One can just grep wget from the README file to get the current urls. What I have below, although kludgy, is convenient for me. I use grep to grab the urls, pipe that to the cut command, using a space as fied delineator. Note that it is a single quote, a space and another single quote. The -f 2 means echo the second field, in other words, everything after the space, which turns out to be the url. I then pass it to xargs, a very handy command which can perform operations on the results of find, grep, and probably anything else you can think of using. The default for xargs is to simply echo a result, so I type xargs wget and it performs wget on the three urls.

In Unix, there are always several ways to do things and this method works for me. The user can use their own method. The main point is to get the urls from the README and download the three files. My command is
cd trunk/luvcview
grep wget README|cut -d ' ' -f 2|xargs wget

Once you have the three files downloaded into the luvcview directory. it can be compiled and installed with
make
make install

It will install the program into /usr/local/bin. You will have to fix permissions before you can run it as a regular user. (If you want it in /usr/bin/ for consistancy, you can edit the Makefile. Towards the top they define some variables, including BIN. It's defined as /usr/local/bin--you can change it to /usr/bin.)

Add the following to /etc/security/console.perms.d/50-default.perms. At the top where they list devices you can add
<video>=/dev/video0

At the bottom, where they list permissions, you can add
<console> 0666 <video>  0600 root

To start using it without a reboot, just do as root or with root privilege
chmod 666 /dev/video0

If you now start the program with
luvcview -f yuv

you should be able to see yourself as you type. It works, so I've read, with Ekiga, though I haven't tried it. With Ekiga and any other app that asks, choose V4L2 rather than V4L or V4L1.

In CentOS 5.3, luvcview is available through the rpmforge repos. (See the CentOS wiki article on adding rpmforge if you don't have the repo installed already.)

In CentOS 5.2, it requires a bit more work, as one also has to install the uvcvideo module. There is an atrpm rpm available. (The link goes to the RHEL5 section, which is what one would use for CentOS 5.x.) Look for the uvc section and get the uvc-kmdl that matches your kernel. If that doesn't work, (though it should), you'll have to get it from source. Start with getting necessary programs via yum.
yum install make gcc gcc-c++ kernel-devel SDL-devel subversion

Now, get the module subversion.
svn checkout http://svn.berlios.de/svnroot/repos/linux-uvc/linux-uvc/trunk
cd trunk
make
make install
depmod -a
modprobe uvcvideo

Hopefully, this returns no errors, meaning that it's installed. Check with
lsmod |grep uvc

This should show something likvideo 88072 0 compat_ioctl32 41793 1 uvcvideo videodev 58049 1 uvcvideo v4l1_compat 44613 2 uvcvideo,videodev v4l2_common 57153 3 uvcvideo,compat_ioctl32,videodev

Once that's done rename trunk to trunk_uvc or something similar. After that, the instructions are identical to those above for Fedora. (This is why we renamed trunk, because when you get the subversion repo for luvcview, it will also create a directory called trunk.

Note that at present (December 2008) when typing make, you may get a message that this has been deprecated, with a suggestion that you use linuxtv.org's modules. The top of the page has links to the bzipped and gzipped files. One can just download, extract as usual (tar jxvf if you got the bz2 file or tar zxvf if you got the gz one), make && make install. Then
modprobe uvcvideo 

as before.

Ideally, you'll be able to find the atrpm version that matches your kernel, and this won't be necessary.

In Ubuntu, it's a bit simpler.
apt-get install luvcview 

After that, use the same command as above, luvcview -f yuv. (The -f is for format. The default is jpg but that doesn't seem to work.) This works in both 32 and 64 bit.

In Arch, I had a bit of difficulty. There was a linux-uvc-svn in the community repo, but it was out of date and put the modules in in /lib/modules/2.6.23-Arch when I had kernel 2.6.24. So, when I did modprobe uvcvideo, I would get module not found. Eventually, I grabbed the subversion with
svn checkout http://svn.quickcamteam.net/svn/luvcview/trunk/luvcview/

Note that you need to have subversion installed for that to work. Subversion can be installed with pacman -S subversion.

The README tells you to get a few others files with wget. The older subversion used to include these but when I updated this article, I found that that subversion trunk was gone. At this point, the AUR package seems up to date, so you're probably better off using that.

I haven't had time to test out the new AUR repo, nor building with the new subversion trunk, so I can't give more detailed instructions. In theory, after getting the files that the README suggests, you should be able to do make && make install.

You can then load the module with
modprobe uvcvideo

In Arch, a user of the webcam has to be in the video group. If the user name was john, you could do it thusly.
usermod -G video -a john

Now, the user john can use luvcview.
luvcview -f yuv

Once again, please note, this is untested with the later subversion and/or AUR package.

On Fedora forums, nspmangalore didn't have success with this and was kind enough to provide a link to a more complete howto. (Basically, that one goes into removing old and inserting new modules, which I hadn't found necessary.) So, all in all, if you see this laptop on sale and want to use Linux, I'd say go ahead and buy it. Wireless will work now, the webcam will probably work and sound will probably work. This might not be the case for each distribution, but most of the major ones seem to be have little trouble, save for CentOS, which is similar to RHEL5, and uses somewhat older versions of things. I haven't put much effort into getting sound to work with it, and it's quite possible that a bit more effort might bring success.

Hopefully, the lack of details on this page won't disturb anyone. It should still save you some googling and false starts.