User Tools

Site Tools


doc:appunti:linux:acer_travelmate_312t:review

Pagina NON COMPLETA

In trasferimento da http://www.rigacci.org/comp/312T/

Linux on the Acer TravelMate 312T

20 Sep 2000 - 25 Feb 2005
Niccolo Rigacci (niccolo@rigacci.org)

Absolutely NO WARRANTY, use this document at your own risk!
Any comment, correction, spelling or suggestion is welcome.

Overview

The configuration I used

  • Acer TravelMate 312T (Italian)
  • Processor: Intel Pentium MMX 233 MHz
  • RAM: 32 Mb
  • Hard Disk: IBM-DKLA-23240, 3102MB w/460kB Cache, CHS=788/128/63
  • Display: LCD 800×600, 65k color TFT
  • Display adapter: NeoMagic MagicGraph 128ZV+ (NM2097), 1152k video RAM
  • CD-ROM: boundled PCMCIA Pocket CD-II
  • Pointer: integrated touchpad, PS/2 compatible
  • Sound: integrated Yamaha OPL3-SAx Sound System
  • PCMCIA: 02Micro OZ6832/6833 CardBus Controller
  • Modem: integrated LT Win Modem
  • Modem: PCMCIA Modem Fax 33.6
  • Network: PCMCIA Ethernet adapter IC-CARD+ (NE2000 compatible)
  • Operating System: Debian GNU/Linux 2.1 upgraded to kernel 2.2.13 PCMCIA Card Services 3.1.3

Some generic consideration about the notebook. It is a lilliput notebook: 23.5 x 18.5 x 4 cm, but the display (17 x 13 cm) is very good. The keyboard is not the better you can hope, the keys are 15.5 mm wide and the excursion is very little. It is more a keyboard for an hand-held than for a notebook. My previous portable was a Compaq Aero, it was a bit bigger (26 x 19 x 4 cm), but its keyboard was really better, with true 17.5 mm keys.

Pro

  • Extremely portable
  • Good display
  • Good performance
  • True PC (not a Windows CE obscenity)
  • Linux support quite complete

Con

  • Integrated modem is an half-modem
  • Poor keyboard
  • Extra stuff to carry if you need floppy or CD-ROM
  • Windows preinstalled, destructive Recovery-CD

Installing Linux and Windows 98

If you want Windows 98 and Linux together on the notebook, I think the best way is using Fips to reduce the Windows partition and make room for the Linux ones. I used Fips version 1.5 with FAT32 support.

It is also feasible to destructively repartition the disk, but reinstalling Windows is a little tricky. In fact you CAN'T use the Recovery CD coming with the notebook for installing Windows on a partitioned disk: the utility blindly and dumbly restore the disk in one large Windows partition, destroying any scheme you created.

On the Recovery CD there are also the plain Windows 98 installation files, so you can go through the standard Windows setup process, but finding and installing drivers for all the integrated peripherials require several efforts.

If you want the hibernation function to work, you have to know that it doesn't work in the default “hibernate to file” manner if the disk is splitted in several partitions. You must to use the “hibernate to partition” option. In brief:

  • Reduce the Windows partition with Fips
  • Create the hibernation partition with PHDISK
  • Install Linux creating the Linux Native and Linux Swap partition.

See the Advanced Power Management section of this document for more details and read carefully Fips documentation.

For Linux installation, follow your distribution's guidelines. For Debian GNU/Linux 2.1 I think the best way is to copy files from debian/dists/slink/main/disks-i386/current/ directory into an Windows directory, restart in MS-DOS mode and launch INSTALL.BAT.

Configuring Linux

Kernel 2.0.x

I used kernel 2.0.34 at the first, but there are some drawaback whit this version. External CD-ROM is supported only after patching the kernel (see below). Sound is not supported. PCMCIA does not work after a warm reboot from Windows 98 because it is “unable to map card memory!”. This was my /usr/src/linux/.config file. Only a note: when I enabled the CONFIG_APM_CPU_IDLE=y I got some keyboard hang running X-Window, so I disabled it.

Kernel 2.2.x

