gnu/linux on the acer 340t

I won't burden you with the details of why I chose the 340T. It seemed like a pretty kickass machine for the price, compared to the others in its class. I was a bit worried about the lack of direct information on running gnu/linux on it, but there seemed enough anecdotal evidence that similar hardware worked to take the chance.

This is the information I was looking for to soothe my fears when I was making the decision. Let me say in advance, it all worked out pretty darn well. So far I have everything working that I need, all with very little hassle.

note: This info is quite a bit out of date at this point. Peter Favrholdt has put up a great wiki with his more recent experiences. It includes such fun as kernel configs for versions 2.4 and 2.6, XFree 4.3 (with three buttons!), and things like bluetooth connections to cell phones and wlan cards. Give it a look (and contribute!)

pre-install

If you want to dual boot with win98, before repartitioning with fdisk or partition magic or what-have-you, you must disable the Windows SleepMgr and remove its datafile. It is a hidden file, and is likely called C:\acr_0v.dat. This temporarily makes it impossible to suspend to disk in windows but after partitioning the drive for linux, you can reenable it. The datafile exists as a hidden file at the end of the default windows partiton, and will be deleted by fips if it is not removed. This will cause SleepMgr to complain. Best to be proactive.

installation

I won't go into the entire process, as that's covered better elsewhere. I'll note anything that seemed out of the ordinary or specific to the Acer.
distro I chose the Debian distribution, version 2.2 (potato). The Debian project has close ties to the Free Software Foundation, and aside from the idealogical appeal its a solid product. Note: I'm now using Woody (Debian version 3.0). Everything is nifty.

It's well suited to someone who already knows the ropes of installing gnu/linux. This is to say it doesn't have as much handholding as other distributions might. For more newbie-friendly alternatives, I'd suggest SUSE Linux or the everpresent RedHat. Bernard Piller <bernard(at)bmpsystems.com> reports SuSE 6.x works well for him.

ether At least with Debian, you'll be prompted during the early stages of installation for additional kernel modules to load. As I was doing a network install of all but the base packages, it was pretty necessary to have the built in ethernet working.

This was put up or shut up time. I was banking on the ethernet being simply a stock Intel EtherExpress 10/100 PCI card, like it showed up in win98. No funny stuff. As it turned out, it was. The eepro100 module with no parameters specified worked first time, like a charm. Big win. When I built a new kernel (2.2.13) I compiled this driver in, so no mucking about with modules.

It complains at boot time when initializing: "eth0: Invalid EEPROM checksum 0x5238, check settings before activating this device!" but I've had no problems, so it seems this can be ignored. Not everyone gets this error, so maybe I'm just unlucky. Shrug.

floppy When it came time to make the boot floppy, the disk format failed initially. There was a message to add 'drive0: deviation=2080' to the file /etc/driveprm. I tried a second time and it worked fine. I've since used both the floppy and cdrom drive with no problems, so I'm chalking it up as a fluke. I added the line as specified just to ward off evil spirits.
cd Breakthrough! <aris(at)cathedrallabs.org> writes that a hotswappable combo drive is a reality. With just a little magic incantation of the 'hdparm' command, the secondary IDE bus gets rescanned and the cd drive gets re-recognized.

He's written a shell script to facilitate this. Invocation is like: 'idectl 1 rescan'. (Remember to umount any filesystems you have mounted from the drive before removing it!)

For normal operation, booting with the drive attached has always worked. I've mounted plenty of music, windows, and iso9660 CDs without problems. It's great to hear that it's no longer necessary to keep the combo drive attached at all times. If anyone wants to write a little gnome applet to do basically the same thing, it'd be a nice little project. I may have to do that m'self, now that the hard work is done :)

pcmcia Booting the new kernel to finish the install, it hung at the line 'Starting PCMCIA services: modules'. I rebooted using the installer kernel and disabled the PCMCIA subsystem: 'rm /target/etc/rc2.d/S11pcmcia'. Rebooting using the default installed kernel worked fine. You can boot to single user mode ("linux single" at the LILO prompt) to accomplish the same.

Elias Balaras tells me he found a workaround for the PCMCIA hang problem, as explained in the PCMCIA HOWTO. Basically he added the line PCIC_OPTS="do_scan=0" to /etc/sysconfig/pcmcia and rebooted. That's a little more graceful than my solution :) Other reports agree on this. On my debian system, the file is /etc/pcmcia.conf

I finally got around to getting a compact flash adapter for the digicam, so now I have a reason to get PCMCIA working. I installed the pcmcia-source package since I'm using a custom 2.2.15 kernel. A short compilation later, start the pcmcia service, and it worked like a charm. APM seems to work fine as well. I'm a believer.

The pc card slot works also with the 3com 589 ethernet card (so I hear). I'd expect pretty full compatability from the slot at this point.

X After some initial problems upgrading to XFree86 4.0, I finally sat down to work it all out. The result is that things are working with a minimum of tweaking. The main problem was that I needed to disable the framebuffer device by adding
Option  "UseFBDev"  "false"
to the Device section and change the driver to trident. Here is my current XF86Config-4 file.

Here is the old information from XFree 3.3.6:

The Debian potato release currently includes XFree86 version 3.3.5, which supports the Trident Cyber 9525 chip via the SVGA server. XF86Setup was unable to probe the correct timings for the LCD display, so a little hunting was required to find other folks using the chip at 800x600 resolution. I had to manually edit the /etc/X11/XF86Config file to add the proper horizontal sync and vertical refresh rates. Here is my current setup.

I'm running at 16bpp. 32 bits slowed things down a little too much for my tastes. It runs plenty fast now, and I don't miss the extra bits of color depth at all.