I strongly suggest you to upgrade to kernel 2.2.12 or newer. I think it's a very good kernel: sound is supported for the Yamaha chip, PCMCIA package 3.1.3 works well on it, no patch is required to use the external CD-ROM, no problem initializing PCMCIA after a warm reboot from Windows. Here it is my /usr/src/linux/.config file for kernel 2.2.13. With Debian GNU/Linux 2.1 some additional steps are required when upgrading to kernel 2.2.x, see your distribution notes on using this branch of kernels.

Only a problem is unsolved: Linux is unable to initialize the sound card after a warm reboot from Windows 98. Isapnp seems to configure it well, sound modules load fine, but no audio is played and I get the message “IRQ/DRQ config error”. There is no IRQ/DRQ problem, simply Windows 98 disable the sound card at shutdown in a manner that Linux is unable to reinitialize it.

Plug and Play support with isapnp

I use isapnptool 1.16 to configure the resources used by the sound card and the internal modem. Isapnp is needed to initialize the hardware, otherwise it does not work. I just run “isapnp /etc/isapnp.conf” at boot time. Here it is my /etc/isapnp.conf. Note that I don't initialize the internal Win Modem, so some resources remains free for other peripherials.

PCMCIA support

I downloaded and installed the pcmcia-cs-3.1.3.tar.gz package, this new version provides better support for 02Micro PCMCIA controller and support for kernels 2.2.x. The included PCMCIA-HOWTO is a very comprehensive reading.

Follow the instructions in the howto: you have to “make config”, “make all” and “make install”. If you change your kernel, redo the procedure. After that, all worked for me, but I still made some changes in /etc/init.d/pcmcia script and in /etc/pcmcia/config.opts, just to avoid potential resources conflicts. In the first I specified

PCIC_OPTS="irq_list=10,11,15 poll_interval=150"

This tells to card service what interrupts to use and that it have to run in poll mode, instead of using an IRQ for status change monitoring. In the other file I specified what I/O ports and memory resources to use and what interrupts don't use (the last is redundant, I know!) for allocating to PCMCIA cards. Have a look at the files for comments.

To configure some PCMCIA cards, editing /etc/pcmcia/ scripts is needed, but this is not specific to Acter TravelMate. For the PCMCIA CD-ROM boundled with the notebook, a little tricky solution is needed if you use kernel prior to 2.2.12 instead. See the specific chapter in this review.

Floppy disk drive support

The external floppy drive works under Linux, you can use mtools or mount it. I think the better procedure is:

  1. compile the kernel with floppy support as a module (CONFIG_BLK_DEV_FD=m)
  2. do not load the floppy module at boot
  3. hot-plug the floppy to the notebook when needed
  4. “modprobe floppy”
  5. “mount /dev/fd0 /floppy” (or use any mtool command)
  6. “umount /floppy”
  7. “rmmod floppy”
  8. now you can hot-unplug the floppy from the notebook

PCMCIA Pocket CD-II support

With kernel 2.2.12 or newer, external CD-ROM is supported without problem. Simply compile the kernel with CONFIG_BLK_DEV_IDECD=y and install the pcmcia-cs package. If you use an older kernel you can fix it with the patch discussed below. This patch is now included in the official kernel.

What I'm writing below is applicable to kernel 2.0.34. In oreder to make the CD working under Linux, a little kernel hacking is needed. It seems that there is a problem caused by the drive which take too much time to respond, so with the standard kernel you get several errors when you try to mount the drive, like those:

Feb 22 10:36:43 chios kernel: hdc: status error: status=0x08
Feb 22 10:36:43 chios kernel: hdc: drive not ready for command
Feb 22 10:36:43 chios kernel: hdc: ATAPI reset complete
Feb 22 10:36:43 chios kernel: hdc: status error: status=0x00
Feb 22 10:36:43 chios kernel: hdc: ATAPI reset complete
Feb 22 10:36:43 chios kernel: hdc: status error: status=0x00
Feb 22 10:36:43 chios kernel: end_request: I/O error, dev 16:00, sector 0

A workaround was proposed (31 Dec 1998) by Matthew Faupel (Matthew.Faupel@citrix.com) and it is posted at the Linux PCMCIA driver Hyper News system. I propose a little revised one:

  1. You must hack and recompile your kernel: edit ide.c file (usually in /usr/src/linux/drivers/block/ide.c) and change the ide_wait_stat() function. Here it is the “diff”, as you can see ten attempts are made instead of just one.
    1413,1415c1413,1418
    < 	udelay(1);	/* allow status to settle, then read it again */
    < 	if (OK_STAT((stat = GET_STAT()), good, bad))
    < 		return 0;
    ---
    > 	/* allow status to settle, then read it again */
    > 	{ int i;
    > 	for (i = 0; i < 10;  i++) {
    > 		udelay(1);
    > 		if (OK_STAT((stat = GET_STAT()), good, bad)) return 0;
    > 	}}
  2. Recompile the kernel with IDE/ATAPI CDROM support, support for removable IDE interfaces and for iso9660 file system: (CONFIG_BLK_DEV_IDECD=y, CONFIG_BLK_DEV_IDE_PCMCIA=y, CONFIG_ISO9660_FS=y).If needed recompile the PCMCIA modules too.
  3. Now, if you have properly installed the new kernel and the PCMCIA package, when you insert the PCMCIA card you see the following messages on the console:
    hdc: CD-ROM CDR_U240, ATAPI CDROM drive
    ide1 at 0x300-0x307,0x30e on irq 10
    hdc: media changed
    hdc : tray open or drive not ready
    hdc : tray open or drive not ready
    hdc : tray open or drive not ready
    ...

Ignore the error messages: we should increase some other timeout somewhere in the kernel source. The good thing is that now the device /dev/hdc is ready to mount -t iso9660 /dev/hdc /cdrom

Remember to cardctl eject the PCMCIA card before actually removing it, as the PCMCIA-HOWTO says.

This is a brief explanation of PCMCIA CD-ROM on the Acer TravelMate, refer to the PCMCIA-HOWTO and to your Linux distribution for any other detail. Note also that Debian 2.0 has a little bug in the pcmcia-cs package: the /sbin/ide_info binary is not installed with the package, but the /etc/pcmcia/fixed script refers to it. So auto mounting of PCMCIA IDE device fails.

PCMCIA Ethernet adapter

I have two NE2000 compatible PCMCIA Ethernet adapter, the standard installation of Debian GNU/Linux properly recognize the cards as soon as I inserted it. Auto-configuring the inserted card require editing /etc/pcmcia/network.opts script. For any help read the PCMCIA-HOWTO.

X-Window

The video card integrated in the TravelMate 312T is a NeoMagic MagicGraph 128ZV+, with 1.1 Mb of RAM capable of 65k colors at 800×600. Fortunately XFree86 supports this card, beginning from version 3.3.3.1.

Unfortunately my Linux distribution (Debian 2.1) installs XFree 3.3.2.3.

I'm too lazy to get the xfree sources and recompile them. I'm also so paranoid that I don't want to install xfree binaries which are not packaged in a .deb file. I adopted the following quick and dirty solution.

  • Installed xfree 3.3.2.3 for a standard VGA 16 colors.
  • Unpacked the new XF86_SVGA server in /usr/bin/X11/. I got the compiled binary directly from xfree ftp site. Note that my system is running the new glibc, if you are using the old libc5, you must get the appropriate file.
  • Configured my distribution so that the default server is XF86_SVGA, and not XF86_VGA16. With Debian 2.0 it is the matter of changing the first line of /etc/X11/Xserver. On other system it my require to change a symbolic link.
  • Wrote the /etc/X11/XF86Config configuration file. The relevant sections are Monitor, Device and Screen. Get the file and have a look to it. Note that I use an Italian keyboard!

External monitor

I had to use intern_disp and extern_disp options in XF86Config to select the output device. When only external monitor is selected, the graphic chip selects an higher refresh rate, like in Windows. Those are the values reported by my Sony Multiscan 200sx:

Frequencies Output Resolution
37.9 kHz/60 Hz both 800×600 and 640×480
53.4 kHz/84 Hz external 800×600
43.3 kHz/85 Hz external 640×480

See the hotkeys section about Fn+F5.

To switch virtual console when in X, use Ctrl+Alt+F2 or Ctrl+Alt+F3 only (once in character mode, you can use Alt+Fx). Other Ctrl+Alt+Fx combinations are interpreted by the BIOS as Fn+Fx. So Ctrl+Alt+F4 does not bring virtual console #4, but start hibernation!

Integrated pseudo modem