There are two entries for the 800x600 resolution, because I've found that it is necessary to switch resolutions (via Ctrl-Alt-NumPadPlus and Ctrl-Alt-NumPadMinus, which is really Ctrl-Fn-Alt-; and Ctrl-Fn-Alt-p) when switching to an external monitor. This means that the external monitor gets driven at 800x600. This is good for dual display. I imagine 1280x1024 or 1024x768 could be set up for an external monitor as well.

The external PS/2 mouse is reported to work as well. I haven't tried this myself. The keyboard works fine.

apm When I compiled a custom kernel, used the following options for power management:
[*] Advanced Power Management BIOS support
[ ]    Ignore USER SUSPEND
[ ]    Enable PM at boot time
[*]    Make CPU Idle calls when idle
[ ]    Enable console blanking using APM
[*]    Power off on shutdown
[*]    Ignore multiple suspend
[*]    Ignore multiple suspend/resume cycles
[ ]    RTC stores time in GMT
[ ]    Allow interrupts during APM BIOS calls
Things worked great right off the bat. Apmd is running, naturally. Closing the lid suspends the machine properly, and 'halt -p' powers the machine off as it should.
sound The 340T uses the ESS Solo 1 (ES1938) chipset. Version 2.2.13 of the linux kernel includes experimental support for this device. You'll need to enable the following options to get it to work:
[*] Prompt for development and/or incomplete code/drivers
<*> Sound card support
<*> ESS Solo1 (Experimental)
Bernard Piller <bernard(at)bmpsystems.com> has gotten the card to work with the ALSA driver, using info from this site, so that's an option too. Thanks Bernard!

<aris(at)cathedrallabs.org> mentions that the ALSA driver can operate in full duplex mode, whereas the OSS one doesn't. It also works better under heavy load. Less audible artifacts and such. I'm looking forward to trying this out myself.

modem The builtin modem is a Lucent winmodem, as shown with a cat /proc/pci. For debian, you can download precompiled versions of the latest Lucent driver for all recent kernels here. The main info page is here. linmodems.org is a good resource as well.
touchpad The touchpad is great. I won't get into the touchpad/nipplemaus debate, but it's clear on which side I lie :) I'd only come across one occasional problem: periodically when X would start, the mouse would act erratically, jumping all over the screen. It would take a reboot to clear this. I guess the pad was getting initialized wrong at boot time. Bruce Kall's touchpad driver solves this. I run it at boot time before X or gpm starts like so. You may want different options. I like these.

I added the kernel patch to my 2.2.13 kernel and rebuilt. Patching took a little manual massaging since the patched file has changed since the original patch was made. Here's a patch to the 2.2.13 kernel.

Update: I recently upgraded to 2.2.15, and the same patch works fine. I'm not positive you need it however, but it's there if you want it.

Update: Success! The third button is now working! Thanks to a pointer from Anna Gerber <agerber(at)dstc.edu.au> and some hunting down by Chun-Chung Chen <cjj(at)u.washington.edu>, here is what I found:

Newer versions of gpm (I have 1.19.6) include support for the third button automatically. To get it running, I edited /etc/gpm.conf and added:

type=synps2
append="-3 -R"
/etc/X11/XF86Config-4 wants your mouse configured like so:
Option "Device" "/dev/gpmdata"
Option "Protocol"  "MouseSystems"
(Don't forget to disable three button emulation.)

GPM has an annoying feature called toss mode, which was enabled for me by default. I disabled it by creating /etc/gpm-syn.conf with the contents:

[tossing_enabled] 0
[use_wmode] 1
And things work peachy. Boy am I stoked!
irda From Cristian Othon Martinez Vera <cfuga(at)itam.mx>:

I've activated the IrDA device, following the instructions from the Linux-IR(Infrared)-HOWTO. The device is an FIR (Fast IR) NSC PC87338, supported by the Linux IrDA project.

The support for this device is in version 2.2.15 and up of the kernel. The stock kernel must be recompiled with the serial driver as a module to make it work, because the device uses the 0x2f8 port. With 'make menuconfig', the option is

<M> Standard/generic (dumb) serial support
in the 'Character devices' menu.

Kick ass!

usb Straight quoted from <aris(at)cathedrallabs.org>:

ALi chipset (OHCI), fully compatible with linux and tested with kernels 2.2 and 2.4. Have some problems with hotplug because sometimes it just doesn't notify linux that usb device was disconnected. Overall: works and well.

Awesome. I can't wait to buy something usb (a digicam? :) and try it out. I've read similar success stories from others as well.

thanks

Thanks to the following folks who have contributed information and suggestions:
  1. Bernard Piller <bernard(at)bmpsystems.com> for info on running SuSE.
  2. Cristian Othon Martinez Vera <cfuga(at)itam.mx> for lots of good info on IrDA and more.
  3. Gary Murphy for his Acer TravelMate 330T and Linux 2.2 page.
  4. mmb, for an XF86Config for the Trident 9525 chip.
  5. Jonas Lofwander's Alsa-0.4.1 for ESS-SOLO-1 / kernel 2.2.10 page gives info on getting the ALSA driver working with the 340T.
  6. Bruce Kall's Linux TouchPad Driver allows you to set many options on the pad.
  7. Ville U Hautakangas for confirmation on the 3com PCMCIA ethernet card and modem driver.
  8. <aris(at)cathedrallabs.org> for tons of solid info about USB, APM, sound, framebuffer support, and the combo drive.
  9. Anna Gerber <agerber(at)dstc.edu.au> and Chun-Chung Chen <cjj(at)u.washington.edu> for finally getting to the bottom of the third button issue.
last modified: 27 mar 02