The integrated modem is a WinModem, not supported directly by MS-DOS nor Linux. To save little money, Acer gave us a big hassle. What a shame!

Recently I was informed that there is a piece of software which can do the modem work. It is a kernel module produced - I think - by Lucent Technology. They released only the binary compiled against a 2.2.12 kernel. Not having the sources, you can experience problems with newer kernels. However I tested it successfully with 2.2.13.

The zip archive linux568.zip contains an installation script, but I suggest a do-it-yourself approach:

  • Create the special character device /dev/ttyS14 (major 62, minor 78).
  • Change owner, group and mode of this device as per your Linux distribution policy. With Debian it's advised to make it owned by root.dialout, mode 660.
  • Edit the /etc/isapnp.conf file and uncomment the lines about the modem. Run isapnpn to activate the modem. This may cause some problem because you need a free IRQ: may be you have to change PCMCIA configuration or disable it.
  • Load the module (with -f if your kernel is not 2.2.12).
  • Start minicom, set it to use /dev/ttyS14 and test the modem. Note: the speaker does not work, but the modem dials and CONNECTs.

In brief:

unzip linux568.zip
mknod /dev/ttyS14 c 62 78
chown root.dialout /dev/ttyS14
chmod 660 /dev/ttyS14
vi /etc/isapnp.conf
...
isapnpn /etc/isapnp.conf
insmod -f ./ltmodem.o

WinModems miss the internal processor, so a lot of time-sensitive work must be performed by the main CPU. This is very noticeable, specially if you do other work while using the modem. Just to get the idea, issue some AT&F commands in minicom, and see the CPU usage going above 1! Beside that the module itself is darned big: about 500 kb (bigger than the Linux kernel I use!).

I don't like to run closed-source software under Linux. For this and all of the above reasons, I still prefer to use my old 33.6 PCMCIA modem…

Integrated sound card

Sound support for this sound card is in kernel 2.2.x. With kernel 2.2.13 I was able to play midi and digital audio, but something still does not work: I'm unable to record from the microphone. Recently I received a mail from a Toshiba Satellite user, which reports that recording with OPL3-SAx sound card works using the Alsa audio driver. I haven't tested it.

The Acer TarvelMate 312 has an Yamaha OPL3-SAx (YMF719) chipset which implement the following devices:

  • OPL3 FM synthesizer
  • Soundblaster Pro
  • Microsoft/Windows Sound System
  • MPU401 MIDI interface

Soundblaster Pro and MSS are both digital audio devices, but MSS has better capabilities than Soundblaster Pro (which handles only 8 bit audio), so we will use MSS sound driver in Linux.

The FM synthesizer is a digital instrument which generates “synthetic” notes. It is mainly used via the MPU401 MIDI interface, thus simulating a complete MIDI synthesizer.

Configuring the PnP

The card is an ISA Plug and Play device, so some configuration is needed. I done that via isapnp, an utility which allows you to configure all the ISA PnP devices in the system. Isapnp sets the I/O, IRQ, DMA and memory resources used by those PnP devices.

In our notebook there are two PnP devices: the sound card and the (sic!) Win Modem. The resources I used was:

  • I/O 0x220 - Soundblaster Pro
  • I/O 0x530 - Microsoft/Windows Sound System
  • I/O 0x388 - OPL3 FM synthesizer
  • I/O 0x330 - MPU401 MIDI interface
  • I/O 0x370 - Port used for sound card control
  • IRQ 5 - A single interrupt used for MSS, Sb Pro, MPU401
  • DMA 0 - First DMA channel for MSS or Soundblaster Pro
  • DMA 7 - Second DMA channel for MSS
  • I/O 0x3e8 - Win Modem I/O base address (I disabled it)
  • IRQ 10 - Win Modem IRQ (disabled for me)
  • I/O 0x100 - Win Modem control? (disabled too)

To set the resources I start isapnp /etc/isapnp.conf at boot time. Here it is my isapnp.conf file.

This means also that the sound drivers must be compiled as modules and loaded after isapnp done its work.

Building the kernel and the modules

I tested it with kernel 2.2.13. Basically you need to respond at the following questions (note that Soundblaster Pro is not activated, because MSS does the same better):

CONFIG_SOUND=m

Sound card support, of course! Compiled as a module because I want to start it after isapnp initialized the hardware.

CONFIG_SOUND_OSS=m

The driver for our sound card is included in the Open Sound System suite.

CONFIG_SOUND_ADLIB=m

Generic OPL2/OPL3 FM synthesizer support. This generates the ad1848.o module, needed by the specific opl3sa2.o module.

CONFIG_SOUND_MPU401=m

MPU-401 support. This generates the mpu401.o module, needed to have a midi device (used by playmidi and others).

CONFIG_SOUND_MSS=m

This option is required by the specific driver of our card, it provides services for the audio device (/dev/audio) and the mixer (used by aumix and other programs).

CONFIG_SOUND_OPL3SA2=m

This is the specific driver of our sound card, it generates the opl3sa2.o module.

CONFIG_SOUND_SOFTOSS=m

This module provides a synthesizer device based on soft wavetable. A device capable of playing midi files where notes are NOT generated by FM synthesis, but generated using digital samples of true instruments. This is done in real time using a lot of CPU power. Documentation suggests to avoid it if you have less than a Pentium 133 and 16 Mb RAM. You also need to provide the instrument samples. See /usr/src/linux/Documentation/sound/README.OSS. The module generated is softoss2.o, the synth device provided is compatible with Gravis Ultrasound, so playmidi -g should work.

CONFIG_SOUND_YM3812=m

FM synthesizer (YM3812/OPL-3) support. This generates the opl3.o module, needed to have the FM synthesizer device.

Testing everything

After recompiling the kernel and installing it along with its modules you can load the sound modules with

insmod soundcore
insomd sound
insmod mpu401
insmod ad1848
insmod opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=5 dma=0 dma2=7
insmod opl3 io=0x388
insmod softoss2

You can test if everything gone well by cat /dev/sndstat. The output should reports an audio device “MS Sound System”, two synth devices “Yamaha OPL3” and “SoftOSS”, a midi device “MPU-401”, two mixers: OPL3-SAx and MSS (programs will refer to the last one).

Before testing the audio, run a program like aumix to set the proper master and devices volume. To record and playback digital audio you need programs like bplay and brec, which handle RAW, WAV and other formats. You should also be able to use /dev/audio directly with commands like:

dd bs=8k count=4 < /dev/audio > sample.au
cat sample.au > /dev/audio

Till now I was able only to playback audio. I don't know way recording from the microphone doesn't work. If it works for you, please drop a mail!

To play a midi file you must have a program like playmidi, run “playmidi sample.mid”. This plays the file using OPL3 FM synthesis. If, instead, you want to use the software wavetable provided by SoftOSS, put the MIDIA instrument samples in a directory called /dos/ultrasnd/midi/ and use “playmidi -g sample.mid”. The sound provided by SoftOSS is a lot better than those provided by FM synthesis, but I think that the SoftOSS module doesn't map MIDI notes to the proper instruments, so you ear good notes, but played with the wrong instrument.

MIDIA sound samples are downloadable from ftp://archive.cs.umbc.edu/pub/midia/instruments.tar.gz, they are about 8 Mb.

For people with kernel 2.0.x not much concerned with free software, there is a thing called Open Sound System, which is NOT free software. The OSS/Linux 3.9.2 package supports Yamaha OPL3-SAx. I have tested it: digital audio works the same as the free version: unable to record from the microphone too. The software wavetable is better instead, because it maps the MIDI file to the instruments in a better way.

Advanced Power Management

I compiled the kernel 2.2.13 with CONFIG_APM=y. Till now I don't have observed any strange behaviour, and cat /proc/apm display all the info I need. I just didn't enable CONFIG_APM_CPU_IDLE, I experienced some keyboard lock with this option. Again see my /usr/src/linux/.config file for all the options.

Standby

The standby function (Fn+F3) works in Linux, time is properly restored after wakeup.

Hibernation

The hibernation function (Fn+F4) did not work in my system after I repartitioned the disk for Windows and Linux. I suppose that the default hibernate to file method works only with a single partition. Fortunately the hibernate to partition scheme works, with Windows and Linux.

The PHDISK utility is used to create the hibernation file or partition. It is installed in C:\Windows\Command\ or you can find it in the Recovery CD under \Drivers\Win98\Phdisk\.

WARNING: I THINK THAT THE UTILITY IS BUGGY, IT DESTROYED MY PARTITION TABLE LOOSING ALL MY DATA WITHOUT A WARNING!

It seems that “PHDISK /CREATE /PARTITION” uses the 4th entry of the partition table (/dev/hda4), allocating cylinders at the end of the disk, but not beyond the 1024 cylinder barrier. When I first executed the utility, I had Windows on hda2, Linux on hda3 and swap on hda4: Phdisk SIMPLY ERASED MY PARTITION TABLE, LOOSING ALL MY DATA! My be the problem was that the 4th partition was already used, and Phdisk can't manage that.

In the second, successful try I did the following:

  1. Installed a fresh system from the Recovery CD.
  2. PHDISK /DELETE /FILE (removed hibernation file).
  3. Used Fips to shrink the Windows partition to 1.5 Gb, creating a new one.
  4. Used Windows fdisk to remove the new, empty partition.
  5. PHDISK /CREATE /PARTITION (it creates /dev/hda4 of 32 Mb).
  6. Installed Linux in /dev/hda3 (1.5 Gb) with swap in /dev/hda2 (32 Mb).

Hibernation on Large Disks (2005-02-25)

The PHDISK utility will use the 4th primary partition marking it of type 0xA0 (IBM Thinkpad hibernation). The partition size will be equal to the RAM size plus some overhead, and it will accomodate at the end of the disk, but not after the 1024 cylinders barrier.

This means that with large disks (with more than 1024 cylinders) you have to accomodate partitions not in disk order and you have to keep the hybernation partition in the middle of the disk. Fortunately with the parted utility, it is possible to resize Linux or Windows partitions to accomodate the hybernation one.

As an example, this is the partition layout for my new 10Gb disk, notice that I have entrely removed Windows, that I have two Linux installations and that I expanded the RAM to 144 Mb:

Disk /dev/hda: 10.0 GB, 10056130560 bytes
240 heads, 63 sectors/track, 1299 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1        1003     7582648+  83  Linux
/dev/hda3            1024        1299     2086560    5  Extended
/dev/hda4            1004        1023      151200   a0  IBM Thinkpad hibernation
/dev/hda5            1024        1057      257008+  82  Linux swap
/dev/hda6            1058        1299     1829488+  83  Linux

Shutdown

Compiling kernel with the option CONFIG_APM_POWER_OFF=y enables automatic power off when halt command is executed.

Hot Keys

Hot key Purpose Works on Linux Note
Fn+F1 Displays the hot key list and help Yes
Fn+F2 Accesses the notebook setup utility No Of course: under Windows it starts a Windows application from a Windows directory, under Linux it can't.
Fn+F3 Puts the computer in Stanby mode Yes The Ethernet PC Card and the system time are properly restored.
Fn+F4 Puts the computer in Hibernation mode Yes The “hibernate to partition” must be activated. If the default “hibernate to file” scheme is choosen, it works only from Windows, not from Linux. See the APM section. The Ethernet PC Card and the system time are properly restored.
Fn+F5 Switches display output: internal, external or both Partially It works in text mode only. Under X-Window the display is selected within XF86Config file instead. See the X section.
Fn+F6 Turns the internal speaker on and off Yes
Fn+F7 Decreases the speaker's volume level Yes
Fn+F8 Increases the speaker's volume level Yes
Fn+F9 Decreases the screen brightness Yes
Fn+F10 Increases the screen brightness Yes
Fn+F11 Decreases the screen contrast N/A Not applicable to TFT display.
Fn+F12 Increases the screen contrast N/A Not applicable to TFT display.
Fn+T Turns the internal touchpad on and off Yes
Fn+D Turns the display backlight off to save power Yes

Hardware Upgrades

After six years I'm still using this little notebook. Just for reference I can confirm that it is possible to fit a 10 Gb disk and a 128 Mb RAM module:

  • Hard Disk 10 Gb IBM TravelStar 20GN 2.5 inch (IBM DJSA-210)
  • 128 Mb RAM SO-DIMM PC100 144 pin CL2, (Kingston KVR100X64SC2/128)

Useful references

doc/appunti/linux/acer_travelmate_312t/review.txt · Last modified: 2005/10/19 22:08 by 127.0.0.1